ORA-00600 kcratr_nab_less_than_odr ORA-00600 [4194]
7月1日, 客戶告知我,一個資料庫打不開了,他的描述是控制檔案丟失
登入主機,嘗試啟動, 在告警日誌中出現瞭如下錯誤:
-
Errors in file e:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_7456.trc (incident=26610):
-
ORA-00600: 內部錯誤程式碼, 引數: [kcratr_nab_less_than_odr], [1], [46799], [18672], [19063], [], [], [], [], [], [], []
-
Incident details in: e:\app\administrator\diag\rdbms\orcl\orcl\incident\incdir_26610\orcl_ora_7456_i26610.trc
-
Aborting crash recovery due to error 600
-
Errors in file e:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_7456.trc:
-
ORA-00600: 內部錯誤程式碼, 引數: [kcratr_nab_less_than_odr], [1], [46799], [18672], [19063], [], [], [], [], [], [], []
-
Errors in file e:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_7456.trc:
-
ORA-00600: 內部錯誤程式碼, 引數: [kcratr_nab_less_than_odr], [1], [46799], [18672], [19063], [], [], [], [], [], [], []
此錯誤是說,資料庫需要恢復rba至19063, 但是因為某種原因,只能利用sequence#為46799的redo log恢復至18672, 從而出錯。
解決的方法是重建控制檔案並recover database。
操作之前,最好先備份原來的資料檔案,redo與控制檔案。 首先嚐試了用resetlogs選項重建控制檔案,資料庫不能開啟。最後報錯:
Database Characterset is ZHS16GBK
Errors in file e:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_smon_6528.trc (incident=28964):
ORA-00600: internal error code, arguments: [4194], [], [], [], [], [], [], [], [], [], [], []
Incident details in: e:\app\administrator\diag\rdbms\orcl\orcl\incident\incdir_28964\orcl_smon_6528_i28964.trc
Doing block recovery for file 3 block 174711
Resuming block recovery (PMON) for file 3 block 174711
Block recovery from logseq 46800, block 104 to scn 125738712
Errors in file e:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_8284.trc (incident=29016):
ORA-00600: 內部錯誤程式碼, 引數: [4194], [], [], [], [], [], [], [], [], [], [], []
ORA-00600: 內部錯誤程式碼, 引數: [4194], [], [], [], [], [], [], [], [], [], [], []
ORA-00600: 內部錯誤程式碼, 引數: [4194], [], [], [], [], [], [], [], [], [], [], []
ORA-00600: 內部錯誤程式碼, 引數: [4194], [], [], [], [], [], [], [], [], [], [], []
啟動資料庫至nomount, 執行以下指令碼
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 4672 LOGFILE GROUP 1 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' SIZE 50M BLOCKSIZE 512, GROUP 2 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG' SIZE 50M BLOCKSIZE 512, GROUP 3 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG' SIZE 50M BLOCKSIZE 512 -- STANDBY LOGFILE DATAFILE 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF', 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF', 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF', 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF', 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF', CHARACTER SET ZHS16GBK
並執行recover database, 資料庫可以開啟,但是出現了新的問題, 開啟之後直接拋錯, 例項中止.
Errors in file e:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_6184.trc (incident=30226):
ORA-00600: 內部錯誤程式碼, 引數: [4194], [], [], [], [], [], [], [], [], [], [], []
ORA-01092: ORACLE 例項終止。強制斷開連線
ORA-00600: 內部錯誤程式碼, 引數: [4194], [], [], [], [], [], [], [], [], [], [], []
ORA-00600: 內部錯誤程式碼, 引數: [4194], [], [], [], [], [], [], [], [], [], [], []
ORA-00600: 內部錯誤程式碼, 引數: [4194], [], [], [], [], [], [], [], [], [], [], []
ORA-00600: 內部錯誤程式碼, 引數: [4194], [], [], [], [], [], [], [], [], [], [], []
這裡是資料庫的UNDO段出現了問題,需要通過將UNDO_MANAGEMENT設定為manual, 如下:
*.undo_management='MANUAL'
*.undo_tablespace='UNDOTBS1'
建立pfile, 修改之後,可以開啟資料庫.此時, 資料庫告警日誌中出現壞塊的告警:
Errors in file e:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_mmon_4624.trc (incident=32607):
ORA-00600: internal error code, arguments: [4194], [], [], [], [], [], [], [], [], [], [], []
Incident details in: e:\app\administrator\diag\rdbms\orcl\orcl\incident\incdir_32607\orcl_mmon_4624_i32607.trc
Errors in file e:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_smon_1528.trc (incident=32592):
ORA-01578: ORACLE data block corrupted (file # 2, block # 2)
ORA-01110: data file 2: 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF'
此後將需要的業務資料通過exp匯出, 並重建資料庫, 問題最終解決
Best practice to create a new undo tablespace.
This method includes segment check.
1. Create pfile from spfile to edit
SQL> Create pfile='/tmp/initsid.ora' from spfile;
2. Shutdown the instance
3. set the following parameters in the pfile /tmp/initsid.ora
undo_management = manual
event = '10513 trace name context forever, level 2'
4. SQL>>startup restrict pfile='/tmp/initsid.ora'
5. SQL>select tablespace_name, status, segment_name from dba_rollback_segs where status != 'OFFLINE';
This is critical - we are looking for all undo segments to be offline - System will always be online.
If any are 'PARTLY AVAILABLE' or 'NEEDS RECOVERY' - Please open an issue with Oracle Support or update the current SR. There are many options from this moment and Oracle Support Analyst can offer different solutions for the bad undo segments.
If all offline then continue to the next step
6. Create new undo tablespace - example
SQL>create undo tablespace <new undo tablespace> datafile <datafile> size 2000M;
7. Drop old undo tablespace
SQL>drop tablespace <old undo tablespace> including contents and datafiles;
8. SQL>shutdown immediate;
9 SQL>startup nomount; --> Using your Original spfile
10. Modify the spfile with the new undo tablespace name
SQL> Alter system set undo_tablespace = '<new tablespace created in step 6>' scope=spfile;
11. SQL>shutdown immediate;
12. SQL>startup; --> Using spfile
參考: https://www.cnblogs.com/kerrycode/p/6085447.html (ORA-00600 4194)
kcratr_nab_less_than_odr)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8520577/viewspace-2649286/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20181106]模擬ora-00600[4194]錯誤.txt
- [20181204]模擬ora-00600[4194]錯誤.txt
- ORA-00600 [925]
- ORA-00600[KZSRGPW]
- ORA-00600: [qksdsInitSample:2]
- ORA-00600: [OSDEP_INTERNAL]
- EXP時遭遇ORA-00600 [729]
- ORA-00600 [729], [12284], [space leak],
- [20230108]ORA-00600 and Session Disconnected.txtSession
- ORA-00600 kcrf_resilver_log_1CRF
- ORA-00600: internal error code, arguments: [13011]Error
- [20220106]ora-00600 kokasgi1.txt
- Oracle recover current redo ORA-00600:[4193] (oracle 故障恢復current redo日誌ORA-00600:[4193]報錯)Oracle
- [20230108]ORA-00600 and Session Disconnected 2.txtSession
- ORACLE ONLINE PATCH & ORA-00600[kcbgtcr_13]Oracle
- ORA-00600[kluinit:new add column in directpath 2]UI
- ORA-00600: internal error code, arguments: [qosdExpStatRead: expcnt mismatch], [Error
- ORA-00600: internal error code, arguments: [2131], [9], [8]Error
- [20181204]模擬ora-00600[4193]錯誤.txt
- ORA-00600: internal error code, arguments: [knacpft_ProcessFetchedTxns250]Error
- 案例ORA-00600: internal error code, arguments: [qkaffsindex3], [], [], [], []ErrorIndex
- ORA-00600: internal error code, arguments: [13013], [5001], [267], [8389014]Error
- Oracle索引修復 ,ORA-00600: internal error code, arguments: [6200],Oracle索引Error
- 系統crash掉導致ORA-00600的處理
- [20181105]ORA-00600[4000] 模擬故障(10g).txt
- ora-00600兩個子錯誤733, 6006解決
- 資料庫啟動遭遇ORA-00600: [keltnfy-ldmInit]資料庫
- ORA-00600: 內部錯誤程式碼, 引數: [19004]
- 邏輯STANDBY上的ORA-00600: internal error code, arguments: [krvtadc], [], [], [], [], []Error
- 遭遇ORA-00600: internal error code, arguments: [kcrrrfswda.11], [4], [368], [], [], [], [], []Error
- 一個特殊的ORA-00600: internal error code, arguments: [6302], [20], [], [], [], [], [], []Error
- ORA-00600: internal error code, arguments: [kzsrsea] DataGuard環境的異常Error
- ORA-00600: 內部錯誤程式碼, 引數: [kcbnew_3]
- ORA-00600: 內部錯誤程式碼, 引數: [qcisSetPlsqlCtx:tzi init]SQL
- 如何查詢ORA-07445 ORA-00600錯誤相關資訊
- ORA-00600: 內部錯誤程式碼, 引數: [kcbchg1_14]
- insert變數太多導致例項重啟ORA-00600、ORA-01006變數
- 【BUG】ORA-00600 [17147] ORA-48216 When Querying V$DIAG_ALERT_EXT ViewView