【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/