如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected]
某用户数据库一表空间tablespace在OFFLINE之后出现无法ONLINE的问题,一旦操作alter tablespace ABC online即报错:
alter tablespace abc online; error at line 1: ORA-00600: internal error code, arguments : [6856],[0],[163] 根据600的argument 1 可知该报错应当与发现该表空间上的数据与undo数据之间存在不一致所致。
Ora-600 Base | Functionality | Description |
---|---|---|
6000 | ram/data ram/analyze ram/index |
data, analyze command and index related activity |
这里的undo数据指的是 Deferred Undo Segment;
些DEFERRED ROLLBACK也叫做SAVE Undo segments,具有以下的特性:
- 其存在是为了那些突然OFFLINE掉的表空间上的活跃事务存放UNDO/Rollback回滚数据
- Segment_name数据段的名字为FILE#文件号.Block#块号
- 其SEGMENT_TYPE是DEFERRED ROLLBACK
- 一般自动创建在SYSTEM表空间上
- 属于SYS用户
- 如果OFFLINE掉的表空间重新ONLINE且undo数据已经被应用则会被自动DROP掉
Deferred Undo Segments是特殊用途的回滚段,其中的undo数据不同于undo表空间上的数据结构,以一种简单的顺序日志形式存在。其SEGMENT_NAME为FILE#.Block#,对应其段头segment header的物理位置。
从DBA_SEGMENTS查的话就是SEGMENT_TYPE为DEFERRED ROLLBACK的数据段,一般存在SYSTEM表空间上,且属于SYS用户。 有用户遇到过OFFLINE掉几个表空间后,SYSTEM表空间急速膨胀,最后查出来就是被这些DEFERRED ROLLBACK回滚段占用了空间。
具体可以见 :https://www.askmac.cn/archives/deferred-rollback.html
对于该ORA-00600: internal error code, arguments : [6856],[0],[163] 报错的解决方案是找到其对应的deferred rollback 回滚数据段,并使用例如bbed之类的命令对该deferred rollback segment中的 rollback header做一些处理。
Leave a Reply