数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

OracleRMAN物理备份技术之恢复案例三


发布日期:2023年10月17日
 
OracleRMAN物理备份技术之恢复案例三

恢复案例三恢复控制文件

全部控制文件丢失需要从备份的控制文件恢复恢复了控制文件后必须要进行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 ; # defaultCONFIGURE BACKUP OPTIMIZATION OFF; # defaultCONFIGURE DEFAULT DEVICE TYPE TO DISK; # defaultCONFIGURE CONTROLFILE AUTOBACKUP ON;CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO %F; # defaultCONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET PARALLELISM ;CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO ; # defaultCONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO ; # defaultCONFIGURE MAXSETSIZE TO UNLIMITED; # defaultCONFIGURE ENCRYPTION FOR DATABASE OFF; # defaultCONFIGURE ENCRYPTION ALGORITHM AES; # defaultCONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # defaultCONFIGURE SNAPSHOT CONTROLFILE NAME TO D:\ORACLE\PRODUCT\\DB_\DATABASE

\SNCFROMEORA; # defaultRMAN> 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> startupORACLE 例程已经启动Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytesORA: ????????? ?????? ???????SQL> shutdown immediateORA: ??????ORACLE 例程已经关闭SQL> startup nomountORACLE 例程已经启动Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytesRMAN> SET DBID ;正在执行命令: SET DBIDRMAN> 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\REDOALOG 存在于磁盘上存档日志文件名 =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 nomountORACLE 例程已经启动Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytesSQL> 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\ROME\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\REDOALOG 存在于磁盘上存档日志文件名 =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 ;

上一篇:oracle到mysql的迁移步骤及各种注意事项

下一篇:Oracle10g中的hints调整机制详解