磁碟損壞造成RMAN備份檔案有壞塊的恢復案例
朋友客戶的資料庫由於磁碟損壞,從儲存級別抽取出了RMAN的備份檔案,但沒有抽取出資料檔案,聯機重做日誌,控制檔案,引數檔案等資料庫檔案。但抽取出來的備份檔案中有資料檔案,控制檔案,引數檔案的備份,歸檔重做日誌備份因為沒有磁碟空間沒有執行完成。新安裝Oracle軟體後建立引數檔案來使用RMAN備份來還原和恢復資料庫。但在還原資料檔案時出錯,錯誤如下所示:
RMAN> run 2> { 3> allocate channel t1 device type disk; 4> restore controlfile from 'E:\ORABACK\ORCLBPM_9BQ7K30M_20150522.BAK'; 5> alter database mount; 6> release channel t1; 7> } 使用目標資料庫控制檔案替代恢復目錄 分配的通道: t1 通道 t1: SID=572 裝置型別=DISK 啟動 restore 於 29-5月 -15 通道 t1: 正在還原控制檔案 通道 t1: 還原完成, 用時: 00:00:03 輸出檔名=D:\ORACLE\ORADATA\ORCLBPM\CONTROL01.CTL 輸出檔名=D:\ORACLE\ORADATA\ORCLBPM\CONTROL02.CTL 輸出檔名=D:\ORACLE\ORADATA\ORCLBPM\CONTROL03.CTL 完成 restore 於 29-5月 -15 資料庫已裝載 釋放的通道: t1 RMAN> run 2> { 3> allocate channel t1 device type disk; 4> restore database; 5> recover database; 6> release channel t1; 7> } 分配的通道: t1 通道 t1: SID=572 裝置型別=DISK 啟動 restore 於 29-5月 -15 啟動 implicit crosscheck backup 於 29-5月 -15 已交叉檢驗的 200 物件 完成 implicit crosscheck backup 於 29-5月 -15 啟動 implicit crosscheck copy 於 29-5月 -15 完成 implicit crosscheck copy 於 29-5月 -15 搜尋恢復區中的所有檔案 正在編制檔案目錄... 沒有為檔案編制目錄 通道 t1: 正在開始還原資料檔案備份集 通道 t1: 正在指定從備份集還原的資料檔案 通道 t1: 將資料檔案 00001 還原到 D:\ORACLE\ORADATA\ORCLBPM\SYSTEM01.DBF 通道 t1: 將資料檔案 00002 還原到 D:\ORACLE\ORADATA\ORCLBPM\SYSAUX01.DBF 通道 t1: 將資料檔案 00003 還原到 D:\ORACLE\ORADATA\ORCLBPM\UNDOTBS01.DBF 通道 t1: 將資料檔案 00004 還原到 D:\ORACLE\ORADATA\ORCLBPM\USERS01.DBF 通道 t1: 將資料檔案 00005 還原到 D:\ORACLE\ORADATA\ORCLBPM\HB_SY01.DBF 通道 t1: 將資料檔案 00006 還原到 D:\ORACLE\ORADATA\ORCLBPM\HB_SY02.DBF 通道 t1: 將資料檔案 00007 還原到 D:\ORACLE\ORADATA\ORCLBPM\HB_SY03.DBF 通道 t1: 將資料檔案 00008 還原到 D:\ORACLE\ORADATA\ORCLBPM\BPMSY01.DBF 通道 t1: 將資料檔案 00009 還原到 D:\ORACLE\ORADATA\ORCLBPM\HMBPM01.DBF 通道 t1: 將資料檔案 00010 還原到 D:\ORACLE\ORADATA\ORCLBPM\BLOCK01.DBF 通道 t1: 正在讀取備份片段 E:\ORABACK\ORCLBPM_9AQ7K1NM_20150522.BAK 通道 t1: ORA-19870: 還原備份片段 E:\ORABACK\ORCLBPM_9AQ7K1NM_20150522.BAK 時出錯 ORA-19612: 資料檔案 1 沒有還原, 因為 missing or corrupt data 故障轉移到上一個備份 釋放的通道: t1 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: restore 命令 (在 05/29/2015 17:03:44 上) 失敗 RMAN-06026: 有些目標沒有找到 - 終止還原 RMAN-06023: 沒有找到資料檔案1的副本來還原
從錯誤資訊: ORA-19870: 還原備份片段 E:\ORABACK\ORCLBPM_9AQ7K1NM_20150522.BAK 時出錯,ORA-19612: 資料檔案 1 沒有還原, 因為 missing or corrupt data可以知道在執行還原資料檔案1時備份片段丟失或有壞塊,這裡明顯是有壞塊,因為其它資料檔案使用該備份片段已經還原成功了。這裡透過設定事件讓RMAN跳過壞塊來還原資料檔案。
C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 5月 29 18:02:22 2015
Copyright (c) 1982, 2010, Oracle. All rights reserved.
連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> alter system set event='19548 trace name context forever’, ‘19549 trace name
context forever' scope=spfile;
系統已更改。
SQL> shutdown immediate
ORA-01109: 資料庫未開啟
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 7666352128 bytes
Fixed Size 2190736 bytes
Variable Size 3942646384 bytes
Database Buffers 3707764736 bytes
Redo Buffers 13750272 bytes
資料庫裝載完畢。
RMAN> restore database;
啟動 restore 於 29-5月 -15
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=1141 裝置型別=DISK
正在略過資料檔案 2; 已還原到檔案 D:\ORACLE\ORADATA\ORCLBPM\SYSAUX01.DBF
正在略過資料檔案 3; 已還原到檔案 D:\ORACLE\ORADATA\ORCLBPM\UNDOTBS01.DBF
正在略過資料檔案 4; 已還原到檔案 D:\ORACLE\ORADATA\ORCLBPM\USERS01.DBF
正在略過資料檔案 5; 已還原到檔案 D:\ORACLE\ORADATA\ORCLBPM\HB_SY01.DBF
正在略過資料檔案 6; 已還原到檔案 D:\ORACLE\ORADATA\ORCLBPM\HB_SY02.DBF
正在略過資料檔案 8; 已還原到檔案 D:\ORACLE\ORADATA\ORCLBPM\BPMSY01.DBF
正在略過資料檔案 9; 已還原到檔案 D:\ORACLE\ORADATA\ORCLBPM\HMBPM01.DBF
正在略過資料檔案 10; 已還原到檔案 D:\ORACLE\ORADATA\ORCLBPM\BLOCK01.DBF
通道 ORA_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案
通道 ORA_DISK_1: 將資料檔案 00001 還原到 D:\ORACLE\ORADATA\ORCLBPM\SYSTEM01.DBF
通道 ORA_DISK_1: 將資料檔案 00007 還原到 D:\ORACLE\ORADATA\ORCLBPM\HB_SY03.DBF
通道 ORA_DISK_1: 正在讀取備份片段 E:\ORABACK\ORCLBPM_9AQ7K1NM_20150522.BAK
通道 ORA_DISK_1: 段控制程式碼 = E:\ORABACK\ORCLBPM_9AQ7K1NM_20150522.BAK 標記 = TAG2015052
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:02:45
完成 restore 於 29-5月 -15
下面對之前還原報錯的資料檔案SYSTEM01.DBF,HB_SY03.DBF進行驗證
C:\Users\Administrator>dbv file=D:\ORACLE\ORADATA\ORCLBPM\SYSTEM01.DBF blocksize
=8192
DBVERIFY: Release 11.2.0.1.0 - Production on 星期五 5月 29 18:29:19 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
DBVERIFY - 開始驗證: FILE = D:\ORACLE\ORADATA\ORCLBPM\SYSTEM01.DBF
DBVERIFY - 驗證完成
檢查的頁總數: 280064
處理的頁總數 (資料): 242009
失敗的頁總數 (資料): 0
處理的頁總數 (索引): 13233
失敗的頁總數 (索引): 0
處理的頁總數 (其他): 3322
處理的總頁數 (段) : 1
失敗的總頁數 (段) : 0
空的頁總數: 21500
標記為損壞的總頁數: 0
流入的頁總數: 0
加密的總頁數 : 0
最高塊 SCN : 87501555 (0.87501555)
C:\Users\Administrator>dbv file=D:\ORACLE\ORADATA\ORCLBPM\HB_SY03.DBF blocksize=
8192
DBVERIFY: Release 11.2.0.1.0 - Production on 星期五 5月 29 18:30:35 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
DBVERIFY - 開始驗證: FILE = D:\ORACLE\ORADATA\ORCLBPM\HB_SY03.DBF
DBVERIFY - 驗證完成
檢查的頁總數: 524288
處理的頁總數 (資料): 256890
失敗的頁總數 (資料): 0
處理的頁總數 (索引): 52837
失敗的頁總數 (索引): 0
處理的頁總數 (其他): 196657
處理的總頁數 (段) : 0
失敗的總頁數 (段) : 0
空的頁總數: 17904
標記為損壞的總頁數: 0
流入的頁總數: 0
加密的總頁數 : 0
最高塊 SCN : 87500838 (0.87500838)
從上面的驗證可以看到沒有壞塊,幸運哈哈。我們來檢查一個控制檔案中記錄的資料檔案檢查點SCN與資料檔案頭SCN是否相同,如果不同可能需要恢復。
SQL> select file#,checkpoint_change#,to_char(checkpoint_time,'yyyy-mm-dd hh24:mi :ss') checkpoint_time from v$datafile; FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME ---------- ------------------ ------------------- 1 87500284 2015-05-22 23:00:42 2 87500284 2015-05-22 23:00:42 3 87500284 2015-05-22 23:00:42 4 87500284 2015-05-22 23:00:42 5 87500284 2015-05-22 23:00:42 6 87500284 2015-05-22 23:00:42 7 87500284 2015-05-22 23:00:42 8 87500284 2015-05-22 23:00:42 9 87500284 2015-05-22 23:00:42 10 87500284 2015-05-22 23:00:42 已選擇10行。
SQL> select file#,checkpoint_change#,name from v$datafile_header; FILE# CHECKPOINT_CHANGE# NAME ---------- ------------------ ---------------------------------- 1 87499953 D:\ORACLE\ORADATA\ORCLBPM\SYSTEM01.DBF 2 87499953 D:\ORACLE\ORADATA\ORCLBPM\SYSAUX01.DBF 3 87499953 D:\ORACLE\ORADATA\ORCLBPM\UNDOTBS01.DBF 4 87499953 D:\ORACLE\ORADATA\ORCLBPM\USERS01.DBF 5 87499953 D:\ORACLE\ORADATA\ORCLBPM\HB_SY01.DBF 6 87499953 D:\ORACLE\ORADATA\ORCLBPM\HB_SY02.DBF 7 87499953 D:\ORACLE\ORADATA\ORCLBPM\HB_SY03.DBF 8 87499953 D:\ORACLE\ORADATA\ORCLBPM\BPMSY01.DBF 9 87499953 D:\ORACLE\ORADATA\ORCLBPM\HMBPM01.DBF 10 87499953 D:\ORACLE\ORADATA\ORCLBPM\BLOCK01.DBF 已選擇10行。
可以看到所有資料檔案頭記錄的檢查點scn都一樣,控制檔案中記錄的所有資料檔案檢查點scn都一樣,但資料檔案頭檢查點scn與控制檔案中記錄的資料檔案檢查點scn不一樣,所以選擇重建控制檔案來執行恢復,這裡將控制檔案備份到跟蹤檔案中。
SQL> oradebug setmypid 已處理的語句 SQL> alter database backup controlfile to trace 2 ; 資料庫已更改。 SQL> oradebug tracefile_name d:\app\administrator\diag\rdbms\orclbpm\orclbpm\trace\orclbpm_ora_1704.trc
下面用跟蹤檔案的控制檔案建立語句來重新建立控制檔案,這裡要使用resetlogs方式來建立,因為RMAN的備份檔案中沒有聯機重做日誌檔案。
SQL> shutdown immediate ORA-01109: ?????? 已經解除安裝資料庫。 ORACLE 例程已經關閉。 SQL> startup nomount ORACLE 例程已經啟動。 Total System Global Area 7666352128 bytes Fixed Size 2190736 bytes Variable Size 3942646384 bytes Database Buffers 3707764736 bytes Redo Buffers 13750272 bytes SQL> CREATE CONTROLFILE REUSE DATABASE "ORCLBPM" RESETLOGS ARCHIVELOG 2 MAXLOGFILES 16 3 MAXLOGMEMBERS 3 4 MAXDATAFILES 100 5 MAXINSTANCES 8 6 MAXLOGHISTORY 292 7 LOGFILE 8 GROUP 1 'D:\ORACLE\ORADATA\ORCLBPM\REDO01.LOG' SIZE 50M BLOCKSIZE 512, 9 GROUP 2 'D:\ORACLE\ORADATA\ORCLBPM\REDO02.LOG' SIZE 50M BLOCKSIZE 512, 10 GROUP 3 'D:\ORACLE\ORADATA\ORCLBPM\REDO03.LOG' SIZE 50M BLOCKSIZE 512 11 -- STANDBY LOGFILE 12 DATAFILE 13 'D:\ORACLE\ORADATA\ORCLBPM\SYSTEM01.DBF', 14 'D:\ORACLE\ORADATA\ORCLBPM\SYSAUX01.DBF', 15 'D:\ORACLE\ORADATA\ORCLBPM\UNDOTBS01.DBF', 16 'D:\ORACLE\ORADATA\ORCLBPM\USERS01.DBF', 17 'D:\ORACLE\ORADATA\ORCLBPM\HB_SY01.DBF', 18 'D:\ORACLE\ORADATA\ORCLBPM\HB_SY02.DBF', 19 'D:\ORACLE\ORADATA\ORCLBPM\HB_SY03.DBF', 20 'D:\ORACLE\ORADATA\ORCLBPM\BPMSY01.DBF', 21 'D:\ORACLE\ORADATA\ORCLBPM\HMBPM01.DBF', 22 'D:\ORACLE\ORADATA\ORCLBPM\BLOCK01.DBF' 23 CHARACTER SET ZHS16GBK 24 ; 控制檔案已建立。
檢查一個控制檔案中記錄的資料檔案檢查點SCN與資料檔案頭SCN是否相同,資料檔案頭檢查點scn與控制檔案中記錄的資料檔案檢查點scn一樣,在沒有聯機重做日誌和歸檔重做日誌的情況下,我們只能將資料庫恢復到scn:87499953時間點,並以open resetlogs選項來open資料庫
SQL> select FILE#,CHECKPOINT_CHANGE# from v$datafile_header; FILE# CHECKPOINT_CHANGE# ---------- ------------------ 1 87499953 2 87499953 3 87499953 4 87499953 5 87499953 6 87499953 7 87499953 8 87499953 9 87499953 10 87499953 已選擇10行。 SQL> select FILE#, CHECKPOINT_CHANGE#,LAST_CHANGE# from v$datafile; FILE# CHECKPOINT_CHANGE# LAST_CHANGE# ---------- ------------------ ------------ 1 87499953 2 87499953 3 87499953 4 87499953 5 87499953 6 87499953 7 87499953 8 87499953 9 87499953 10 87499953 已選擇10行。
這裡需要設定隱含引數_allow_resetlogs_corruption=true來open資料庫。
SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile; 系統已更改。 SQL> shutdown immediate ORA-01109: ?????? 已經解除安裝資料庫。 ORACLE 例程已經關閉。 SQL> startup mount; ORACLE 例程已經啟動。 Total System Global Area 7666352128 bytes Fixed Size 2190736 bytes Variable Size 3942646384 bytes Database Buffers 3707764736 bytes Redo Buffers 13750272 bytes 資料庫裝載完畢。 SQL> alter database open resetlogs; 資料庫已更改。 SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\ORACLE\ORADATA\ORCLBPM\TEMP01.DBF' R EUSE; 表空間已更改。 SQL> shutdown immediate 資料庫已經關閉。 已經解除安裝資料庫。 ORACLE 例程已經關閉。 SQL> startup ORACLE 例程已經啟動。 Total System Global Area 7666352128 bytes Fixed Size 2190736 bytes Variable Size 3942646384 bytes Database Buffers 3707764736 bytes Redo Buffers 13750272 bytes 資料庫裝載完畢。 資料庫已經開啟。
直此將資料庫恢復到備份生成的時間點,但沒有歸檔重做日誌和聯機重做日誌丟失了半天的資料。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-1679761/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle塊損壞恢復(有rman備份)Oracle
- 非系統資料檔案損壞,rman備份恢復
- RMAN備份恢復典型案例——資料檔案存在壞快
- 備份&恢復之十三:損壞全部控制檔案
- 備份與恢復--重建控制檔案後資料檔案損壞的恢復
- 備份&恢復之十二:損壞單個控制檔案
- 某個控制檔案損壞的恢復案例
- 案例:磁碟分割槽壞掉-oracle無備份的恢復Oracle
- 非系統表空間損壞,rman備份恢復
- 備份與恢復--資料檔案損壞或丟失
- rman 恢復---歸檔丟失and資料檔案損壞
- 介質恢復,即磁碟或作業系統檔案損壞的恢復-非RMAN方法作業系統
- RMAN備份時候檔案壞塊的處理
- 損壞控制檔案的恢復方法
- 磁碟損壞導致資料檔案丟失的恢復
- 【RMAN】如果控制檔案損壞那麼如何恢復?恢復控制檔案的方式有哪幾種?
- SQL Server ldf 檔案損壞恢復SQLServer
- 單個控制檔案損壞的恢復
- pg 檔案塊損壞的修復措施。
- 無備份的資料塊損壞恢復辦法 dbms_repairAI
- 陣列櫃故障造成控制檔案損壞,資料檔案損壞陣列
- RMAN_部分資料檔案丟失或者損壞的恢復
- 資料庫檔案壞塊損壞導致開啟時報錯的恢復方法資料庫
- Oracle asm磁碟損壞異常恢復OracleASM
- 備份&恢復之八:RMAN備份歸檔模式下損壞(丟失)多個資料檔案,進行整個資料庫的恢復模式資料庫
- oracle實驗記錄 (恢復,備份-含壞塊資料檔案)Oracle
- 資料庫在沒有備份的情況下的資料檔案損壞的恢復資料庫
- 恢復之單個控制檔案損壞
- 線上日誌檔案損壞恢復方法
- 【BBED】 SYSTEM檔案頭損壞的恢復(4)
- 資料檔案丟失損壞的恢復--
- REDO檔案丟失或者損壞的恢復
- UNDO 表空間檔案損壞的恢復
- 一次控制檔案損壞的恢復
- 資料檔案或者tablespace損壞基於rman恢復測試
- u盤檔案損壞怎麼恢復資料 u盤恢復損壞資料的有效方法
- RAC 11G ASM磁碟損壞恢復ASM
- 探索ORACLE之RMAN_07 磁碟損壞資料丟失恢復Oracle