伺服器斷電重啟導致備份生產環境的恢複目錄庫無法進行啟動,提示Ora-01092常式終止。強行斷開連接 ...
伺服器斷電重啟導致備份生產環境的恢複目錄庫無法進行啟動,提示Ora-01092常式終止。強行斷開連接
查看跟蹤日誌:
Wed Jan 10 08:41:37 2018
Errors in file d:\Oracle\admin\l3bckdb\bdump\l3bckdbSMON.TRC:
ORA-00600: internal error code, arguments: [4193], [1836], [1844], [], [], [], [], []
Wed Jan 10 08:41:39 2018
Errors in file d:\Oracle\admin\l3bckdb\bdump\l3bckdbSNP1.TRC:
ORA-00600: internal error code, arguments: [4193], [1926], [1934], [], [], [], [], []
Recovery of Online Redo Log: Thread 1 Group 3 Seq 15 Reading mem 0
Mem# 0 errs 0: D:\ORACLE\ORADATA\L3BCKDB\REDO01.LOG
Wed Jan 10 08:41:42 2018
Recovery of Online Redo Log: Thread 1 Group 3 Seq 15 Reading mem 0
Mem# 0 errs 0: D:\ORACLE\ORADATA\L3BCKDB\REDO01.LOG
Wed Jan 10 08:41:42 2018
SMON: terminating instance due to error 600
Instance terminated by SMON, pid = 2744
查找相關資料,發現RA-600[4913]錯誤的2個argument的含義, 該ORA-600[4913]屬於內核undo事務模塊
[1836] Undo record seq number
[1844] Redo record seq number
由於UNDO序列和REDO序列不一致引發錯誤。
解決辦法:重建UNDO表空間,步驟如下:
C:/>set nls_lang=american_america.zhs16gbk
C:/>sqlplus "/ as sysdba"
SQL*Plus: Release 8.1.7.0.0 - Production on 星期三 1月 10 11:28:47 2018
(c) Copyright 2000 Oracle Corporation. All rights reserved.
連接到:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
SQL> select file#,name from v$datafile where file#=2;
FILE# NAME
---------- ----------------------------------------
2 D:/ORACLE/ORADATA/BCCHECK/RBS01.DBF
SQL> shutdown immediate
ORA-01109: 資料庫未打開。
已經卸載資料庫。
ORACLE常式已關閉。
將init.ora文件中的ROLLBACK_SEGMENTS初始化參數設置註釋後以Restricted模式MOUNT資料庫。
#rollback_segments = ( RBS0, RBS1, RBS2, RBS3, RBS4, RBS5, RBS6 )
SQL> startup restrict mount
ORACLE常式已啟動。
Total System Global Area 219895052 bytes
Fixed Size 70924 bytes
Variable Size 75116544 bytes
Database Buffers 144629760 bytes
Redo Buffers 77824 bytes
資料庫裝載完畢。
線上drop損壞的rbs數據文件,然後重試打開資料庫
SQL> drop tablespace rbs including contents;
drop tablespace rbs including contents
*
ERROR 在行 1:
ORA-01548: active rollback segment 'RBS0' found, terminate dropping tablespace
-- 報錯ORA-01548,表明有活動回滾段
SQL> select segment_name,tablespace_name,status from dba_rollback_segs;
SEGMENT_NAME TABLESPACE_NAME STATUS
------------------------------ ------------------------------ ----------------
SYSTEM SYSTEM ONLINE
RBS0 RBS NEEDS RECOVERY
RBS1 RBS NEEDS RECOVERY
RBS2 RBS NEEDS RECOVERY
RBS3 RBS NEEDS RECOVERY
RBS4 RBS NEEDS RECOVERY
RBS5 RBS NEEDS RECOVERY
RBS6 RBS NEEDS RECOVERY
已選擇8 行
SQL> shutdown immediate
-- 正常關閉資料庫加入隱含函數_corrupted_rollback_segments,修改參數文件加入隱含參數
_corrupted_rollback_segments=(RBS0,RBS1,RBS2,RBS3,RBS4,RBS5,RBS6)後以restricted模式打開資料庫
SQL> startup restrict
SQL> select segment_name,tablespace_name,status from dba_rollback_segs;
SEGMENT_NAME TABLESPACE_NAME STATUS
------------------------------ ------------------------------ ----------------
SYSTEM SYSTEM ONLINE
RBS0 RBS NEEDS RECOVERY
RBS1 RBS NEEDS RECOVERY
RBS2 RBS NEEDS RECOVERY
RBS3 RBS NEEDS RECOVERY
RBS4 RBS NEEDS RECOVERY
RBS5 RBS NEEDS RECOVERY
RBS6 RBS NEEDS RECOVERY
已選擇 8 行
SQL> drop tablespace rbs including contents;
drop tablespace rbs including contents
*
ERROR 在行 1:
ORA-01548: active rollback segment 'RBS0' found, terminate dropping tablespace
強制刪除所需要的回滾段
刪除包含損壞回滾段表空間後,並開始建立回滾段表空間
查詢回滾段狀態
正常關閉資料庫,並將參數文件中的隱含參數_corrupted_rollback_segments註釋,並將ROLLBACK_SEGMENTS加入所有的回滾段。
正常啟動資料庫