Oracle 11g Dataguard環境下資料檔案、日誌檔案管理(下)
下面我們討論redo log的情況。
3、online redo log情況——Primary端
相對於data file,online redo log的情況就略有不同。我們在實際運維環境中可能進行online redo log的調整,調整的出發點常常是從效能和可用性兩個出發點。注意:online redo log是當前資料庫生成的操作,而且是資料庫“自己”生成的。在standby端的online redo log,在redo apply過程中原則上是不會使用的。
從效能上,過小的日誌和過少的日誌組常常引起日誌相關的效能問題。在高redo log生成的場景下,無論是dbwr還是arch,可能在日誌切換覆蓋過程中被多次強制啟動,如果IO效率較差,可能還會引起資料庫整體的等待現象。可用性方面主要體現在日誌組成員上,控制檔案和online redo log是Oracle中採用映象冗餘進行管理的兩類檔案。在相同的日誌組中,我們建立多個member物件,目的是為了分散在多個儲存位置(磁碟),來防止單一日誌檔案損壞造成的故障。
我們先在Primary上進行日誌操作實驗。建立一個新的日誌組。
--以OMF方式建立檔案
SQL> alter database add logfile group 7 size 10m;
Database altered
建立成功:
SQL> select group#, type, member from v$logfile;
GROUP# TYPE MEMBER
---------- ------- --------------------------------------------------------------------------------
3 ONLINE /u01/app/oradata/ORA11G/onlinelog/o1_mf_3_9mnjx4n0_.log
(篇幅原因,有省略……)
7 ONLINE /u01/app/oradata/ORA11G/onlinelog/o1_mf_7_9pclt1jy_.log
7 ONLINE /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_7_9pclt1lt_.log
14 rows selected
但是,在standby端,是不會和datafile一樣建立出來的。standby端依然保持三個日誌組。
SQL> select group#, sequence#, status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 25 CLEARING
2 26 CLEARING
3 27 CURRENT
注意:DG環境下,online redo log的狀態和普通單例項有一些差異。由於online redo log在standby狀態下是沒有資料寫入的。所以有current和clearing狀態。
當前primary端,日誌組數為4。
SQL> select group#, status from v$log;
GROUP# STATUS
---------- ----------------
1 INACTIVE
2 INACTIVE
3 CURRENT
7 UNUSED
對於非current、active的日誌組,是可以刪除的。這點和單例項沒有區別。
SQL> alter database drop logfile group 1;
Database altered
SQL> select group#, status from v$log;
GROUP# STATUS
---------- ----------------
2 INACTIVE
3 CURRENT
7 UNUSED
重新新增回日誌組1。
SQL> alter database add logfile group 1 size 100m;
Database altered
SQL> select group#, status from v$log;
GROUP# STATUS
---------- ----------------
1 UNUSED
2 INACTIVE
3 CURRENT
7 UNUSED
同樣standby端是沒有什麼反映的。
4、online redo log——standby端
相對於Primary端而言,standby端online redo log管理相對比較複雜。具體可以劃分為增加add、刪除drop和同步sync三種。
注意:在standby進行redo apply的過程中,standby端對應的online redo log其實是沒有用處的,也沒有起到作用。進行調整的目的只在於切換成Primary之後的效能問題。
首先是新增redo log group。
確保引數standby_file_management狀態,和當前日誌狀態。
SQL> show parameter standby_file_management
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string AUTO
SQL> select group#, sequence#, status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 25 CLEARING
2 26 CLEARING
3 27 CURRENT
直接新增是不允許的。
SQL> alter database add logfile group 7 size 10m;
alter database add logfile group 7 size 10m
ORA-01156: 進行中的恢復或閃回可能需要訪問檔案
首先要停止redo apply過程,解除standby_file_management引數限制。
--新增過程
SQL> alter database recover managed standby database cancel;
Database altered
SQL> alter system set standby_file_management=manual;
System altered
之後再進行新增,就可以成功。但是注意將引數置回。
SQL> alter database add logfile group 7 size 10m;
Database altered
SQL> alter system set standby_file_management=auto;
System altered
SQL> select group#, sequence#, status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 25 CLEARING
2 26 CLEARING
3 27 CURRENT
7 0 UNUSED
確認檔案建立。
SQL> select group#, type, member from v$logfile;
GROUP# TYPE MEMBER
---------- ------- --------------------------------------------------------------------------------
(篇幅原因,有省略……)
6 STANDBY /u01/app/fast_recovery_area/ORA11GSY/onlinelog/o1_mf_6_9ndhpfvo_.log
7 ONLINE /u01/app/oradata/ORA11GSY/onlinelog/o1_mf_7_9pcnkosf_.log
7 ONLINE /u01/app/fast_recovery_area/ORA11GSY/onlinelog/o1_mf_7_9pcnkotx_.log
14 rows selected
最後啟動apply過程。
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered
下面是drop redo log的實驗。
SQL> select group#, sequence#, status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 25 CLEARING
2 26 CLEARING
3 27 CURRENT
7 0 UNUSED
刪除日誌情況比較複雜。和單例項的情況一樣,需要取決於日誌組當前狀態。如果狀態是current或者current_clearing狀態,是不允許刪除的。也不允許進行switch logfile操作。
SQL> alter system switch logfile;
alter system switch logfile
ORA-16000: 開啟資料庫以進行只讀訪問
我們進行的drop操作只能針對非current型別的日誌,如果確實需要刪除current日誌,則需要參考sync同步步驟。
首先取消redo log apply過程,修改自動管理引數。
SQL> alter database recover managed standby database cancel;
Database altered
SQL> alter system set standby_file_management=manual;
System altered
清理刪除資料庫日誌組。
SQL> alter database clear logfile group 7; --不可缺少步驟
Database altered
SQL> alter database drop logfile group 7;
Database altered
SQL> alter system set standby_file_management=auto;
System altered
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered
當前日誌組:
SQL> select group#, sequence#, status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 25 CLEARING
2 26 CLEARING
3 27 CURRENT
最後我們聊聊sync同步日誌組的問題。同步日誌組就是模擬DG搭建步驟,將primary上的日誌結構複製到standby端。此時Primary端日誌組結構如下:
SQL> select group#, status from v$log;
GROUP# STATUS
---------- ----------------
1 UNUSED
2 INACTIVE
3 CURRENT
7 UNUSED
首先需要將standby完全關閉。
[oracle@SimpleLinux trace]$ export ORACLE_SID=ora11gsy
[oracle@SimpleLinux trace]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.4.0 Production on Sun May 4 14:15:52 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
到primary上構建standby control file。傳統DG搭建過程是需要手工進行standby controlfile構建的。最新的duplicate from active 方法這個步驟是省略的。
[oracle@SimpleLinux ~]$ env | grep ORACLE_SID
ORACLE_SID=ora11g
[oracle@SimpleLinux ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.4.0 Production on Sun May 4 14:17:30 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> alter database create standby controlfile as '/tmp/stb.ctl';
Database altered.
對應目錄中找到檔案。
[oracle@SimpleLinux ~]$ cd /tmp
[oracle@SimpleLinux tmp]$ ls -l | grep ctl
-rw-r-----. 1 oracle oinstall 9781248 May 4 14:18 stb.ctl
將standby control file複製到standby端對應的目錄中。目錄位置和檔名稱可以檢視standby端的引數檔案。
SQL> show parameter control
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string /u01/app/oradata/ORA11GSY/controlfile/ora11gsby01.ctl
control_management_pack_access string DIAGNOSTIC+TUNING
[oracle@SimpleLinux tmp]$ cp stb.ctl /u01/app/oradata/ORA11GSY/controlfile/ora11gsby01.ctl
將standby資料庫進入mount狀態。
SQL> alter database mount;
Database altered.
判斷日誌情況:
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_RECOVERY_DEST_FILE
---------- ------- ------- -------------------------------------------------------------------------------- ---------------------
3 ONLINE /u01/app/oradata/ORA11GSY/onlinelog/o1_mf_3_9mnjx4n0_.log NO
3 ONLINE /u01/app/fast_recovery_area/ORA11GSY/onlinelog/o1_mf_3_9mnjx54c_.log NO
2 ONLINE /u01/app/oradata/ORA11GSY/onlinelog/o1_mf_2_9mnjwzpq_.log NO
2 ONLINE /u01/app/fast_recovery_area/ORA11GSY/onlinelog/o1_mf_2_9mnjx15f_.log NO
1 ONLINE /u01/app/oradata/ORA11GSY/onlinelog/o1_mf_1_9pcn18bg_.log NO
1 ONLINE /u01/app/fast_recovery_area/ORA11GSY/onlinelog/o1_mf_1_9pcn19z4_.log NO
4 STANDBY /u01/app/oradata/ORA11GSY/onlinelog/o1_mf_4_9nd01b56_.log NO
4 STANDBY /u01/app/fast_recovery_area/ORA11GSY/onlinelog/o1_mf_4_9nd01cpl_.log NO
5 STANDBY /u01/app/oradata/ORA11GSY/onlinelog/o1_mf_5_9nd04pps_.log NO
5 STANDBY /u01/app/fast_recovery_area/ORA11GSY/onlinelog/o1_mf_5_9nd04rpd_.log NO
6 STANDBY /u01/app/oradata/ORA11GSY/onlinelog/o1_mf_6_9nd04xjo_.log NO
6 STANDBY /u01/app/fast_recovery_area/ORA11GSY/onlinelog/o1_mf_6_9nd04yv7_.log NO
7 ONLINE /u01/app/oradata/ORA11GSY/onlinelog/o1_mf_7_9pclt1jy_.log NO
7 ONLINE /u01/app/fast_recovery_area/ORA11GSY/onlinelog/o1_mf_7_9pclt1lt_.log NO
14 rows selected
SQL> show parameter convert;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string ORA11G, ORA11GSY
log_file_name_convert string ORA11G, ORA11GSY
注意:如果是10.2.0.1版本下,在mount中還要對所有日誌組進行手工的clear動作。
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
啟動之後,open可以成功。
SQL> alter database open;
Database altered.
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
SQL> select group#, status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
2 UNUSED
3 UNUSED
7 UNUSED
實驗成功,四個online日誌組被同步。
5、結論
Oracle DG是目前比較常用的HA策略模式。在運維過程中,檔案建立和日誌維護是經常需要關注的問題。記錄下來,以備不時之需。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28211342/viewspace-2131243/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g Dataguard環境下資料檔案、日誌檔案管理(上)Oracle
- 【RAC】Oracle RAC叢集環境下日誌檔案結構Oracle
- oracle 日誌檔案管理Oracle
- oracle中移動控制檔案、資料檔案、日誌檔案Oracle
- oracle資料庫移動資料檔案、日誌檔案和控制檔案Oracle資料庫
- 在Oracle中移動資料檔案、控制檔案和日誌檔案Oracle
- 管理日誌檔案
- 丟失已歸檔日誌檔案下恢復資料庫資料庫
- window下刪除過舊的日誌檔案指令碼(如jboss的日誌檔案 資料庫的trace檔案)指令碼資料庫
- Unix環境和Windows環境下Oracle引數檔案位置:WindowsOracle
- 建立資料庫檔案-日誌檔案-次要資料庫檔案資料庫
- Oracle 11g alter日誌檔案位置Oracle
- 【Oracle】如何修改資料檔案和日誌檔案的路徑Oracle
- 分析Oracle資料庫日誌檔案(1)Oracle資料庫
- 分析Oracle資料庫日誌檔案(2)Oracle資料庫
- 分析Oracle資料庫日誌檔案(3)Oracle資料庫
- 【Oracle日誌】- 日誌檔案重建Oracle
- 日誌檔案和歸檔管理
- 日誌檔案的管理
- 【RAC】RAC環境下歸檔日誌格式約定
- ORACLE 11G RAC 增加日誌組及增大日誌檔案Oracle
- RMAN備份資料檔案+控制檔案+歸檔日誌
- 分析Oracle資料庫日誌檔案(三)EPOracle資料庫
- 分析Oracle資料庫日誌檔案(二)DOOracle資料庫
- 分析Oracle資料庫日誌檔案(一)HBOracle資料庫
- 分析Oracle資料庫日誌檔案(1)(轉)Oracle資料庫
- 分析Oracle資料庫日誌檔案(1) [轉]Oracle資料庫
- 談談Oracle日誌檔案的INVALID狀態(下)Oracle
- 對日誌檔案組和日誌檔案組成員的管理
- oracle 11g rac 新增重做日誌檔案Oracle
- sybase iq日誌檔案管理
- 資料庫引數檔案控制檔案日誌檔案資料檔案跟蹤檔案等8大檔案的字典資料庫
- RAC環境下單例項啟動Oracle資料庫重建控制檔案案例單例Oracle資料庫
- 開發環境下PP檔案的建立開發環境
- RAC環境下建立本地資料檔案的解決方法
- 域環境下如何保護重要資料檔案的安全(一)—EFS加密(下)加密
- Oracle日誌檔案常用操作Oracle
- oracle 關於-日誌檔案Oracle