【DB筆試面試202】在Oracle中,怎樣清除V$ARCHIVED_LOG視圖中的過期資訊?

  • 2019 年 10 月 10 日
  • 筆記

Q

題目如下所示:

在Oracle中,怎樣清除V$ARCHIVED_LOG視圖中的過期資訊?

A

答案如下所示:

在使用RMAN命令(DELETE NOPROMPT ARCHIVELOG ALL;)刪除歸檔資訊後,V$ARCHIVED_LOG視圖中的NAME列為空,但是依然可以查詢到這些刪除了的歸檔資訊,出現這樣的現象是因為使用RMAN命令在刪除歸檔日誌的時候不會清除控制文件中的內容,導致V$ARCHIVED_LOG留下的過期的不完整的失效資訊。

使用如下的命令可以清除控制文件中關於V$ARCHIVED_LOG的資訊:

SQL> EXECUTE SYS.DBMS_BACKUP_RESTORE.RESETCFILESECTION(11);  

但是,這樣會把所有的V$ARCHIVE_LOG資訊都清除了,包括未過期未失效的資訊也會清除。所以,需要再將未過期未失效的歸檔文件資訊註冊進來。假設歸檔日誌都在/oradata/archive/中,則需要執行以下命令重新註冊:

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

再次查詢V$ARCHIVED_LOG時,未被刪除的歸檔資訊就可以查詢到了。如果歸檔資訊放在閃回恢復區中,那麼可以使用如下的命令進行重新註冊:

RMAN> catalog recovery area;  

需要注意的是,對於命令「SYS.DBMS_BACKUP_RESTORE.RESETCFILESECTION(11)」中的11代表的是歸檔文件(其實就是控制文件中的「record type」),那麼其它數字分別代表什麼含義呢?其實,可以通過視圖V$CONTROLFILE_RECORD_SECTION來查看:

SYS@lhrdb> SELECT ROWNUM-1 "NUMBER", TYPE FROM V$CONTROLFILE_RECORD_SECTION;        number TYPE  ---------- --------------------------------------------------------           0 DATABASE           1 CKPT PROGRESS           2 REDO THREAD           3 REDO LOG           4 DATAFILE           5 FILENAME           6 TABLESPACE           7 TEMPORARY FILENAME           8 RMAN CONFIGURATION           9 LOG HISTORY          10 OFFLINE RANGE          11 ARCHIVED LOG          12 BACKUP SET          13 BACKUP PIECE          14 BACKUP DATAFILE          15 BACKUP REDOLOG          16 DATAFILE COPY          17 BACKUP CORRUPTION          18 COPY CORRUPTION          19 DELETED OBJECT          20 PROXY COPY          21 BACKUP SPFILE          22 DATABASE INCARNATION          23 FLASHBACK LOG          24 RECOVERY DESTINATION          25 INSTANCE SPACE RESERVATION          26 REMOVABLE RECOVERY FILES          27 RMAN STATUS          28 THREAD INSTANCE NAME MAPPING          29 MTTR          30 DATAFILE HISTORY          31 STANDBY DATABASE MATRIX          32 GUARANTEED RESTORE POINT          33 RESTORE POINT          34 DATABASE BLOCK CORRUPTION          35 ACM OPERATION          36 FOREIGN ARCHIVED LOG          37 PDB RECORD          38 AUXILIARY DATAFILE COPY          39 MULTI INSTANCE REDO APPLY          40 PDBINC RECORD          41 TABLESPACE KEY HISTORY  

因此,輸入不同的數字,會對不同的視圖數據進行清理,例如:

EXECUTE DBMS_BACKUP_RESTORE.RESETCFILESECTION(11); /** CLEAR V$ARCHIVED_LOG    */  EXECUTE DBMS_BACKUP_RESTORE.RESETCFILESECTION(12) ; /** CLEAR V$BACKUP_SET    */  EXECUTE DBMS_BACKUP_RESTORE.RESETCFILESECTION(13) ; /** CLEAR V$BACKUP_PIECE    */  EXECUTE DBMS_BACKUP_RESTORE.RESETCFILESECTION(17); /** CLEAR V$BACKUP_CORRUPTION   */  EXECUTE DBMS_BACKUP_RESTORE.RESETCFILESECTION(18); /** CLEAR V$COPY_CORRUPTION    */  EXECUTE DBMS_BACKUP_RESTORE.RESETCFILESECTION(19); /** CLEAR V$DELETED_OBJECT     */  EXECUTE DBMS_BACKUP_RESTORE.RESETCFILESECTION(28); /** CLEAR V$RMAN_STATUS     */

& 說明:

有關清除V$ARCHIVED_LOG視圖中的過期資訊的更多內容可以參考我的BLOG:http://blog.itpub.net/26736162/viewspace-2141732/、http://blog.itpub.net/26736162/viewspace-1799884/

Tags: