在Oracle中,如何恢复归档日志?
备份所有归档日志:BACKUP ARCHIVELOG ALL DELETE INPUT;
恢复归档日志的命名如下所示:
① 恢复全部归档日志文件:RESTORE ARCHIVELOG ALL;
② 只恢复5到8这四个归档日志文件:RESTORE ARCHIVELOG FROM LOGSEQ 5 UNTIL LOGSEQ 8;
③ 恢复从第5个归档日志起:RESTORE ARCHIVELOG FROM LOGSEQ 5;
④ 恢复7天内的归档日志:RESTORE ARCHIVELOG FROM TIME 'SYSDATE-7';
⑤ SEQUENCE BETWEEN写法:RESTORE ARCHIVELOG SEQUENCE BETWEEN 1 AND 3;
⑥ 恢复到哪个日志文件为止:RESTORE ARCHIVELOG UNTIL LOGSEQ 3;
⑦ 从第五个日志开始恢复:RESTORE ARCHIVELOG LOW LOGSEQ 5;
⑧ 到第5个日志为止:RESTORE ARCHIVELOG HIGH LOGSEQ 5;
⑨ 恢复指定的归档日志:RESTORE ARCHIVELOG SEQUENCE 18;
若归档日志不在本地,则需要恢复相应的归档日志到本地目录,如下所示:
run {allocate channel ci type disk;
set archivelog destination to '/tmp';
restore archvielog from logseq xxx until logseq xxx;
release channel ci;
};
也可以利用DBMS_BACKUP_RESTORE.RESTOREARCHIVEDLOG来恢复相应的归档日志:
declare
devtype varchar2(256);
done boolean;
begin
devtype := dbms_backup_restore.deviceallocate (type => '',ident => 'fun');
dbms_backup_restore.restoresetarchivedlog(destination=>'d:\oracle_base\achive\');
dbms_backup_restore.restorearchivedlog(thread=>1,sequence=>1);
dbms_backup_restore.restorearchivedlog(thread=>1,sequence=>2);
dbms_backup_restore.restorearchivedlog(thread=>1,sequence=>3);
dbms_backup_restore.restorebackuppiece(done => done,handle => 'd:\oracle_base\rman_backup\mydb_log_bck0dh1jgnd_1_1', params => null);
dbms_backup_restore.devicedeallocate;
end;
/
● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● QQ:646634621 QQ群:230161599
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。