如何清除Oracle控制文件中的无用记录,例如v$archived_log中的deleted归档日志记录
原创maclean_007 ©著作权
©著作权归作者所有:来自51CTO博客作者maclean_007的原创作品,请联系作者获取转载授权,否则将追究法律责任
有这样一种需求,虽然controlfile中的archivelog和其他一些备份信息会被覆盖重用,收到参数control_file_record_keep_time的影响,但是我们没法手动触发这种重用,这导致有时候controlfile中的archivelog 记录过多,可能导致一些备份、恢复过程中的"control file sequential read"等待事件。
已知的一些解决方案,包括:
1. 重建控制文件, 例如 backup controlfile to trace后重建该控制文件,但要求有数据文件均存在
2. 设置control_file_record_keep_time=0 然后等待记录被重用, 太过被动了....
这里再介绍一种手动清除v$ARCHIVED_LOG中不管是DELETED还是available 记录的方法,注意不要在你的产品数据库上这样做:
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
553
SQL> /
COUNT(*)
----------
553
SQL> execute sys.dbms_backup_restore.resetCfileSection( 11);
PL/SQL procedure successfully completed.
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
0
PROCEDURE resetCfileSection(record_type IN binary_integer );
-- This procedure attempts to reset the circular controlfile section.
--
-- Input parameters:
-- record_type
-- The circular record type whose controlfile section is to be reset.
execute sys.dbms_backup_restore.resetCfileSection( 11);
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
V$ARCHIVED_LOG视图解析
SQL> desc v$archived_log; Name &
Oracle 视图 V$ARCHIVED_LOG