熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

OracleRMAN物理備份技術之恢復案例三

2022-06-13   來源: Oracle 

  恢復案例三恢復控制文件

  全部控制文件丟失需要從備份的控制文件恢復恢復了控制文件後必須要進行RECOVER恢復然後用RESETLOGS參數打開數據庫我們也可以把控制文件恢復到其他位置(不是在參數文件中給出的控制文件位置)本例假定沒有使用恢復目錄我們將在以後介紹帶有恢復目的RMAN備份如何恢復控制文件如果沒有恢復目錄用RMAN只能在NOMOUNT狀態從備份中進行控制文件的恢復

  從自動備份控制文件恢復

  

  RMAN> configure controlfile autobackup on;

  舊的 RMAN 配置參數

  

  CONFIGURE CONTROLFILE AUTOBACKUP OFF;

  新的 RMAN 配置參數

  

  CONFIGURE CONTROLFILE AUTOBACKUP ON;

  已成功存儲新的 RMAN 配置參數

  

  RMAN> show all;

  RMAN 配置參數為

  

  CONFIGURE RETENTION POLICY TO REDUNDANCY ; # default CONFIGURE BACKUP OPTIMIZATION OFF; # default CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO %F; # default CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET PARALLELISM ; CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO ; # default CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO ; # default CONFIGURE MAXSETSIZE TO UNLIMITED; # default CONFIGURE ENCRYPTION FOR DATABASE OFF; # default CONFIGURE ENCRYPTION ALGORITHM AES; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO D:\ORACLE\PRODUCT\\DB_\DATABASE
\SNCFROMEORA; # default RMAN> backup database; 啟動 backup 於 分配的通道: ORA_DISK_ 通道 ORA_DISK_: sid= devtype=DISK 通道 ORA_DISK_: 啟動全部數據文件備份集 通道 ORA_DISK_: 正在指定備份集中的數據文件 輸入數據文件 fno= name=F:\ORACLE\ORADATA\ROME\UNDOTBSDBF 輸入數據文件 fno= name=D:\ORACLE\PRODUCT\\ORADATA\ROME\SYSTEMDBF 輸入數據文件 fno= name=D:\ORACLE\PRODUCT\\ORADATA\ROME\SYSAUXDBF 輸入數據文件 fno= name=D:\ORACLE\PRODUCT\\ORADATA\ROME\USERSDBF 輸入數據文件 fno= name=E:\ORACLE\ORADATA\ROME\TESTDBF 通道 ORA_DISK_: 正在啟動段 通道 ORA_DISK_: 已完成段 段句柄=D:\ORACLE\PRODUCT\\FLASH_RECOVERY_AREA\ROME\BACKUPSET\__
\O_MF_NNNDF_TAGT_VFDHGYR_BKP 標記=TAGT 注釋=NONE 通道 ORA_DISK_: 備份集已完成 經過時間::: 完成 backup 於 啟動 Control File and SPFILE Autobackup 於 段 handle=D:\ORACLE\PRODUCT\\FLASH_RECOVERY_AREA\ROME\AUTOBACKUP\_
_\O_MF_S__VFDJV_BKP comment=NONE 完成 Control File and SPFILE Autobackup 於 SQL> shutdown immediate 數據庫已經關閉 已經卸載數據庫 ORACLE 例程已經關閉 刪除所有的控制文件 SQL> startup ORACLE 例程已經啟動 Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes ORA: ????????? ?????? ??????? SQL> shutdown immediate ORA: ?????? ORACLE 例程已經關閉 SQL> startup nomount ORACLE 例程已經啟動 Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes RMAN> SET DBID ; 正在執行命令: SET DBID RMAN> restore controlfile from autobackup; 啟動 restore 於 使用目標數據庫控制文件替代恢復目錄 分配的通道: ORA_DISK_ 通道 ORA_DISK_: sid= devtype=DISK 恢復區域目標: d:\oracle\product\\flash_recovery_area 用於搜索的數據庫名 (或數據庫的唯一名稱): ROME 通道 ORA_DISK_: 在恢復區域中找到自動備份 通道 ORA_DISK_: 已找到的自動備份: D:\ORACLE\PRODUCT\\FLASH_RECOVERY_AREA\ ROME\AUTOBACKUP\__\O_MF_S__VFDJV_BKP 通道 ORA_DISK_: 從自動備份復原控制文件已完成 輸出文件名=D:\ORACLE\PRODUCT\\ORADATA\ROME\CONTROLCTL 輸出文件名=F:\ORACLE\ORADATA\ROME\CONTROLCTL 輸出文件名=E:\ORACLE\ORADATA\ROME\CONTROLCTL 完成 restore 於 RMAN> sql alter database mount; sql 語句: alter database mount 釋放的通道: ORA_DISK_ RMAN> recover database; 啟動 recover 於 啟動 implicit crosscheck backup 於 分配的通道: ORA_DISK_ 通道 ORA_DISK_: sid= devtype=DISK 已交叉檢驗的 對象 完成 implicit crosscheck backup 於 啟動 implicit crosscheck copy 於 使用通道 ORA_DISK_ 已交叉檢驗的 對象 完成 implicit crosscheck copy 於 搜索恢復區域中的所有文件 正在編制文件目錄 目錄編制完畢 已列入目錄的文件的列表 ======================= 文件名: D:\ORACLE\PRODUCT\\FLASH_RECOVERY_AREA\ROME\AUTOBACKUP\__
\O_MF_S__VFYTY_BKP 使用通道 ORA_DISK_ 正在開始介質的恢復 存檔日志線程 序列 已作為文件 D:\ORACLE\PRODUCT\\ORADATA\ROME\REDOAL OG 存在於磁盤上 存檔日志文件名 =D:\ORACLE\PRODUCT\\ORADATA\ROME\REDOALOG 線程 = 序列 = 介質恢復完成 用時: :: 完成 recover 於 RMAN> sql alter database open resetlogs; sql 語句: alter database open resetlogs

  從包含控制文件的全庫備份恢復

  

  RMAN> configure controlfile autobackup off; 舊的 RMAN 配置參數: CONFIGURE CONTROLFILE AUTOBACKUP ON; 新的 RMAN 配置參數: CONFIGURE CONTROLFILE AUTOBACKUP OFF; 已成功存儲新的 RMAN 配置參數 RMAN> backup database; 啟動 backup 於 分配的通道: ORA_DISK_ 通道 ORA_DISK_: sid= devtype=DISK 通道 ORA_DISK_: 啟動全部數據文件備份集 通道 ORA_DISK_: 正在指定備份集中的數據文件 輸入數據文件 fno= name=F:\ORACLE\ORADATA\ROME\UNDOTBSDBF 輸入數據文件 fno= name=D:\ORACLE\PRODUCT\\ORADATA\ROME\SYSTEMDBF 輸入數據文件 fno= name=D:\ORACLE\PRODUCT\\ORADATA\ROME\SYSAUXDBF 輸入數據文件 fno= name=D:\ORACLE\PRODUCT\\ORADATA\ROME\USERSDBF 輸入數據文件 fno= name=E:\ORACLE\ORADATA\ROME\TESTDBF 通道 ORA_DISK_: 正在啟動段 通道 ORA_DISK_: 已完成段 段句柄=D:\ORACLE\PRODUCT\\FLASH_RECOVERY_AREA\ROME\BACKUPSET\__
\O_MF_NNNDF_TAGT_VGP_BKP 標記=TAGT 注釋=NONE
通道 ORA_DISK_: 備份集已完成 經過時間::: 通道 ORA_DISK_: 啟動全部數據文件備份集 通道 ORA_DISK_: 正在指定備份集中的數據文件 備份集中包括當前控制文件 在備份集中包含當前的 SPFILE 通道 ORA_DISK_: 正在啟動段 通道 ORA_DISK_: 已完成段 段句柄=D:\ORACLE\PRODUCT\\FLASH_RECOVERY_AREA\ROME\BACKUPSET\__
\O_MF_NCSNF_TAGT_VGPZC_BKP 標記=TAGT 注釋=NONE
通道 ORA_DISK_: 備份集已完成 經過時間::: 完成 backup 於 SQL> shutdown immediate 數據庫已經關閉 已經卸載數據庫 ORACLE 例程已經關閉 刪除所有控制文件 SQL> startup nomount ORACLE 例程已經啟動 Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes C:\Documents and Settings\Administrator>rman target / 恢復管理器: Release Production on 星期三 :: Copyright (c) Oracle All rights reserved 連接到目標數據庫: rome (未裝載) RMAN> RESTORE CONTROLFILE FROM D:\oracle\product\\flash_recovery_area\
ROME\BACKUPSET\__\O_MF_NCSNF_TAGT_VGPZC_BKP; 啟動 restore 於 使用目標數據庫控制文件替代恢復目錄 分配的通道: ORA_DISK_ 通道 ORA_DISK_: sid= devtype=DISK 通道 ORA_DISK_: 正在復原控制文件 通道 ORA_DISK_: 恢復完成 用時: :: 輸出文件名=D:\ORACLE\PRODUCT\\ORADATA\ROME\CONTROLCTL 輸出文件名=F:\ORACLE\ORADATA\ROME\CONTROLCTL 輸出文件名=E:\ORACLE\ORADATA\ROME\CONTROLCTL 完成 restore 於 RMAN> sql alter database mount; sql 語句: alter database mount 釋放的通道: ORA_DISK_ RMAN> recover database; 啟動 recover 於 啟動 implicit crosscheck backup 於 分配的通道: ORA_DISK_ 通道 ORA_DISK_: sid= devtype=DISK 已交叉檢驗的 對象 完成 implicit crosscheck backup 於 啟動 implicit crosscheck copy 於 使用通道 ORA_DISK_ 已交叉檢驗的 對象 完成 implicit crosscheck copy 於 搜索恢復區域中的所有文件 正在編制文件目錄 目錄編制完畢 已列入目錄的文件的列表 ======================= 文件名: D:\ORACLE\PRODUCT\\FLASH_RECOVERY_AREA\ROME\BACKUPSET\__
\O_MF_NCSNF_TAGT_VGPZC_BKP 使用通道 ORA_DISK_ 正在開始介質的恢復 存檔日志線程 序列 已作為文件 D:\ORACLE\PRODUCT\\ORADATA\ROME\REDOAL OG 存在於磁盤上 存檔日志文件名 =D:\ORACLE\PRODUCT\\ORADATA\ROME\REDOALOG 線程 = 序列 = 介質恢復完成 用時: :: 完成 recover 於 RMAN> sql alter database open resetlogs; sql 語句: alter database open resetlogs

  我們可以利用dbms_backup_restore包來恢復控制文件

  

  RMAN> backup database; 啟動 backup 於 分配的通道: ORA_DISK_ 通道 ORA_DISK_: sid= devtype=DISK 通道 ORA_DISK_: 啟動全部數據文件備份集 通道 ORA_DISK_: 正在指定備份集中的數據文件 輸入數據文件 fno= name=F:\ORACLE\ORADATA\ROME\UNDOTBSDBF 輸入數據文件 fno= name=D:\ORACLE\PRODUCT\\ORADATA\ROME\SYSTEMDBF 輸入數據文件 fno= name=D:\ORACLE\PRODUCT\\ORADATA\ROME\SYSAUXDBF 輸入數據文件 fno= name=D:\ORACLE\PRODUCT\\ORADATA\ROME\USERSDBF 輸入數據文件 fno= name=E:\ORACLE\ORADATA\ROME\TESTDBF 通道 ORA_DISK_: 正在啟動段 通道 ORA_DISK_: 已完成段 段句柄=D:\ORACLE\PRODUCT\\FLASH_RECOVERY_AREA\ROME\BACKUPSET\__
\O_MF_NNNDF_TAGT_VFPWCXS_BKP 標記=TAGT 注釋=NONE 通道 ORA_DISK_: 備份集已完成 經過時間::: 通道 ORA_DISK_: 啟動全部數據文件備份集 通道 ORA_DISK_: 正在指定備份集中的數據文件 備份集中包括當前控制文件 在備份集中包含當前的 SPFILE 通道 ORA_DISK_: 正在啟動段 通道 ORA_DISK_: 已完成段 段句柄=D:\ORACLE\PRODUCT\\FLASH_RECOVERY_AREA\ROME\BACKUPSET\__
\O_MF_NCSNF_TAGT_VFPXG_BKP 標記=TAGT 注釋=NONE 通道 ORA_DISK_: 備份集已完成 經過時間::: 完成 backup 於 SQL> shutdown immediate 數據庫已經關閉 已經卸載數據庫 ORACLE 例程已經關閉 刪除所有控制文件 SQL> startup nomount ORACLE 例程已經啟動 Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes SQL> DECLARE devtype varchar(); done boolean; BEGIN devtype:=sysdbms_backup_restoredeviceAllocate(type=>ident=>); sysdbms_backup_restorerestoreSetDatafile; sysdbms_backup_restorerestoreControlfileTo(cfname=>D:\oracle\product
\\oradata\rome\Controlctl); sysdbms_backup_restorerestoreBackupPiece(done=>donehandle=>D:\oracle
\product\\flash_recovery_area\ROME\BACKUPSET\__\O_MF_NCSNF_
TAGT_VFPXG_BKP params=>null); sysdbms_backup_restoredeviceDeallocate; exception when others then dbms_outputput_line(sqlerrm); END; / PL/SQL 過程已成功完成 RMAN> restore database; 啟動 restore 於 啟動 implicit crosscheck backup 於 使用目標數據庫控制文件替代恢復目錄 分配的通道: ORA_DISK_ 通道 ORA_DISK_: sid= devtype=DISK 已交叉檢驗的 對象 完成 implicit crosscheck backup 於 啟動 implicit crosscheck copy 於 使用通道 ORA_DISK_ 已交叉檢驗的 對象 完成 implicit crosscheck copy 於 搜索恢復區域中的所有文件 正在編制文件目錄 目錄編制完畢 已列入目錄的文件的列表 ======================= 文件名: D:\ORACLE\PRODUCT\\FLASH_RECOVERY_AREA\ROME\BACKUPSET\__
\O_MF_NCSNF_TAGT_VFPXG_BKP 使用通道 ORA_DISK_ 通道 ORA_DISK_: 正在開始恢復數據文件備份集 通道 ORA_DISK_: 正在指定從備份集恢復的數據文件 正將數據文件恢復到D:\ORACLE\PRODUCT\\ORADATA\ROME\SYSTEMDBF 正將數據文件恢復到F:\ORACLE\ORADATA\ROME\UNDOTBSDBF 正將數據文件恢復到D:\ORACLE\PRODUCT\\ORADATA\ROME\SYSAUXDBF 正將數據文件恢復到D:\ORACLE\PRODUCT\\ORADATA\ROME\USERSDBF 正將數據文件恢復到E:\ORACLE\ORADATA\ROME\TESTDBF 通道 ORA_DISK_: 正在讀取備份段 D:\ORACLE\PRODUCT\\FLASH_RECOVERY_AREA\ROM E\BACKUPSET\__\O_MF_NNNDF_TAGT_VFPWCXS_BKP 通道 ORA_DISK_: 已恢復備份段 段句柄 = D:\ORACLE\PRODUCT\\FLASH_RECOVERY_AREA\ROME\BACKUPSET\__
\O_MF_NNNDF_TAGT_VFPWCXS_BKP 標記 = TAGT 通道 ORA_DISK_: 恢復完成 用時: :: 完成 restore 於 RMAN> recover database; 啟動 recover 於 使用通道 ORA_DISK_ 正在開始介質的恢復 存檔日志線程 序列 已作為文件 D:\ORACLE\PRODUCT\\ORADATA\ROME\REDOA LOG 存在於磁盤上 存檔日志文件名 =D:\ORACLE\PRODUCT\\ORADATA\ROME\REDOALOG 線程 = 序列 = 介質恢復完成 用時: :: 完成 recover 於 RMAN> sql alter database open resetlogs; sql 語句: alter database open resetlogs

  如果使用了Flash Recovery AreaRMAN自動執行CROSSCHECK檢查控制文件中涉及到的備份文件和競相拷貝(磁盤備份)如果是使用磁帶備份RMAN不會自動進行CROSSCHECK檢查需要我們恢復完控制文件後執行下列檢查操作

  

  RMAN> CROSSCHECK BACKUP DEVICE TYPE SBT;

  如果我們的RMAN是帶有恢復目錄的話則在恢復的時候不用進行SET DBID操作直接執行如下命令即可

  

  RMAN> restore controlfile;

  我們可以在數據庫處於任何狀態的情況下把控制文件恢復到參數文件中設置的控制文件以外的位置

  

  RMAN〉restore controlfile to from ;


From:http://tw.wingwit.com/Article/program/Oracle/201311/17054.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.