程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Ora-00600 4194錯誤的解決方法

Ora-00600 4194錯誤的解決方法

編輯:Oracle數據庫基礎

問題:我的數據庫重新啟動後,出現了Ora-00600 4194錯誤,具體的日志如下:

Sat Jan 21 13:55:21 2006
Errors in file /opt/Oracle/admin/conner
/bdump/conner_smon_17113.trc:
ORA-00600: internal error code, arguments: 
[4194], [43], [46], [], [], [], [], []
Sat Jan 21 13:55:21 2006
Errors in file /opt/Oracle/admin/conner
/udump/conner_ora_17121.trc:
ORA-00600: internal error code, arguments: 
[4194], [45], [44], [], [], [], [], []
請問應該用什麼辦法解決?

答:具體的解決辦法是通過備份來進行恢復,因為Ora-00600 4194錯誤的出現說明UNDO段出現了問題,如果你沒有備份,業可以通過特殊的初始化參數進行強制啟動,下文針對Oracle的隱含參數進行恢復說明(由於你的實際情況可能會有所出入,所以請你進行測試前先行備份)。

◆首先你需要確定當前的回滾段名稱,注釋:(可以從alert文件中獲得)

Sat Jan 21 13:55:21 2006
Undo Segment 11 Onlined
Undo Segment 12 Onlined
Undo Segment 13 Onlined
Successfully onlined Undo Tablespace 16.

◆注意:對應的AUM (auto undo management) 下的回滾段名稱為:

'_SYSSMU11$','_SYSSMU12$','_SYSSMU13$'

◆此時你可以修改init.ora參數文件,使用Oracle隱含參數_corrupted_rollback_segments將回滾段標記為損壞,然後啟動數據庫,Oracle則會跳過對於這些回滾段的相關操作,強制啟動數據庫。

._corrupted_rollback_segments='_SYSSMU11$','_SYSSMU12$','_SYSSMU13$'

◆然後使用init.ora參數文件啟動數據庫:

[Oracle@jumper dbs]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on Sat Jan 21 13:56:47 2006
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
Connected to an idle instance.
SQL> startup pfile=initconner.ora
Oracle instance started.
Total System Global Area   97588504 bytes
Fixed Size                   451864 bytes
Variable Size              33554432 bytes
Database Buffers           62914560 bytes
Redo Buffers                 667648 bytes
Database mounted.
Database opened.

至此數據庫正常Open。

◆注意觀察alert文件所獲得的如下信息:

Sat Jan 21 13:57:03 2006
SMON: enabling tx recovery
SMON: about to recover undo segment 11
SMON: mark undo segment 11 as needs recovery
SMON: about to recover undo segment 12
SMON: mark undo segment 12 as needs recovery
SMON: about to recover undo segment 13
SMON: mark undo segment 13 as needs recovery
Sat Jan 21 13:57:03 2006
Database Characterset is ZHS16GBK
Sat Jan 21 13:57:03 2006
SMON: about to recover undo segment 11
SMON: mark undo segment 11 as needs recovery
SMON: about to recover undo segment 12
SMON: mark undo segment 12 as needs recovery
SMON: about to recover undo segment 13
SMON: mark undo segment 13 as needs recovery
Sat Jan 21 13:57:04 2006
Created Undo Segment _SYSSMU1$
Undo Segment 1 Onlined
Completed: ALTER DATABASE OPEN
aSat Jan 21 14:02:11 2006
SMON: about to recover undo segment 11
SMON: mark undo segment 11 as needs recovery
SMON: about to recover undo segment 12
SMON: mark undo segment 12 as needs recovery
SMON: about to recover undo segment 13
SMON: mark undo segment 13 as needs recovery

◆現在你可以重新創建新的UNDO表空間,刪除出現問題的表空間,修改參數文件,由參數文件生成新的spfile,然後重新啟動數據庫:

SQL> create undo tablespace undotbs1  
2  datafile '/opt/Oracle/oradata/conner/undotbs1.dbf' size 10M;
Tablespace created.
SQL> alter system set undo_tablespace=undotbs1;
System altered.
SQL> drop tablespace undotbs2;
Tablespace dropped.

◆請注意此時的alert文件記錄的:

Sat Jan 21 14:03:29 2006
create undo tablespace undotbs1
datafile '/opt/Oracle/oradata/conner/undotbs1.dbf' size 10M
Sat Jan 21 14:03:29 2006
Created Undo Segment _SYSSMU2$
Created Undo Segment _SYSSMU3$
Created Undo Segment _SYSSMU4$
Created Undo Segment _SYSSMU5$
Created Undo Segment _SYSSMU6$
Created Undo Segment _SYSSMU7$
Created Undo Segment _SYSSMU8$
Created Undo Segment _SYSSMU9$
Created Undo Segment _SYSSMU10$
Created Undo Segment _SYSSMU14$
Starting control autobackup
Control autobackup written to DISK device        
handle '/opt/Oracle/product/9.2.0/dbs/c-3152029224-20060121-00'
Completed: create undo tablespace undotbs1
datafile '/opt/ora
Sat Jan 21 14:03:43 2006
Undo Segment 2 Onlined
Undo Segment 3 Onlined
Undo Segment 4 Onlined
Undo Segment 5 Onlined
Undo Segment 6 Onlined
Undo Segment 7 Onlined
Undo Segment 8 Onlined
Undo Segment 9 Onlined
Undo Segment 10 Onlined
Undo Segment 14 Onlined
Successfully onlined  Undo Tablespace 1.
Undo Segment 1 Offlined
Undo Tablespace 16 successfully switched out.
Sat Jan 21 14:03:43 2006
ALTER SYSTEM SET undo_tablespace='UNDOTBS1' SCOPE=MEMORY;
Sat Jan 21 14:07:18 2006
SMON: about to recover undo segment 11
SMON: mark undo segment 11 as needs recovery
SMON: about to recover undo segment 12
SMON: mark undo segment 12 as needs recovery
SMON: about to recover undo segment 13
SMON: mark undo segment 13 as needs recovery
Sat Jan 21 14:08:06 2006
drop tablespace undotbs2
Sat Jan 21 14:08:07 2006
Starting control autobackup
Control autobackup written to DISK device        
handle '/opt/Oracle/product/9.2.0/dbs/c-3152029224-20060121-01'
Completed: drop tablespace undotbs2

◆請修改參數文件,變更undo表空間,並取消_corrupted_rollback_segments設置:

*.undo_tablespace='UNDOTBS1'

◆然後由參數文件創建spfile文件。

SQL> create spfile from pfile;
File created.
SQL>shutdown immediate;
Database closed.Database dismounted.
Oracle instance shut down.
SQL> startup
Oracle instance started.
Total System Global Area   97588504 bytes
Fixed Size                   451864 bytes
Variable Size              33554432 bytes
Database Buffers           62914560 bytes
Redo Buffers                 667648 bytes
Database mounted.Database opened.

◆然後重起數據庫,觀察alert文件:

Sat Jan 21 14:08:36 2006
Undo Segment 2 Onlined
Undo Segment 3 Onlined
Undo Segment 4 Onlined
Undo Segment 5 Onlined
Undo Segment 6 Onlined
Undo Segment 7 Onlined
Undo Segment 8 Onlined
Undo Segment 9 Onlined
Undo Segment 10 Onlined
Undo Segment 14 Onlined
Successfully onlined Undo Tablespace 1.

◆此時數據庫恢復正常,通常建議立即全庫exp,然後重新建庫,再imp恢復數據庫。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved