oracle dg物理和逻辑,Oracle DG 物理Standby环境搭建
Oracle Data Guard, 分邏輯Standby和物理Standby。 下面講的是物理Standby環境的搭建步驟。
一、啟用Force Logging
將Primary數據庫置為Force Logging模式。通過下列語句:
查看狀態:
SQL> SELECT DATABASE_ROLE,FORCE_LOGGING FROM V$DATABASE;
DATABASE_ROLE ? ?FORCE_LOGGING
---------------- ?---------------
PRIMARY ? ? ? ? ? NO
修改模式
SQL> alter database force logging;
Database altered.
取消Force logging 模式:
SQL> alter database no force logging;
Database altered.
說明:為什么要改成Force Logging
有一些DDL語句可以通過指定NOLOGGING子句的方式避免寫REDO(目的是提高速度,某些時候確實有效)。指定數據庫為Force Logging模式后,數據庫將會記錄除臨時表空間或臨時回滾段外所有的操作,而忽略類似NOLOGGING之類的指定參數。如果在執行Force Logging時有NOLOGGING之類的語句在執行,那么Force Logging會等待,直到這類語句全部執行。
Force Logging是作為固定參數保存在控制文件中,因此其不受重啟之類操作的影響(只執行一次即可),如果想取消,可以通過ALTER DATABASE NO FORCE LOGGING語句關閉強制記錄。
二、創建密鑰文件(如果不存在的話)
同一個Data Guard配置中所有數據庫必須都擁有獨立的密鑰文件,并且必須保證同一個Data Guard配置中,所有數據庫服務器的SYS用戶擁有相同密碼,以保證REDO數據的順利傳輸,因為REDO傳輸服務是通過認證的網絡會話來傳輸REDO數據,而會話使用包含在密鑰文件中的SYS用戶密碼來認證。
如果使用DBCA建庫則Oracle會自動創建密鑰文件,該文件默認路徑在%ORACLE_HOME%/database目錄下,如果在該目錄沒能找到對應的密鑰文件也沒關系,Oracle提供了一個創建密鑰文件的命令:orapwd,位于%ORACLE_HOME%/bin目錄下,該命令有兩種調用方式:帶參調用和不帶參調用。
不帶參調用時,會返回該命令的調用方式和參數形式,例如:
[oracle@localhost ~]$ orapwd
Usage: orapwd file= password= entries= force=
where
file - name of password file (mand),
password - password for SYS (mand),
entries - maximum number of distinct DBA and ? ? force - whether to overwrite existing file (opt),
OPERs (opt),
There are no spaces around the equal-to (=) character.
其中:
file:指定密鑰文件名稱和路徑。
password:SYS用戶密碼。
entries:指定該數據庫能夠擁有SYSDBA權限的用戶最大數。
force:如果文件存在是否覆蓋。
orapwd命令使用非常簡單,file和password為必填參數。
需要注意Windows平臺和Linux/UNIX平臺密鑰文件的命名規則并不相同:
Windows平臺命名規則:PWD[sid].ora
Linux/UNIX平臺命令規則:orapw[sid] ?-- 注意:沒有文件名,(大小寫敏感)
示例如下:
[oracle@localhost dbs]$ orapwd file=/u01/app/oracle/product/10.2.0/db_1/dbs/orapworcl password=admin entries=30
三、配置Standby Redologs
對于最大保護和最高可用性模式,建議為Standby數據庫配置Standby Redologs(不配置也可以,Oracle將在Standby數據庫端自動創建歸檔文件,并虛擬為一組Standby Redologs),并使用LGWR SYNC模式傳輸REDO數據。
1.關于Standby Redologs
Oracle建議DBA在創建Standby數據庫時,就考慮Standby Redologs配置的問題。Standby Redologs與Online Redologs非常類似,應該說兩者只是服務對象不同,其他參數屬性,甚至操作的命令格式幾乎都一樣,DBA在設計Standby Redologs的時候完全可以借鑒創建Online Redologs的思路,如創建幾個文件組,每組多個文件冗余之類的。除些之外呢,Oracle提供了一些標準的建議,如下所示:
(1)確保Standby Redologs的文件大小與Primary數據庫Online Redologs文件大小相同。這個很好理解,就是為了接收和應用方便嘛。
(2)創建適當數目的日志組。一般而言,Standby Redologs日志組要比Primary數據庫的Online Redologs日志文件組數至少多一個。建議Standby Redologs日志組數量基于Primary數據庫的線程數來確定(這里的線程數可以理解為RAC環境中的節點數)。
有一個推薦的公式可供參考:(每線程的日志組數+1)×最大線程數。
例如Primary數據庫有兩個線程,每個線程分配兩組日志,則Standby日志組數建議為6組,使用這個公式可以降低Primary數據庫實例LGWR進程鎖住的可能性。
提 示: 邏輯Standby數據庫有可能需要視工作量,增加更多的Standby Redologs組(或增加歸檔進程),因為邏輯Standby數據庫有可能需要同時寫Online Redologs文件。
2.管理Standby Redologs
Standby Redologs的操作方式與Online Redologs幾乎一模一樣,只不過在創建或刪除時需要多指定一個Standby關鍵字。
查看redo log:
SQL> SELECT GROUP#,TYPE,MEMBER FROM V$LOGFILE;
GROUP# TYPE ? ?MEMBER
---------- ------- --------------------------------------------------
3 ONLINE ?/u01/app/oracle/oradata/orcl/redo03.log
2 ONLINE ?/u01/app/oracle/oradata/orcl/redo02.log
1 ONLINE ?/u01/app/oracle/oradata/orcl/redo01.log
添加一個新的Standby Redologs組(注意組號不要與當前存在的Online Redologs組重復),并為該組指定一個成員:
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/app/oracle/oradata/orcl/redo04.log') size 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/app/oracle/oradata/orcl/redo05.log') size 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/app/oracle/oradata/orcl/redo06.log') size 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/u01/app/oracle/oradata/orcl/redo07.log') size 50M;
刪除Standby Redologs組也同樣簡單:
SQL> ALTER DATABASE DROP STANDBY LOGFILE GROUP 4;
可以通過動態性能視圖V$LOGFILE查看當前數據庫中創建的Standby Redologs,例如:
SQL> SELECT GROUP#,TYPE,MEMBER FROM V$LOGFILE;
GROUP# TYPE ? ?MEMBER
---------- ------- --------------------------------------------------
3 ONLINE ?/u01/app/oracle/oradata/orcl/redo03.log
2 ONLINE ?/u01/app/oracle/oradata/orcl/redo02.log
1 ONLINE ?/u01/app/oracle/oradata/orcl/redo01.log
4 STANDBY /u01/app/oracle/oradata/orcl/redo04.log
5 STANDBY /u01/app/oracle/oradata/orcl/redo05.log
6 STANDBY /u01/app/oracle/oradata/orcl/redo06.log
7 STANDBY /u01/app/oracle/oradata/orcl/redo07.log
提示:通過該視圖中的TYPE列區分該條記錄是Online Redologs或是Standby Redologs。
通過查看Standby Redologs的專用視圖V$STANDBY_LOG來查看當前數據庫中創建的Standby Redologs,如:
SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;
GROUP# ? ?THREAD# ?SEQUENCE# ARC STATUS
---------- ---------- ---------- --- ----------
4 ? ? ? ? ?0 ? ? ? ? ?0 YES UNASSIGNED
5 ? ? ? ? ?0 ? ? ? ? ?0 YES UNASSIGNED
6 ? ? ? ? ?0 ? ? ? ? ?0 YES UNASSIGNED
7 ? ? ? ? ?0 ? ? ? ? ?0 YES UNASSIGNED
從可靠性方面考慮,DG的設計初衷就是當發生故障時快速切換Primary和Standby的角色,以達到快速恢復應用訪問的目的。一旦發生切換,原Primary數據庫就變成了Standby數據庫,就得需要Standby Redologs,為了減少真正切換時應做的工作,建議在Primary數據庫也創建Standby Redologs,這樣即使發生切換,也不會影響Primary作為Standby身份的正常運行。
四、設置初始化參數
對于Primary數據庫,有幾個與角色相關的初始化參數需要進行設置,這些參數初始時有些用來控制REDO傳輸服務(即Primary數據庫生成的REDO數據傳給誰以及怎么傳),有些用來指定角色,還有幾個與Standby角色相關的初始化參數,也建議進行配置,以便switchover/failover操作后,Primary/Standby數據庫仍能正常工作,建議不管是Primary數據庫,還是Standby數據庫,對于角色相關的初始化參數都進行配置。
五、將Primary數據庫置于歸檔模式
要創建一個Data Guard環境,Primary數據庫必須處于歸檔模式。
對于非歸檔模式的數據庫該為歸檔模式,步驟如下:
1. SQL> alter system set log_archive_dest_1='location=/oracle/oracle10g/log/archive_log';
2.關閉數據庫
SQL> shutdown immediate
3.啟動數據mount狀態:
SQL> startup mount;
4、修改數據庫為歸檔模式:
SQL> alter database archivelog;
5、打開數據庫,查詢:
SQL> alter database open;
總結
以上是生活随笔為你收集整理的oracle dg物理和逻辑,Oracle DG 物理Standby环境搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php本地环境搭建软件下载,用EasyP
- 下一篇: oracle 1g apex030200