ITPub博客

首页 > 数据库 > Oracle > 清除V$archived_log中的过期信息

清除V$archived_log中的过期信息

原创 Oracle 作者:llnnmc 时间:2017-04-25 14:44:16 0 删除 编辑


在使用RMAN命令删除归档后,查询v$archived_log视图会发现name列为空了,但其他列的信息还保留,时间长了会留下很多过期的信息,影响维护工作,需要将过期的信息删除。首先模拟下问题的出现过程:


删除归档日志之前查看v$archived_log视图,情况正常

col name for a100

select sequence#, name from v$archived_log;


 SEQUENCE# NAME

---------- --------------------------------------------------------------------------------

       138 D:\ORADATA\MES\ARCHIVELOG\ARC_75DFAFFA_1_894015034_138.LOG

       139 D:\ORADATA\MES\ARCHIVELOG\ARC_75DFAFFA_1_894015034_139.LOG

       140 D:\ORADATA\MES\ARCHIVELOG\ARC_75DFAFFA_1_894015034_140.LOG


使用RAMN命令删除归档

delete archivelog all;


之后又有新的归档日志生成

alter system switch logfile;


再次查询v$archived_log视图,残存了三条无name列数据的记录

col name for a100

select sequence#, name from v$archived_log;


 SEQUENCE# NAME

---------- --------------------------------------------------------------------------------

       138

       139

       140

       141 D:\ORADATA\MES\ARCHIVELOG\ARC_75DFAFFA_1_894015034_141.LOG


出现这样的现象是因为使用RMAN命令在删除归档日志的时候不能够清除控制文件中的内容,导致v$archived_log留下了过期的不完整信息。下面将归档信息进行清除:


清除控制文件中关于v$archived_log的信息

execute sys.dbms_backup_restore.resetCfileSection(11);


再次查询v$archived_log,信息已经被清除

col name for a100

select sequence#, name from v$archived_log;


但这样是把所有的v$archived_log信息都清除了,包括未过期的也会被清除。因此可在RMAN下指定归档日志文件的所在位置,将未过期的归档文件信息重新注册进来:

catalog start with 'd:\oradata\mes\archivelog';


再次查询v$archived_log,未被删除的归档信息可以查询到了

col name for a100

select sequence#, name from v$archived_log;


 SEQUENCE# NAME

---------- --------------------------------------------------------------------------------

       141 D:\ORADATA\MES\ARCHIVELOG\ARC_75DFAFFA_1_894015034_141.LOG


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28974745/viewspace-2137943/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
刘鲁宁的个人博客。

注册时间:2016-12-29

  • 博文量
    113
  • 访问量
    287685