Oracle 12C redo異常恢複的案例

來源:互聯網
上載者:User

記錄一次當前redo丟失的情況下ORACLE 12C CDB資料庫恢複的情況,ORACLE 12C redo異常恢複測試—部分pdb未正常open
為了驗證當前redo丟失的情況下ORACLE 12C CDB資料庫恢複的情況,做了一個小實驗,三個會話,分別操作為在root pdb中執行一個delete 不提交;另外一個會話在user pdb中delete記錄不提交;最後一個會話中直接abort資料庫,然後進行資料庫恢複,驗證資料庫是否可以都正常open(所有pdb)
會話1(root pdb中操作)
CDB_CDB$ROOT@SYS> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB                            READ WRITE NO

CDB_CDB$ROOT@SYS> show con_name

CON_NAME
------------------------------
CDB$ROOT

CDB_CDB$ROOT@SYS> create table t_oracleplus as select * from dba_objects;

表已建立。

CDB_CDB$ROOT@SYS> delete from t_oracleplus;

已刪除 91032 行。

CDB_CDB$ROOT@SYS>
會話2(user pdb中操作)
CDB_CDB$ROOT@SYS> show con_name

CON_NAME
------------------------------
PDB

CDB_CDB$ROOT@SYS> drop table t_oracleplus purge;

表已刪除。

CDB_CDB$ROOT@SYS> create table t_oracleplus as select * from dba_objects;

表已建立。

CDB_CDB$ROOT@SYS> delete from t_oracleplus;

已刪除 91144 行。
會話3(直接abort資料庫)
CDB_CDB$ROOT@SYS> shutdown abort;
ORACLE 常式已經關閉。
刪除資料庫聯機日誌
E:\app\oracleplus\oradata\cdb>dir redo*.log
 磁碟機 E 中的卷是 本地磁碟
 卷的序號是 000C-3B41

 E:\app\oracleplus\oradata\cdb 的目錄

2013-08-07  01:41        52,429,312 REDO01.LOG
2013-08-07  01:40        52,429,312 REDO02.LOG
2013-08-07  01:40        52,429,312 REDO03.LOG
2014-03-20  22:47        52,432,896 REDO04.LOG
2014-03-20  22:47        52,432,896 REDO05.LOG
2014-03-20  22:47        52,432,896 REDO06.LOG
               6 個檔案    314,586,624 位元組
               0 個目錄 21,359,374,336 可用位元組

E:\app\oracleplus\oradata\cdb>del redo*.log

E:\app\oracleplus\oradata\cdb>dir redo*.log
 磁碟機 E 中的卷是 本地磁碟
 卷的序號是 000C-3B41

 E:\app\oracleplus\oradata\cdb 的目錄

找不到檔案
1.啟動資料庫報ORA-00313錯誤
idle> startup
ORACLE 常式已經啟動。

Total System Global Area  521936896 bytes
Fixed Size                  2404552 bytes
Variable Size             205524792 bytes
Database Buffers          306184192 bytes
Redo Buffers                7823360 bytes
資料庫裝載完畢。
ORA-00313: 無法開啟日誌組 6 (用於線程 1) 的成員
ORA-00312: 聯機日誌 6 線程 1: 'E:\APP\oracleplus\ORADATA\CDB\REDO06.LOG'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
2.使用_allow_resetlogs_corruption參數嘗試open資料庫
idle> shutdown abort
ORACLE 常式已經關閉。
idle> startup pfile='d:/pfile.txt' mount
ORACLE 常式已經啟動。

Total System Global Area  521936896 bytes
Fixed Size                  2404552 bytes
Variable Size             205524792 bytes
Database Buffers          306184192 bytes
Redo Buffers                7823360 bytes
資料庫裝載完畢。
idle> show parameter resetlogs;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
_allow_resetlogs_corruption          boolean     TRUE
idle> recover database until cancel;
ORA-00279: 更改 12696935641735 (在 03/20/2014 22:38:52 產生) 對於線程 1
是必需的
ORA-00289: 建議:
E:\APP\oracleplus\FAST_RECOVERY_AREA\CDB\ARCHIVELOG\2014_03_20\O1_MF_1_872_9LOZSK9
X_.ARC
ORA-00280: 更改 12696935641735 (用於線程 1) 在序列 #872 中


指定日誌: {=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 將出現如下錯誤
ORA-01194: 檔案 1 需要更多的恢複來保持一致性
ORA-01110: 資料檔案 1: 'E:\APP\oracleplus\ORADATA\CDB\SYSTEM01.DBF'


ORA-01112: 未啟動介質恢複


idle> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出現錯誤:
ORA-00603: ORACLE server session terminated by fatal error
ORA-00600: internal error code, arguments: [2662], [2956], [1012314778],
[2956], [1012314903], [268435600], [], [], [], [], [], []
ORA-00600: internal error code, arguments: [2662], [2956], [1012314777],
[2956], [1012314903], [268435600], [], [], [], [], [], []
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00600: internal error code, arguments: [2662], [2956], [1012314768],
[2956], [1012314903], [268435600], [], [], [], [], [], []
進程 ID: 9268
會話 ID: 92 序號: 3
ora-600[2662]很熟悉,檔案頭的scn小於檔案中某個block的csn,通過bbed等工具修改檔案scn,嘗試啟動資料庫
CDB_CDB$ROOT@SYS> SHUTDOWN ABORT
ORACLE 常式已經關閉。
CDB_CDB$ROOT@SYS> STARTUP
ORACLE 常式已經啟動。

Total System Global Area  521936896 bytes
Fixed Size                  2404552 bytes
Variable Size             205524792 bytes
Database Buffers          306184192 bytes
Redo Buffers                7823360 bytes
資料庫裝載完畢。
資料庫已經開啟。
嘗試open user pdb
CDB_CDB$ROOT@SYS> alter session set container=pdb;

會話已更改。

CDB_CDB$ROOT@SYS> alter database open;
alter database open
*
第 1 行出現錯誤:
ORA-00600: 內部錯誤碼, 參數: [kcvfdb_pdb_set_clean_scn: cleanckpt], [3],[2956], [1012312995], [2956], [1012334778], [2], [], [], [], [], []
查詢mos得到結論:
Bug 16784143 ORA-600 [kcvfdb_pdb_set_clean_scn: cleanckpt] with PDBs
在12.2/12.1.0.2/12.1.0.1.1中修複,後續嘗試打patch,來進一步恢複.

測試結果證明


1.root pdb的open過程和以前版本資料庫無大差異,但是scn推進比較費勁,以前的event和隱含參數方法無效
2.user pdb再是看是因為bug無法open,後續繼續驗證
3.12.1的base 版本可能確實問題很多,生產使用謹慎

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.