千家信息网

如何清除v$archived_log视图中的过期信息

发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,这篇文章主要讲解了"如何清除v$archived_log视图中的过期信息",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何清除v$archived_l
千家信息网最后更新 2024年11月19日如何清除v$archived_log视图中的过期信息

这篇文章主要讲解了"如何清除v$archived_log视图中的过期信息",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何清除v$archived_log视图中的过期信息"吧!

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

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

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


  3. DEST_ID SEQUENCE# NAME BLOCKS

  4. ---------- ---------- --------------------------------------------- ----------

  5. 1 101 /oradata/archive/orcl_1_101_851966182.arc 2730

  6. 1 102 /oradata/archive/orcl_1_102_851966182.arc 95711

  7. 1 103 /oradata/archive/orcl_1_103_851966182.arc 94813

  8. 1 104 /oradata/archive/orcl_1_104_851966182.arc 95048

  9. 1 105 /oradata/archive/orcl_1_105_851966182.arc 94677

  10. 1 106 /oradata/archive/orcl_1_106_851966182.arc 97494

  11. 1 107 /oradata/archive/orcl_1_107_851966182.arc 94300

  12. 1 108 /oradata/archive/orcl_1_108_851966182.arc 97494


  13. --使用RAMN命令删除归档

  14. RMAN> delete archivelog all;


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

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


  17. DEST_ID SEQUENCE# NAME BLOCKS

  18. ---------- ---------- --------------------------------------------- ----------

  19. 1 101 2730

  20. 1 102 95711

  21. 1 103 94813

  22. 1 104 95048

  23. 1 105 94677

  24. 1 106 97494

  25. 1 107 94300

  26. 1 108 97494

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

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

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


  3. PL/SQL procedure successfully completed.


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

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


  6. no rows selected

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

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

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


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

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


  5. DEST_ID SEQUENCE# NAME BLOCKS

  6. ---------- ---------- --------------------------------------------- ----------

  7. 1 110 /oradata/archive/orcl_1_110_851966182.arc 1

  8. 1 111 /oradata/archive/orcl_1_111_851966182.arc 2

  9. 1 109 /oradata/archive/orcl_1_109_851966182.arc 31079

感谢各位的阅读,以上就是"如何清除v$archived_log视图中的过期信息"的内容了,经过本文的学习后,相信大家对如何清除v$archived_log视图中的过期信息这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0