雙節點RAC架構下,最常見的日志歸檔方式,是將歸檔日志存放到ASM共享存儲上,一來是考慮到備份的需要,RMAN備份需要訪問到兩個節點的歸檔日志;另一方面是考慮到ASM存儲的I/O性能高於本地磁盤。
但該歸檔路徑也存在缺點,如果與數據文件存放於同一個ASM磁盤組上,那麼當該磁盤組出現問題時,容易導致歸檔日志也一起丟失。另外,在某些實際生產環境中,由於空間規劃不周全,導致ASM存儲空間不足,這個時候也需要將歸檔日志轉移到其它地方。
這裡,最終配置結果為:各節點除在本地生成歸檔日志外,另外發送歸檔日志到另一個節點上,實現日志的交叉歸檔。
環境介紹
操作系統:Oracle Linux Server release 6.5
日志源庫:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0
配置新的連接服務
修改兩個節點的$ORACLE_HOME/network/admin/tnsname.ora文件,添加新的連接服務,分別指到對方。
節點1,RAC 1添加archive2服務名:
ARCHIVE2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
(INSTANCE_NAME = orcl2)
)
)
節點2,RAC 2添加archive2服務名:
ARCHIVE2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
(INSTANCE_NAME = orcl2)
)
)
可通過tnsping archive2來測試配置結果。
修改歸檔路徑
首先規劃好歸檔的空間,可通過NFS方式遠程掛載。這裡創建目錄:/app/archivelog用於歸檔,兩個節點上都創建並修改用戶及組。
查看現有歸檔情況:
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /+DATA
Oldest online log sequence 35
Next log sequence to archive 36
Current log sequence 36
在線修改歸檔路徑,RAC1上:
SQL> alter database set log_archive_dest_1=’location=/app/archivelog’ sid=’orcl1’;
System altered.
SQL> alter database set log_archive_dest_2=’service=archive2’ sid=’orcl1’;
System altered.
RAC2上修改:
SQL> alter database set log_archive_dest_1=’location=/app/archivelog’ sid=’orcl2’;
System altered.
SQL> alter database set log_archive_dest_2=’service=archive2’ sid=’orcl2’;
System altered.
檢查修改結果:
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /app/archivelog
Oldest online log sequence 37
Next log sequence to archive 38
Current log sequence 38
SQL> show parameter log_archive_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string
log_archive_dest_1 string location=/app/archivelog
log_archive_dest_2 string service=ARCHIVE2
測試結果
兩邊多切換幾次日志,然後檢查日志的歸檔情況,可以看出,日志成功歸檔到兩個地方,其中dest_2即另一個節點上,也可以看到歸檔的日志:
SQL> select inst_id,recid,dest_id,name from gv$archived_log where sequence#=42;
INST_ID RECID DEST_ID NAME
---------- ---------- ---------- ----------------------------------------
1 113 2 /app/archivelog/1_42_880188790.dbf
1 114 1 /app/archivelog/1_42_880188790.dbf
1 121 2 /app/archivelog/2_42_880188790.dbf
1 122 1 /app/archivelog/2_42_880188790.dbf
1 123 2 ARCHIVE2
到操作系統查看實際生成情況:
[root@rac1 archivelog]# ll
total 51652
-rw-r----- 1 oracle dba 43008 Aug 22 14:50 1_40_880188790.dbf
-rw-r----- 1 oracle dba 93184 Aug 22 14:53 1_41_880188790.dbf
-rw-r----- 1 oracle dba 61440 Aug 22 14:55 1_42_880188790.dbf
-rw-r----- 1 oracle dba 24064 Aug 22 14:56 1_43_880188790.dbf
-rw-r----- 1 oracle dba 47104 Aug 22 14:57 1_44_880188790.dbf
-rw-r----- 1 oracle dba 2640896 Aug 22 15:24 1_45_880188790.dbf
-rw-r----- 1 oracle dba 45600256 Aug 23 04:00 1_46_880188790.dbf
-rw-r----- 1 oracle dba 348672 Aug 23 04:08 1_47_880188790.dbf
-rw-r----- 1 oracle dba 154624 Aug 22 14:52 2_38_880188790.dbf
-rw-r----- 1 oracle dba 4096 Aug 22 14:52 2_39_880188790.dbf
-rw-r----- 1 oracle dba 39424 Aug 22 14:53 2_40_880188790.dbf
-rw-r----- 1 oracle dba 95744 Aug 22 14:56 2_41_880188790.dbf
-rw-r----- 1 oracle dba 17408 Aug 22 14:56 2_42_880188790.dbf
-rw-r----- 1 oracle dba 31744 Aug 22 14:57 2_43_880188790.dbf
-rw-r----- 1 oracle dba 56832 Aug 22 14:59 2_44_880188790.db