如何清除v$archived

56次阅读
没有评论

共计 2482 个字符,预计需要花费 7 分钟才能阅读完成。

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

      在使用 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

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

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-20发表,共计2482字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)