存儲壞了,修好後掛上,庫打不開,處理過程
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
此時數據庫能打開,就正常了。
此後最好將數據庫備份下,有些壞了的表最好重新做一下,肯定會有併發比較高的表不一致的。