一次ORA-600處理
出現這種情況,大多數是因為異常宕機,在啟動的時候報的錯誤。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
(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‘
方法二:跳過損壞的segment
在方法一裏面,我們使用了system segment。 通過第一部分我們了解到,undo segment 有多個,我們可以通過alert log 來查看正在使用的是哪些segment,這些段有可能損壞了。 我們只需要把這些損壞的segment 跳過,先正常啟動DB,在創建新的UNDO 表空間,在切換一下。
(1)修改pfile,添加參數:
*._corrupted_rollback_segments=‘_SYSSMU11$‘,‘_SYSSMU12$‘,‘_SYSSMU13$‘
這些字段的值,我們通過alert log 查看。 也可以通過如下命令查看:
(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種處理方法。
一次ORA-600處理