一次ORA-600處理

ORA-00600:internal error code, arguments: [4194], [43], [46], [], [], [], [], []
出現這種情況,大多數是因爲異常宕機,在啓動的時候報的錯誤。DB 不能啓動。

方法一:使用system segment

(1)用spfile 創建pfile,然後修改參數:
#.undo_tablespace='UNDOTBS1'
#
.undo_management='AUTO'
#.undo_tablespace
#
.undo_retention
undo_management='MANUAL'
rollback_segments='SYSTEM'

(2)用修改之後的pfile,重啓DB
SQL> STARTUP pfile='F:/initorcl.ora' ;

(3)刪除原來的表空間,創建新的UNDO 表空間
SQL> drop tablespace undotbs;
SQL> create undo tablespace undotbs1 datafile '/u01/oradata/undotbs1.dbf' size 10M;

(4)關閉數據庫,修改pfile參數,然後用新的pfile創建spfile,在正常啓動數據庫。
.undo_tablespace='UNDOTBS1'
.undo_management='AUTO'
#undo_management='MANUAL'
#rollback_segments='SYSTEM'

方法二:跳過損壞的segment

在方法一里面,我們使用了system segment。 通過第一部分我們瞭解到,undo segment 有多個,我們可以通過alert log 來查看正在使用的是哪些segment,這些段有可能損壞了。 我們只需要把這些損壞的segment 跳過,先正常啓動DB,在創建新的UNDO 表空間,在切換一下。

(1)修改pfile,添加參數:
*._corrupted_rollback_segments='_SYSSMU11$','_SYSSMU12$','_SYSSMU13$'

這些字段的值,我們通過alert log 查看。 也可以通過如下命令查看:
#strings system01.dbf | grep _SYSSMU | cut -d $ -f 1 | sort -u

(2)用修改之後的pfile啓動DB
因爲跳過了哪些損壞的segment,所以DB 可以正常啓動。

(3)創建新的UNDO 表空間,並切換過來

SQL> create undo tablespace undotbs1 datafile '/u01/oradata/undotbs1.dbf' size 10M;
SQL> alter system set undo_tablespace=undotbs1;
SQL> drop tablespace undotbs;

(4)修改pfile,創建spfile,並正常啓動
刪除:
*._corrupted_rollback_segments='_SYSSMU11$','_SYSSMU12$','_SYSSMU13$'

以上就是UNDO 出現故障的2種處理方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章