由于多個客戶幾次問到,RAC環(huán)境中,node2的歸檔日志,寫入到node1的archive路徑中。 這個問題導(dǎo)致一些客戶在使用OGG的情況下,有時無法正確讀取日志的問題。 那是什么原因?qū)е碌倪@個問題呢? 對此,進(jìn)行查找和測試。發(fā)現(xiàn)了下面的情況會導(dǎo)致archive log沒有記
由于多個客戶幾次問到,RAC環(huán)境中,node2的歸檔日志,寫入到node1的archive路徑中。
這個問題導(dǎo)致一些客戶在使用OGG的情況下,有時無法正確讀取日志的問題。
那是什么原因?qū)е碌倪@個問題呢?
對此,進(jìn)行查找和測試。發(fā)現(xiàn)了下面的情況會導(dǎo)致archive log沒有記錄到正確的節(jié)點位置。
測試環(huán)境
Linux + 11.2.0.4 RAC node1 ALTER SYSTEM SET log_archive_dest_1='location=/home/oracle/archive_log/ valid_for=(all_logfiles,all_roles)' sid='orcl1' scope=spfile; node2 ALTER SYSTEM SET log_archive_dest_1='location=/home/oracle/archive_log/ valid_for=(all_logfiles,all_roles)' sid='orcl2' scope=spfile;
情況1
在node2 instance關(guān)閉的情況下,node1上執(zhí)行alter system archive log current;
會將node2的archive log寫入到node1的路徑
-----------10.2.0.5版本測試--------------
注:nascds14是節(jié)點1,nascds15是節(jié)點2
[oracle@nascds14 ~]$ ls -l /u01/app/database/dbs/ -rw-r----- 1 oracle oinstall 9897472 Dec 1 09:47 arch1_66_827745338.dbf -rw-r----- 1 oracle oinstall 2048 Dec 1 09:47 arch1_67_827745338.dbf -rw-r----- 1 oracle oinstall 1024 Dec 1 09:50 arch1_68_827745338.dbf [oracle@nascds14 ~]$ sqlplus / as sysdba SQL> alter system archive log current; System altered. [oracle@nascds14 ~]$ ls -l /u01/app/database/dbs/ -rw-r----- 1 oracle oinstall 9897472 Dec 1 09:47 arch1_66_827745338.dbf -rw-r----- 1 oracle oinstall 2048 Dec 1 09:47 arch1_67_827745338.dbf -rw-r----- 1 oracle oinstall 1024 Dec 1 09:50 arch1_68_827745338.dbf -rw-r----- 1 oracle oinstall 11776 Dec 1 09:55 arch1_69_827745338.dbf -rw-r----- 1 oracle oinstall 128512 Dec 1 09:55 arch2_101_827745338.dbf <<<<<<<<<<<<<shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. [oracle@nascds15 ~]$ ls -l /u01/app/database/dbs/ -rw-r----- 1 oracle oinstall 6144 Dec 1 09:50 arch2_100_827745338.dbf -rw-r----- 1 oracle oinstall 17412608 Dec 1 09:46 arch2_98_827745338.dbf -rw-r----- 1 oracle oinstall 1536 Dec 1 09:47 arch2_99_827745338.dbf [oracle@nascds15 ~]$ ls -l /u01/app/database/dbs/ -rw-r----- 1 oracle oinstall 6144 Dec 1 09:50 arch2_100_827745338.dbf -rw-r----- 1 oracle oinstall 17412608 Dec 1 09:46 arch2_98_827745338.dbf -rw-r----- 1 oracle oinstall 1536 Dec 1 09:47 arch2_99_827745338.dbf
-----------11.2.0.4版本測試--------------
node2 instance關(guān)閉,日志產(chǎn)生結(jié)果
在node2 instance關(guān)閉的情況下,node1上執(zhí)行alter system archive log current;
同樣會將node2的archive log寫入到node1的路徑
---node2---
SQL> create table test1 as select * from dba_users; create table test1 as select * from dba_users; SQL> shutdown abort shutdown abort ORACLE instance shut down.
---node1---
SQL> alter system archive log current;
---node1---
[oracle@node111g archive_log]$ ls -al 2* -rw------- 1 oracle asmadmin 148992 12月 19 11:22 2_176_864642458.dbf -rw------- 1 oracle asmadmin 1024 12月 19 11:22 2_177_864642458.dbf <<<<<<<<<<<<<
下面是測試結(jié)果截圖,同時開啟4個窗口
情景2
如果node2正常運(yùn)行情況下,是不是也會出現(xiàn)日志寫入到node1的情況呢?
經(jīng)過多次測試,alter system archive log current;
node1和node2都是正常的將各自的archive log寫入到各自正確的位置。
這時考慮,如果給node2點運(yùn)行壓力呢?
在node2上運(yùn)行下面腳本,讓node2處于高CPU運(yùn)行狀態(tài)
DECLARE n NUMBER; BEGIN WHILE (TRUE) LOOP n:= dbms_random.random(); END LOOP; END;
在CPU使用率超過90%的情況下,在node1上多次執(zhí)行alter system archive log current;
就會出現(xiàn)node2的歸檔,寫入node1的路徑的情況
node1查看archive log生成結(jié)果
[oracle@node111g archive_log]$ pwd /home/oracle/archive_log [oracle@node111g archive_log]$ ls -al 2* -rw------- 1 oracle asmadmin 1024 12月 19 10:32 2_103_864642458.dbf -rw------- 1 oracle asmadmin 1024 12月 19 10:37 2_131_864642458.dbf
node2查看archive log生成結(jié)果
[oracle@node211g archive_log]$ ls -ctrl -rw------- 1 oracle asmadmin 1024 12月 19 10:32 2_101_864642458.dbf -rw------- 1 oracle asmadmin 1024 12月 19 10:32 2_102_864642458.dbf -rw------- 1 oracle asmadmin 1024 12月 19 10:32 2_104_864642458.dbf <<<<<<<<<<<<<同時開啟4個窗口,開始測試
總結(jié),首先要先了解 alter system switch logfile;和alter system archive log current;的區(qū)別。
主要的區(qū)別在于:
ALTER SYSTEM SWITCH LOGFILE對單實例數(shù)據(jù)庫或RAC中的當(dāng)前實例執(zhí)行日志切換;
而ALTER SYSTEM ARCHIVE LOG CURRENT會對數(shù)據(jù)庫中的所有實例執(zhí)行日志切換。
所以在使用ALTER SYSTEM SWITCH LOGFILE的情況下,就不會遇到archive寫錯節(jié)點的問題。
RAC中archive log寫錯節(jié)點的問題,在使用日志挖掘的應(yīng)用的時候,可能會遇到問題,如OGG。
這里,我們可以理解為,這是一個oracle expected behaviour。
那么,我們需要考慮下面幾種情況來規(guī)避這個問題
1. 和應(yīng)用的開發(fā)人員討論,是不是一定要使用ALTER SYSTEM ARCHIVE LOG CURRENT。
2. 讓兩個節(jié)點的log_archive_dest_*是可以互相訪問的,這樣在日志挖掘的情況下,control file會告訴你去哪里找到需要的日志,并且可以讀取,就不會報錯。
3. 將RAC中的多個節(jié)點的歸檔路徑設(shè)置為相同的共享路徑下,也就沒有這些問題了。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com