ITPub博客

首页 > 数据库 > Oracle > 怎样清除v$archived_log视图中的过期信息

怎样清除v$archived_log视图中的过期信息

Oracle 作者:xypincle 时间:2017-03-22 11:02:47 0 删除 编辑

背景介绍

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

原因分析

首先模拟下问题的出现过程:

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

SQL> select dest_id,sequence#,name,blocks from v$archived_log;

   DEST_ID SEQUENCE#                    NAME                         BLOCKS

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

     1     101          /oradata/archive/orcl_1_101_851966182.arc      2730

     1     102          /oradata/archive/orcl_1_102_851966182.arc      95711

     1     103          /oradata/archive/orcl_1_103_851966182.arc      94813

     1     104          /oradata/archive/orcl_1_104_851966182.arc      95048

     1     105          /oradata/archive/orcl_1_105_851966182.arc      94677

     1     106          /oradata/archive/orcl_1_106_851966182.arc      97494

     1     107          /oradata/archive/orcl_1_107_851966182.arc      94300

     1     108          /oradata/archive/orcl_1_108_851966182.arc      97494

    

--使用RAMN命令删除归档

RMAN> delete archivelog all;

--再次查询v$archived_log视图,name列为空

SQL> select dest_id,sequence#,name,blocks from v$archived_log;

   DEST_ID SEQUENCE#                    NAME                         BLOCKS

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

     1     101                                                        2730

     1     102                                                        95711

     1     103                                                        94813

     1     104                                                        95048

     1     105                                                        94677

     1     106                                                        97494

     1     107                                                        94300

     1     108                                                        97494

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

问题处理

下面将归档信息进行清除:

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

SQL> execute sys.dbms_backup_restore.resetCfileSection(11);

PL/SQL procedure successfully completed.

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

SQL> select dest_id,sequence#,name,blocks from v$archived_log;

no rows selected

但是这样是把所有的v$archive_log信息都清除了,包括未过期的也会不清除。下面再将未过期的归档文件信息注册进来。

--我测试环境上归档日志都在/oradata/archive/中

RMAN> catalog start with '/oradata/archive/';

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

SQL> select dest_id,sequence#,name,blocks from v$archived_log;

   DEST_ID SEQUENCE#                     NAME                        BLOCKS

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

     1     110           /oradata/archive/orcl_1_110_851966182.arc      1

     1     111           /oradata/archive/orcl_1_111_851966182.arc      2

     1     109           /oradata/archive/orcl_1_109_851966182.arc      31079

关键知识点

1.执行包sys.dbms_backup_restore.resetCfileSection(11),清理v$ARCHIVED_LOG对应的记录;

2. catalog start with添加对象到备份记录中;

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

下一篇: Oracle学习笔记2
请登录后发表评论 登录
全部评论

注册时间:2013-05-11

  • 博文量
    208
  • 访问量
    212338