案例环境:XX网Oracle 816数据库,。
需求描述:
备份主机(装有oracle)上备份了7月13日的数据,但是主数据库服务器当前日期是7月15日。为了把备份主机上的库跟主数据库服务器同步,使用归档日志把7月13日的库前滚到7月15日。
处理步骤:
a) 备份备份主机上的控制文件,然后把主用数据库的最新控制文件备份并拷贝到备份主机相应目录
备份控制文件的方法:
sqlplus /nolog<
connect internal
alter database backup controlfile to '${BACKUP_DIR}/controlfile.bkp';
alter database backup controlfile to trace;
EOF
b) 拷贝主库的归档日志到备份数据库的归档日志目录(这个前滚操作需要从13号到15号的归档日志完整,若备份数据库的归档日志目录不知道,可以从参数文件中看
c) 启动数据库到mount状态,使用recover database前滚数据库
SQL> startup restrict mount pfile="${ORACLE_BASE}/admin/sdh21/pfile/init${service_names}.ora"
SQL> recover database using backup controlfile;
选择AUTO模式
d) 如果到了最后一个日志它还需要前滚,此时可以在主库上把当前redolog切换,然后把产生的归档继续拷贝到备份主机,继续前滚。
e) 前滚完成之后,它可能还继续要求下一个归档日志,此时可以CANCEL
f) 使用reselogs选项打开数据库
SQL> alter database open resetlogs;
注意:如果打开时报错可能是还需要把日志继续前滚,可重复使用recover database命令