UNDO表空間損壞,爆滿,ORA-600[4194]/[4193]錯誤解決

wzhalal發表於2013-09-30
模擬手工刪除UNDO表空間 在ORADATA 中把UNDOTBS01.DBF 刪除

模擬啟庫

SQL> STARUP;

*
第 1 行出現錯誤:
ORA-01157: 無法標識/鎖定資料檔案 2 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 2: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF'


 
利用系統本身的預設手動管理 MANUAL UNDO 表空間 SYSTEM 啟動庫 

SQL> CREATE PFILE='C:\PFILE20130930.ORA' FROM SPFILE;


SQL> SHUTDOWN IMMEDIATE;


編輯PFILE 檔案 修改

*.undo_management='MANUAL'   
 *.undo_tablespace='SYSTEM'
儲存

SQL> startup  pfile='c:\pfile1.ora'
ORACLE 例程已經啟動。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              83887460 bytes
Database Buffers           79691776 bytes
Redo Buffers                2945024 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 2 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 2: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF'


SQL> show parameter undo;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------------
undo_management                      string      MANUAL
undo_retention                       integer     900
undo_tablespace                      string      system
SQL>
SQL>
SQL> alter database datafile 2 offline;

資料庫已更改。

SQL> alter database open;

資料庫已更改。


SQL> create undo tablespace undotbs02 datafile 'C:\ORACLE\PRODUCT\10.2.0\ORADATA
\ORCL\UNDOTBS02.DBF' size 100M;

表空間已建立。

SQL> alter system set undo_tablespace='undotbs02' scope=spfile;
alter system set undo_tablespace='undotbs02' scope=spfile
*
第 1 行出現錯誤:
ORA-32001: 已請求寫入 SPFILE, 但是在啟動時未指定 SPFILE

--因為我們是利用PFILE啟動的 這個時候我們應該去修改PFILE 檔案,再重新啟庫

*.undo_management='AUTO'   
*.undo_tablespace='UNDOTBS02'

SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup  pfile='c:\pfile1.ora'
ORACLE 例程已經啟動。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              83887460 bytes
Database Buffers           79691776 bytes
Redo Buffers                2945024 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL>
SQL>
SQL> show parameter undo;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS02
SQL>create spfile from pfile


檔案已建立。


這裡我們UNDO表空間恢復完畢

此方法還可以解決啟動的時候出現ORA-600[4194]/[4193]錯誤
Tue Feb 14 09:34:11 2012
Errors in file d:\oracle\product\10.2.0\admin\interlib\bdump\interlib_smon_2784.trc:
ORA-01595: error freeing extent (2) of rollback segment (3))
ORA-00607: Internal error occurred while making a change to a data block
ORA-00600: internal error code, arguments: [4194], [6], [30], [], [], [], [], []
如果出現極端的情況可能需要做如下處理:
1.使用_offline_rollback_segments和_corrupted_rollback_segments遮蔽掉有問題的undo segment
2.繼續可能出現ora-600[2662],需要推進scn

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28894640/viewspace-773661/,如需轉載,請註明出處,否則將追究法律責任。

相關文章