正式环境备份脚本:
https://app.yinxiang.com/fx/c88c06c9-d5fb-41fb-8be4-6abffe302d2f
获取相关备份文件
由于我们正式环境没有保存归档日志,在还原之前我们需要先执行以下脚本:
run
{
allocate channel d2 type disk;
backup archivelog from time 'sysdate-3' format '/opt/backups/oracle/rman_bak/arch_%I_%T_%u';
delete noprompt obsolete device type disk;
crosscheck backup;
delete noprompt expired backup;
release channel d2;
}
接着查询一下备份文件列表,找到最后一次全量备份和归档日志的存储路径:
RMAN>backup list;
然后下载到本地
恢复备份
恢复pfile文件
复制一份spfile.ora文件到目标机器
SQL> create pfile='/opt/app/oracle/product/12.2.0.1/dbhome_1/dbs/initorcl.ora' from spfile='/opt/app/oracle/product/12.2.0.1/dbhome_1/dbs/spfileorcl.ora';
修改ora文件里面的信息,主要是路径修改成目标机器上的路径,需要注释掉local_listener
恢复控制文件
查询控制文件备份
RMAN> LIST BACKUP OF CONTROLFILE;
开始在目标库中恢复备份
设置数据库
export ORACLE_SID=orcl
登录rman
rman target /
设置dbid
–DBID的值可以登录主库的 RMAN 查看到,也可以在 RMAN 的 CONTROLFILE AUTO BACKUP 生成的文件名中看到
RMAN> SET DBID 1554704928;
RMAN> STARTUP FORCE NOMOUNT PFILE='/opt/app/oracle/product/12.2.0.1/dbhome_1/dbs/initorcl.ora';
恢复控制文件
RMAN> restore controlfile from '/opt/backups/oracle-32/rman_bak/orcl/fhv52taa';
RMAN> ALTER DATABASE MOUNT;
// 删除过期备份
RMAN> crosscheck backup;
RMAN> delete noprompt expired backup;
<