ORA-00600:存儲壞了,修好後報ORA-00600的修復過程

存儲壞了,修好後掛上,庫打不開,處理過程

1,同步控制文件

2,把原來的undo設爲空,創建新的UNDO表空間

經過這兩步,庫就可以開起來了

 

 

斷電後Oracle數據庫就open不了,報了:

ORA-00600: 內部錯誤代碼, 參數: [kcratr_nab_less_than_odr], [1], [44437], [17323], [18486], [

內部錯誤,然後執行以下操作:

 recover database using backup controlfile until cancel;

 ORA-00448: normal completion of background process
Slave exiting with ORA-283 exception

實例起不來,只能強制的將數據庫啓動,設置隱藏參數

在mounted下執行:alter system set "_allow_resetlogs_corruption"=true scope=spfile;

設置好後,alter database open;時,又報了以下錯誤:


ORA-00600: internal error code, arguments: [2662], [3600], [2803761690],
[3600], [2803771391], [12583040], [], [], [], [], [], []

結合以前處理過的600錯誤的經驗,這個2662是scn不一致導致的錯誤,此時只能跳躍的人爲干預將scn提高到一個值,其實

也只能是提高,應該沒辦法降低,在沒有備份的情況下。

以爲我數據庫實例崩潰了,不能打開數據庫,只能到mounted狀態下,所以只能按照以下方式來提升SCN:

通過10015事件,在mount狀態下

alter session set events '10015 trace name adjust_scn level 1';

其中的1是增加1億,沒記錯的話,當然這個不是非常重要。

如果數據庫可能打開的話,那麼按照以下處理:

alter session set events 'IMMEDIATE trace name adjustT_scn level 1';

我記得有一次採用這個方式,提高的scn值很有限,因爲一個是SCN相差非常大,第二是因爲11g時默認不讓你快速提高scn值得,

此時只能:

設置隱含參數_minimum_giga_scn 快速遞增CURRENT SCN。

注:2012年1月後的PSU中包含隱含參數_external_scnrejection_threshold_hours,此時隱含參數和10015事件會失效。

調整好後執行 alter database open resetlogs;

conn ti/ti

ERROR:
ORA-00600: internal error code, arguments: [4193], [], [], [], [], [], [], [],
[], [], [], []

這個是因爲undo表空間壞掉了,處理方式:

alter system set undo_management = manual scope=spfile;
SQL> alter system set undo_tablespace='' scope=spfile;
SQL>shutdown immediate
SQL>startup
SQL>create undo tablespace undotbs2 datafile 'E:\orcl_data\orcl\undotbs2.dbf' size 100M;
----設置undo管理方式爲 ’自動‘
SQL> alter system set undo_management =auto scope=spfile;
----設置undotbs 爲新建的undotbs2
SQL> alter system set undo_tablespace = undotbs2 scope=spfile;
----刪除原來損壞的undo表空間
SQL> drop tablespace UNDOTBS1 including contents and datafiles;
SQL>shutdown immediate
SQL>startup

此時數據庫能打開,就正常了。

此後最好將數據庫備份下,有些壞了的表最好重新做一下,肯定會有併發比較高的表不一致的。
 

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