CV 图形界面恢复
确定恢复时间点
本次恢复目标时间点:2019年10月23日22:00:00。
准备磁带
在 CV 上右击客户端实例 > 视图 > 备份历史,找到恢复目标时间点之后最近的一次备份(全量、增量、归档均可)。
在该备份上右键,查看作业详细信息,记录"完成时间:2026/7/29 3:17:15" 和"下个SCN:1 - 2294689497,2 - 2294689531",备用。
如果该备份是全备,则只需要查看该备份,如果不是全备,则从该备份往前至第一个全备,所有的任务上右键,查看介质,记录下磁带及其位置。如果位置是“Not Available”,表示磁带已经取出。
如果磁带已经取出,则需要将磁带重新放入磁带库,直接放入即可,放入后:
点击左侧”库>IBM 03584L32 7>按位置介质>库中的介质"里可以看到其位置是 IEPort,表示在临时的IE槽位。
点击左侧”库>IBM 03584L32 7>I/E端口",找到需要导入的磁带,选中,右击,导入,选择槽位时,选择最前面的可用槽位即可。
如果槽位不够,
点击左侧”库>IBM 03584L32 7>按位置介质>库中的介质",按"上次写入时间"排序,将最早的磁带取出,空出位置。注意取出的磁带与要装入的磁带要同代,都为L4或L7。
选中需要导出的磁带,右键,所有任务,导出,位置如果有设置,则勾选,如果没有,保持未选中状态。
在左侧选中磁带库,F5刷新,按位置介质 > 库中介质,如果状态是IEPort,表示可以把磁带取出来了。
槽位空出来后,再次导入需要装入的磁带。
准备实例
如果 CV 客户端计算机 dbrecover > Oracle 下面没有待恢复的实例名,则需要创建相应的实例。步骤如下:
1、清理 dbrecover 环境
只需要修改前三行 export 的值即可。
export cydb=ebankdb
#export dbversion=11g
export dbversion=19c
ps -ef|grep pmon|grep -v auto|awk '{print $2}'|xargs kill -9
sed -i "/ORACLE_SID=/c\export ORACLE_SID=${cydb}" /home/xoracle/${dbversion}.profile
source /home/xoracle/${dbversion}.profile
rm -fr $ORACLE_HOME/dbs/* /opt/database/oradata/* /opt/database/archivelog/*
rm -fr /opt/database/oracle/adump/* /opt/database/oracle/diag/*
echo $ORACLE_SID2、准备pfile
$ export cydb=ebankdb
$ cat << EOF > /opt/database/ora11g/product/db_1/dbs/init${cydb}.ora
*.diagnostic_dest='/opt/database/oracle'
*.audit_file_dest='/opt/database/oracle/adump'
*.control_files='/opt/database/oradata/controlfile01.ctl'
*.log_archive_dest_1='LOCATION=/opt/database/archivelog'
*.audit_trail='NONE'
*.db_block_size=8192
*.compatible='11.2.0.4.0'
*.db_name='${cydb}'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=${cydb}XDB)'
*.sga_target=8g
*.pga_aggregate_target=2g
EOF如果是19c,则将兼容性参数设置为:
*.compatible='19.0.0'3、将实例启动到 nomount 状态
SQL> start nomount4、在 CV 上创建实例
在恢复演练机 Oracle 子客户端上面,右键,所有任务,新实例。
常规标签:
Instance(Oracle SID): ${cydb}
Oracle 用户:oracle
Oracle 根目录:dbrecover 主机的 $ORACLE_HOME 路径
默认子客户端数据所用的存储策略:随便选一个都行,需要选一个,但实际上不会使用
“详细信息”标签:
取消使“使用目册连接”,然后在“连接字符串”后面只需要输入一个“/”字符即可。
存储设备标签:
存储策略标签(子标签):
用户命令行数据备份的存储策略和用于日志备份的存储策略都随便选一个,原因同上。
保存时报警如下,可忽略:
Operation successful. However, the storage policy has significant amount of pending data to copy. Please review documentation on "Resolving the Auxiliary Copy Fallen Behaind Issue".
成功后,在 dbrecover 下的 Oracle 子客户端下面看到 ${cydb} 实例。
右击 ${cydb},在属性中,刷新 ORACLE 状态,显示“已启动”表示数据库实例是启动的状态。
执行恢复
在需要恢复的生产数据库子客户端如 ${cydb} 上右击 > 所有任务 > 浏览和恢复
标签“时间范围”不管,如果要第一顺序从磁带恢复,则点击“高级选项”,
- 选中“按拷贝优先顺序浏览”,点击后面的向上箭头将数字修改为2,下面立即可以看到存储策略拷贝是磁带。
- 如果要恢复最新的数据或者数据还在XSKY里,则不用指定顺序。如果指定了磁带但磁带里还没有拷入数据,会报 MML 错误。
查看内容,全选,恢复全部所选,异地恢复,【目标客户端选择“dbrecover”!!!!】,目标实例选择"${cydb}",然后点击"高级"
"重定向"标签:
勾选"将所有表空间重定向至: /opt/database/oradata(dbrecover 的数据文件目录)"
勾选"重定向临时表空间到 /opt/database/oradata"
重定向联机重做日志 /opt/database/oradata
“选项”标签:勾选"设置DBID"和"更改DBID"
"还原"标签:勾选"恢复数据"至时间点:2019年10月23日22:00:00(填写目标时间点)
“Ctrl 和 SP 文件”标签:勾选"恢复控制文件"至时间点:2019年10月23日23:01:26(填写上面记录的最后备份完成时间)
填写这个时间的原则是恢复出来的控制文件要有备份元数据信息。
"还原"标签:勾选"恢复日期"至时间点:2019年10月23日22:00:00(填写目标时间点)
如果没有基于时间点的要求,可以统一将上面涉及的前两个时间都设置为某个备份完成的时间,最后一个保持最新SCN(这个最新是备份能跑到的最新)。
如果想恢复到尽可能新的状态,则三个时间标签都不要做任何操作即可。即:
还原:选择“自最近备份”
Ctrl 和 SP 文件:只勾选“恢复控制文件”,“恢复自”、“至时间点”、“将控制文件恢复为”均不要选择
还原:最新 SCN
点击“脚本预览”,等出现内容后,关闭。再次点击“高级”,点击“自定义RMAN脚本”,勾选“定制脚本”。
在 Control File 标签里,在 sql 'alter database mount'; 后面增加一行:
sql 'alter database flashback off';
增加后,大致是这个样子:
SET DBID 423678925;
run {
restore controlfile from autobackup until time = "TO_DATE('10/23/2019 23:01:26','MM/DD/YYYY HH24:MI:SS')" ;
sql 'alter database mount';
sql 'alter database flashback off';
}
exit;【再次确认目标客户端是 dbrecover 后!!!!】,点击 OK 开始恢复。
在作业控制器中,双击任务,查看 RMAN 日志。