OracleORA-03113 ORA-600 [4193]故障處理
背景
有臺伺服器由於掉電導致資料庫無法開啟,處理過程如下。
1.故障現象
(1)啟動現象
SQL> startup; ORA-03113 end-of-file on communication channel SQL> startup nomount; # 可以nomount成功 SQL> alter database mount; ORA-03113 end-of-file on communication channel
# 從上面現象根據資料庫啟動過程知道,基本定位在控制檔案有問題。
(2)alert日誌現象
Wed Jul 29 10:17:07 2020 ALTER DATABASE MOUNT USER (ospid: 3784): terminating the instance System state dump requested by (instance=1, osid=3784), summary=[abnormal instance termination]. System State dumped to trace file E:\APP\ADMINISTRATOR\diag\rdbms\dzwl\dzwl\trace\dzwl_diag_2708.trc Dumping diagnostic data in directory=[cdmp_20200729101712], requested by (instance=1, osid=3784), summary=[abnormal instance termination]. Instance terminated by USER, pid = 3784
2.故障分析
# 出了問題,透過詢問現場人員,伺服器有掉電、重啟等操作,trace檔案大多沒有明確資訊,
# alert日誌中前一天有mmon程式的trm追蹤檔案的metadata後設資料由於掉電損壞的記錄,
# 但是跟此次故障無關,但是也可以看出確實由於掉電有檔案損壞,緊接著使用10046 trace啟動過程,
# 果然發現控制檔案內容file header記錄的seq號與推測為控制檔案block header記錄的bhcsq不一致。
# 排查步驟:
10046追蹤
PARSING IN CURSOR #79065416 len=20 dep=0 uid=0 oct=35 lid=0 tim=8397179226 hv=1913505115 ad='7ff8f1ab3f40' sqlid='fr02x8dt0vjav' alter database mount END OF STMT ... WAIT #79065416: nam='control file sequential read' ela= 147 file#=0 block#=16 blocks=1 obj#=-1 tim=8401282794 Error: kccpb_sanity_check_2 Control file sequence number mismatch! fhcsq: 3714 bhcsq: 3717 cfn 0 ...
3.故障解決
(1)嘗試有沒有好的控制檔案
由於配製了閃回去,使用閃回區控制檔案與資料檔案目錄控制檔案依次嘗試是否有完好的控制檔案,發現控制檔案均有問題。
(2)沒有備份,只能重建控制檔案
編輯建立控制檔案語句:
CREATE CONTROLFILE REUSE DATABASE "DZWL" NORESETLOGS NOARCHIVELOG MAXLOGFILES 16 MAXDATAFILES 100 MAXINSTANCES 2 MAXLOGHISTORY 453 LOGFILE GROUP 1'E:\app\Administrator\oradata\DZWL\REDO01.LOG' SIZE 50M, GROUP 2'E:\app\Administrator\oradata\DZWL\REDO02.LOG' SIZE 50M, GROUP 3'E:\app\Administrator\oradata\DZWL\REDO03.LOG' SIZE 50M DATAFILE 'E:\app\Administrator\oradata\DZWL\DATASYN01.DBF', 'E:\app\Administrator\oradata\DZWL\DZWL.DBF', 'E:\app\Administrator\oradata\DZWL\DZWL2019A.DBF', 'E:\app\Administrator\oradata\DZWL\DZWL2019B.DBF', 'E:\app\Administrator\oradata\DZWL\DZWL2020A.DBF', 'E:\app\Administrator\oradata\DZWL\DZWL2020B.DBF', 'E:\app\Administrator\oradata\DZWL\DZWL2021A_01.DBF', 'E:\app\Administrator\oradata\DZWL\DZWL2021B_01.DBF', 'E:\app\Administrator\oradata\DZWL\EXAMPLE01.DBF', 'E:\app\Administrator\oradata\DZWL\MT01.DBF', 'E:\app\Administrator\oradata\DZWL\SYSAUX01.DBF', 'E:\app\Administrator\oradata\DZWL\SYSTEM01.DBF', 'E:\app\Administrator\oradata\DZWL\UNDOTBS01.DBF', 'E:\app\Administrator\oradata\DZWL\USERS01.DBF' CHARACTER SET ZHS16GBK;
4.正常mount,open再次報錯ORA-600 [4193]
資料庫可以正常mount,open階段,報錯ORA-600 [4193],undo表空間有問題。
透過如下Mos文件解決:
ORA-600 [4193]錯誤解決方案
此解決方法適用於Version 9.2.0.1 to 11.2.0.3 [Release 9.2 to 11.2],沒有平臺限制。
原因:
1, 可能是同一個UNDO塊用於2個不同事務所引起的內部錯誤。
2, ORA-600 [4193] / ORA-600 [4194] for new transactions
3, ORA-600 [4137] for a transaction rollback
解決方案:
建立一個新的UNDO表空間,並且檢查段是否有未回滾。
1.建立一個pfile檔案
create pfile='E:\pfile.txt' from spfile;
windows平臺預設是在database下,linux是在dbs下
2.關閉例項
shutdown immediate;
3.編輯pfile檔案加入引數
undo_management = manual event = '10513 trace name context forever, level 2' # 將禁止smon程式執行事務回滾操作,以便順利開啟資料庫,跳過回滾步驟
4.用pfile啟動資料庫
startup restrict pfile=<initsid.ora>;
5.檢查是否所有的UNDO段都是offline狀態,system段必須線上
select tablespace_name,status, segment_name from dba_rollback_segs where status != 'OFFLINE';
6.建立一個新的UNDO表空間
create undo tablespace UNDOTBS2 datafile ‘D:\oradata\undo02’ size 2000M;
7.刪除舊的UNDO表空間
drop tablespace UNDOTBS1 including contents and datafiles;
8.關閉例項
shutdown immediate
9.啟動到mount狀態
startup mount
10.修改引數
alter system set undo_tablespace =’UNDOTBS2’ scope=spfile;
11.關閉例項
shutdown immediate
12.正常啟動資料庫
startup
此文件還適用 ORA-600 4194 4197
(6)總結
比較幸運,undo中沒有事務,重新建立undo之後,並沒有報錯內部不一致,如果undo中有未提交事務,需要回滾,則還需要
繼續特殊處理,才可以正常。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31439444/viewspace-2708588/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【故障處理】ORA-600:[13013],[5001]故障處理
- ORA-600 [2662]故障處理
- 一次ORA-600故障的處理
- 【ERROR】儲存鏈路問題造成oracle錯誤,ora-600[4193] 問題處理ErrorOracle
- 模擬一則ORA-600 [4194][][]故障並處理
- Oracle資料庫 ORA-600 [13013]故障處理Oracle資料庫
- ORA-600 [12700]故障處理一則(線上重建損壞的索引)索引
- 【故障處理】一次RAC故障處理過程
- MongoDB故障處理MongoDB
- 故障分析 | Greenplum Segment 故障處理
- GPON網路故障如何處理?GPON網路故障處理流程
- 【故障處理】ORA- 2730*,status 12故障分析與處理
- linux故障處理Linux
- ora-故障處理
- ORA-600 [15160]的處理
- ORA-600[6122]錯誤處理
- 線上故障處理手冊
- MySQL show processlist故障處理MySql
- 微服務的故障處理微服務
- teams登入故障處理
- Oracle更新Opatch故障處理Oracle
- 如何快速處理線上故障
- Mysql故障處理2則MySql
- dataguard故障處理一則
- AIX系統故障處理AI
- 【Linux】 nfs 故障處理LinuxNFS
- 【故障-oracle】ORA-600[KQLINVOBJUSER]OracleOBJ
- 【UNDO】Step by step to resolve ORA-600 4194 4193 4197 on database crashDatabase
- 【故障處理】CRS-1153錯誤處理
- 【故障處理】ORA-19809錯誤處理
- ORA-600 733 問題處理案例分享
- ORA-600[4000]/[4097]錯誤的處理
- undo表空間故障處理
- flash_recovery_area故障處理
- 一次dataguard故障處理
- 分散式事務故障處理分散式
- 【故障處理】ORA-12162 錯誤的處理
- 無備份歸檔的db意外斷電處理-2662和4193