怎樣清除v$archived_log檢視中的過期資訊

Davis_itpub發表於2018-06-27
      在使用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.     
  14. --使用RAMN命令刪除歸檔
  15. RMAN> delete archivelog all;

  16. --再次查詢v$archived_log檢視,name列為空
  17. SQL> select dest_id,sequence#,name,blocks from v$archived_log;

  18.    DEST_ID SEQUENCE#                    NAME                         BLOCKS
  19. ---------- ---------- --------------------------------------------- ----------
  20.      1     101                                                        2730
  21.      1     102                                                        95711
  22.      1     103                                                        94813
  23.      1     104                                                        95048
  24.      1     105                                                        94677
  25.      1     106                                                        97494
  26.      1     107                                                        94300
  27.      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






來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31520497/viewspace-2156761/,如需轉載,請註明出處,否則將追究法律責任。

相關文章