一、模擬產生gap
a、主庫查詢,可以看出當前日誌組66
SQL> select sequence#,status from v$log; SEQUENCE# STATUS ---------- ---------------- 66 CURRENT 65 ACTIVE 64 INACTIVE
b、禁用備庫網卡
[oracle@dg2 ~]$ ifconfig eth0 down
c、主庫日誌多次切換,mv歸檔
SQL> alter system switch logfile; System altered. SQL> select SEQUENCE#,NAME from v$archived_log; SEQUENCE# NAME --------- -------------------------------------------------- 67 /u01/oracle/arch1/WENDING/1_67_795970778.dbf 68 /u01/oracle/arch1/WENDING/1_68_795970778.dbf 69 /u01/oracle/arch1/WENDING/1_69_795970778.dbf
d、主庫進行日誌切換,將歸檔mv到其他目錄下,然後啓用備庫網庫
[oracle@dg1 ~]$ mv /u01/oracle/arch1/WENDING/1_67_795970778.dbf /u01/bak [oracle@dg2 ~]$ ifconfig eth0 up
e、繼續幾次切換,查看日誌
主庫:
FAL[server]: Fail to queue the whole FAL gap GAP - thread 1 sequence 67-67 DBID 2231924310 branch 795970778
備庫:
Fetching gap sequence in thread 1, gap sequence 67-67 Tue Jan 7 11:26:55 2014 FAL[client]: Failed to request gap sequence GAP - thread 1 sequence 67-67 DBID 2231924310 branch 795970778 FAL[client]: All defined FAL servers have been attempted. ------------------------------------------------------------- Check that the CONTROL_FILE_RECORD_KEEP_TIME initialization parameter is defined to a value that is sufficiently large enough to maintain adequate log switch information to resolve archivelog gaps.
備庫視圖:
SQL> select * from v$archive_gap; THREAD# LOW_SEQUENCE# HIGH_SEQUENCE# ---------- ------------- -------------- 1 67 67
二、解決GAP問題
前面我們已經知道,我們將67號歸檔放在了/u01/bak目錄下,我們現在將其傳送到備庫,並且進行註冊。
[oracle@dg1 bak]$ scp /u01/bak/1_67_795970778.dbf dg2:/u01/ The authenticity of host 'dg2 (192.168.1.2)' can't be established. RSA key fingerprint is a3:2c:9a:c2:b3:be:01:4d:37:37:67:11:fa:cb:1b:b7. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'dg2' (RSA) to the list of known hosts. oracle@dg2's password: 1_67_795970778.dbf 100% 47KB 47.0KB/s 00:00
備庫註冊缺失的歸檔文件
SQL> alter database register logfile '/u01/1_67_795970778.dbf'; Database altered.
查看備庫日誌,可以看出已經日誌已經正常應用,備庫恢復正常。
RFS[15]: Identified database type as 'physical standby' Tue Jan 7 11:33:46 2014 alter database register logfile '/u01/1_67_795970778.dbf' Tue Jan 7 11:33:46 2014 There are 1 logfiles specified. ALTER DATABASE REGISTER [PHYSICAL] LOGFILE Completed: alter database register logfile '/u01/1_67_795970778.dbf' Tue Jan 7 11:33:56 2014 Media Recovery Log /u01/1_67_795970778.dbf Media Recovery Log /u01/oracle/arch1/1_68_795970778.dbf Media Recovery Log /u01/oracle/arch1/1_69_795970778.dbf Media Recovery Log /u01/oracle/arch1/PHYSTDBY/1_70_795970778.dbf Media Recovery Log /u01/oracle/arch1/PHYSTDBY/1_71_795970778.dbf Media Recovery Waiting for thread 1 sequence 72 (in transit)
備庫視圖:
SQL> select * from v$archive_gap; no rows selected
至此,GAP的產生過程以及處理過程演示完畢。