ora-16433的處理思路

在給一個生產庫做災難恢復的過程中,recover database報錯
SQL> recover database;
 ORA-00283: recovery session canceled due to errors
 ORA-16433: The database must be opened in read/write mode.
 
該庫無備份無歸檔,意外掉電,所以走到這步必須見招拆招的解決。
於是準備重建控制文件,以noresetlogs拉起數據庫
結果在mount狀態下,backup controlfile to trace也報錯ORA-16433
於是手動創建控制文件
1.archive log list檢查歸檔情況
2.select * from v$nls_parameters檢查字符集情況
3.SQL> select name from v$datafile order by file#;
  SQL> select group#, member from v$logfile;
  SQL> select name, bytes from v$tempfile order by file#;
確認各種文件location.

然後使用以下模版,隨便找個庫trace都可以,關鍵是注意標點符號(尤其是logfile與datafile的最後一行,沒有逗號)
CREATE CONTROLFILE REUSE DATABASE "TEST1" NORESETLOGS NOARCHIVELOG
 MAXLOGFILES 16
 MAXLOGMEMBERS 3
 MAXDATAFILES 100
 MAXINSTANCES 8
 MAXLOGHISTORY 292
LOGFILE
 GROUP 1 '/oradata/test1/redo01.log' SIZE 50M,
 GROUP 2 '/oradata/test1/redo02.log' SIZE 50M,
 GROUP 3 '/oradata/test1/redo03.log' SIZE 50M
DATAFILE
'/oradata/test1/system01.dbf',
'/oradata/test1/undotbs01.dbf',
'/oradata/test1/sysaux01.dbf',
'/oradata/test1/users01.dbf',
'/oradata/test1/cat_tb_1.dbf',
'/oradata/test1/cat02.dbf'
CHARACTER SET ZHS16GBK
;

控制文件成功創建,進入下一流程。

創建文件時標點不清楚會導致
ORA-00600 [kcfccfl_1] or ORA-00600 [kccccfl_1] or ORA-02236 when Creating Control File (文檔 ID 1434813.1)
ORA-01163: SIZE clause indicates string (blocks), but should match header string
Cause: The size specified in bytes in the SIZE clause of the CREATE CONTROLFILE statement does not equate to the number of blocks recorded in the header.
Action: Specify the correct filename and size ( in bytes ).

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