Oracle11gR2 Active DataGuard
上午做了一個實驗,一起和大家分享下,我實驗使用的是Oracle 11R2 .2版本的。
採用RMAN做duplicate。
實驗實現的是物理備資料庫。
先簡單介紹下Oracle Data Guard概念,可以參考我上篇寫的《Oracle Data Guard 介紹 》
http://blog.itpub.net/12798004/viewspace-1144122/
Oracle Data Guard 確保企業資料的高可用性、資料保護以及災難恢復。Data Guard 提供
了一套全面的服務來建立、維護、管理和監控一個或多個備資料庫,使得生產資料
庫從災難和資料損壞中得以倖存。Data Guard 維護這些備資料庫作為生產資料庫的事務一致
性拷貝。然後,如果生產資料庫因為計劃的或計劃外的中斷而變得不可用。Data Guard 能切
換任何備資料為生產角色,從而最小化中斷引起的當機時間。Data Guard 能與傳統的備份、
恢復和cluster 技術一起使用,以提供高階別的資料保護和資料可用性。
使用 Data Guard,管理員能通過將資源密集的備份和報表操作轉移到備系統上,來提高
生產資料庫的效能。
Data Guard在11G中有了很大的改進,最典型的兩個新特性就是Active Data Guard和Advanced Compression引入。
Active Data Guard技術:oracle 10g的Physical Standby節點在進行Redo Apply過程中,是不能夠開啟資料庫讀取資料的。
如果需要進行讀取,則必須先將其終止Apply過程,才能支援讀取。Active Data Guard特性就是支援Standby節點在Apply的同時支援只讀資料庫。
Advanced Compression高階壓縮技術:遠端災備使用Data Guard的一種重要瓶頸就是傳輸頻寬限制。
所有的Redo Log資料都要通過Primary與Standby之間的連線都是通過Oracle Net 連進行傳遞的,Redo Log隨著業務的增加而加大。
Advanced Compression可以將Redo Log進行一定程度壓縮傳遞。
實驗步驟如下:
1.先配置Primary Database(主庫)
檢查是否歸檔資料庫
SQL>archive log list;
如果不是歸檔資料庫先設定歸檔資料庫
先停止主庫
SQL>shutdown immediate
啟動資料庫到mount狀態
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database open;
SQL>archive log list;
設定資料為強制寫日誌。
SQL>alter database force logging;
SQL>select force_logging from v$database;--檢視狀態
為了能實現主備庫雙向切換,配置SRL。
SQL> alter database add standby logfile '/u01/oracle/oradata/devdb/sredo01.log' size 10M;
檢視v$logfile(檔案的位置)、v$standby_log(standby log的資訊)來確認。
SQL> select group#,type,member from v$logfile;
SQL> select group#,dbid,thread#,sequence#,status from v$standby_log
新增多組日誌檔案:
SQL>alter database add standby logfile member '/u01/oracle/oradata/devdb/sredo02.log' to group 4;
SQL> select group#, member from v$logfile where type='STANDBY';
SQL> select group#, dbid, bytes from v$standby_log;
SRL檔案是為了解決下列兩個主要問題
資料保護 如果沒有使用SRL檔案,而且與資料庫的連線中斷,將無法保留傳入的重做資料--例如如果主資料庫出現故障,然後進行故障轉移,那麼連線中斷時正在傳送的資料就會丟失。 如果
將重做資料寫入SRL,故障轉移時已經永久儲存了重做資料並可供使用。
效能目標
當LNS連線到備用資料庫時,僅當在備用資料庫上的RFS程式建立和初始化了歸檔日誌,LNS/ARCH才能開始傳送重做資料。如果日誌檔案很大,這會導致暫停時間過長。 該事件在日誌切換時發
生,因而對主資料庫的吞吐量影響很大。
配置了SRL,實時應用成為可能。
2.配置Primary Database(主庫)SPFILE引數
2. 1.
log_archive_config
該引數通過DG_CONFIG 屬性羅列同一個Data Guard 中所有DB_UNIQUE_NAME(含primary db 及standby db),以逗號分隔
primary端和standby端相同
SQL>show parameter log_archive_config
SQL>alter system set log_archive_config='DG_CONFIG=(devdb,dgdevdb)' scope=spfile;
2.2
log_archive_dest_2
新增歸檔日誌傳輸位置,archive_dest引數包括兩種型別位置,location和service。
Location參數列示本地目錄歸檔日誌存放,而service表示通過Oracle NET服務傳輸過去。要實現Dataguard元件,需要將日誌指定到service裡面。
SQL> alter system set
log_archive_dest_2='SERVICE=dgdevdb valid_for=(online_logfiles,primary_role) db_unique_name=dgdevdb'
scope=spfile;
SQL> alter system set log_archive_dest_state_2=enable;
注意:Online_logfiles和Primary_role表示當前例項為Primary角色的時候,才傳遞日誌。
2.3
db_file_name_convert:主資料庫和備用資料庫的資料檔案轉換目錄對映(如果兩資料庫的目錄結構不一樣),如果有多個對映,逐一指明對映關係
格式:*.db_file_name_convert=主資料庫資料檔案目錄,備用資料庫資料檔案目錄
primary端(主庫進行設定,是為了在切換後主備角色互換):
SQL> alter system set db_file_name_convert='devdb','dgdevdb' scope=spfile;
log_file_name_convert:指明主資料庫和備用資料庫的log檔案轉換目錄對映
格式:*. log_file_name_convert=主資料庫log目錄,備用資料庫目錄
primary端(主庫進行設定,是為了在切換後主備角色互換):
SQL> alter system set log_file_name_convert='devdb','dgdevdb' scope=spfile;
2.4
standby_file_management引數,預設是manual。該引數用於控制Primary與Standby之間檔案建立的方式。標準的DG環境下,在Primary DB下新增資料檔案,會自動在Standby中增加檔案。
SQL> show parameter standby_file_management
SQL> alter system set standby_file_management=auto;
SQL> show parameter standby_file_management;
OK ,主資料庫相關的引數都已經配置完成,很簡單吧。就幾個引數。
下面來配置網路環境
配置網路Oracle Net內容
1.配置網路服務名:新增主庫,備庫的服務名
tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
DEVDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.128.120)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = DEVDB)
)
)
DGDEVDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.128.120)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = DGDEVDB)
)
)
2.新增靜態註冊。
listener.ora
# listener.ora Network Configuration File: /u01/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = devdb)
(ORACLE_HOME = /u01/oracle/product/11.2.0/db_1)
(SID_NAME = devdb)
)
(SID_DESC =
(GLOBAL_DBNAME =dgdevdb)
(ORACLE_HOME = /u01/oracle/product/11.2.0/db_1)
(SID_NAME = dgdevdb)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.128.120)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.128.120)(PORT = 1522))
)
)
ADR_BASE_LISTENER = /u01/oracle
密碼檔案設定,在使用RMAN複製資料庫時要使用管理員密碼,為了方便,保持密碼一樣,因此我拷貝了主庫的密碼檔案。
[oracle@pxboracle dbs]$ cp orapwdevdb orapwdgdevdb
[oracle@pxboracle dbs]$ ls -l | grep orapw
建立備庫需要的目錄
[oracle@pxboracle dbs]$mkdir -p /u01/oracle/admin/dgdevdb/adump
[oracle@pxboracle dbs]$mkdir -p /u01/oracle/flash_recovery_area/dgdevdb
[oracle@pxboracle dbs]$mkdir -p /u01/oracle/oradata/dgdevdb
[oracle@pxboracle dbs]$mkdir -p /u01/oracle/diag/rdbms/dgdevdb
到此為止,所有的引數檔案都已經配置完畢!
下面啟動備庫的例項
啟動standby例項
1.
在/u01/oracle/product/11.2.0/db_1/dbs下新建立一個initdgdevdb.ora 引數檔案
[oracle@pxboracle dbs]$ vi initdgdevdb.ora
db_name=dgdevdb
[oracle@pxboracle dbs]$ export ORACLE_SID=dgdevdb
[oracle@pxboracle dbs]$ sqlplus /nolog
SQL> conn / as sysdba
SQL> startup nomount pfile='/u01/oracle/product/11.2.0/db_1/dbs/initdgdevdb.ora';
[oracle@pxboracle dbs]$ ps -ef | grep pmon
注:在啟動備庫的例項過程中,我遇到了如下錯誤:
ORA-00845: MEMORY_TARGET not supported on this system
如果您也遇到了,請參考我寫的《ORA-00845: MEMORY_TARGET not supported on this system報錯解決 》
http://blog.itpub.net/12798004/viewspace-1144633/
RMAN進行duplicate操作
1.編寫複製資料庫指令碼
[oracle@pxboracle]# vi standby_sql
run {
duplicate target database for standby from active database
spfile
parameter_value_convert 'devdb','dgdevdb'
set db_unique_name='dgdevdb'
set control_files='/u01/oracle/oradata/dgdevdb/control01.ctl'
set db_file_name_convert='devdb','dgdevdb'
set log_file_name_convert='devdb','dgdevdb'
set log_archive_max_processes='5'
set fal_client='dgdevdb'
set fal_server='devdb'
set standby_file_management='AUTO'
set log_archive_config='dg_config=(devdb,dgdevdb)'
set log_archive_dest_2='service=devdb async valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=devdb';
}
[oracle@pxboracle]# chmod 755 standby_sql
啟動RMAN進行duplicate,連線target和auxiliary。
[oracle@pxboracle dbs]$ rman nocatalog
RMAN>connect target sys/devdb@devdb
RMAN>connect auxiliary sys/devdb@dgdevdb
RMAN>@/u01/standby_sql
出現 **end-of-file**
指令碼沒有報錯,執行成功。
對DG進行測試
主庫
由於我們修改主庫資料引數是通過命令來修改的,引數都是儲存在spfile中的(scope=spfile)。
因此需要重啟主庫使引數生效。
SQL> startup force (生產資料庫千萬別使用force重新啟動,一定要一致性關閉資料庫)
SQL> conn scott/tiger@devdb
SQL>create table dg_test as select * from user_tables;
SQL> select count(*) from dg_test;
SQL> atler system switch logfile;--手工切換日誌,讓日誌傳遞到備庫上。
備庫上:
SQL> conn / as sysdba
SQL> alter database recover managed standby database cancel;
SQL> alter database open;
SQL> conn scott/tiger@dgdevdb
SQL> select count(*) from dg_test;
向主庫資料表新增資料,進行修改。
主庫上執行
SQL> insert into dg_test select * from user_tables;
SQL> commit;
SQL> select count(*) from dg_test;
SQL>alter system switch logfile;
此時備(standby)庫,並沒有同步。因為我們剛剛關閉cancel同步。下面啟動同步過程,接受新的資料。
備庫上執行
SQL> alter database recover managed standby database using current logfile disconnect from session;
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ ONLY WITH APPLY
SQL> select count(*) from scott.dg_test;
同步成功!
注意:在11g中,READ ONLY WITH APPLY狀態表示在同步同時,也可以應用資料庫的Redo Log。如果是之前的版本,備庫需要恢復到mount狀態。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12798004/viewspace-1144677/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Trigger引起的active dataguard 報error ORA-16191Error
- Oracle 19C CBD Active DataGuard Standby passwd file 注意事項 ORA-01017Oracle
- [Active Learning] Multi-Criteria-based Active Learning
- 【DATAGUARD】Oracle Dataguard nologging 塊修復Oracle
- 【Dataguard】DataGuard運維注意事項運維
- spring.profiles.active=@profiles.active@的含義Spring
- Oracle 11.2.0.4 physical dataguard和snapshot dataguard切換Oracle
- 【DATAGUARD】Oracle Dataguard體系架構詳解Oracle架構
- 【DATAGUARD】Dataguard遠端同步配置最佳實踐
- Active Record Associations
- 【DATAGUARD】Oracle19c dataguard新特性及部署Oracle
- 【DATAGUARD】Oracle Dataguard物理備庫切換最佳實踐(sqlplus)OracleSQL
- 【Dataguard】Oracle多租戶環境對Dataguard的影響Oracle
- RAC+ASM+DATAGUARDASM
- oracle dataguard broker 配置Oracle
- mysqldump: Error: Binlogging on server not activeMySqlErrorServer
- Oracle11gR2 Smart Flash Cache測試說明Oracle
- [擴充套件] hieu-le active 判斷導航元素的 active 狀態套件
- DATAGUARD失敗切換
- DATAGUARD強行切換
- DATAGUARD手記(DUPLICATE)(四)
- Oracle dataguard failover 實戰OracleAI
- Oracle 單機配置DataGuardOracle
- CSS E:active 選擇器CSS
- WebKit Insie: Active 樣式表WebKit
- [ABC163E] Active Infants
- oracle11gR2 RAC更換網路卡實施方案Oracle
- 【DATAGUARD】Oracle21c Dataguard建立注意事項及主要引數介紹Oracle
- oracle 19c dataguard silent install (oracle 19c dataguard 靜默安裝)Oracle
- [20180521]dataguard 與 spm.txt
- dataguard ORA-17628 處理
- Oracle之11g DataGuardOracle
- 檢視V$DATAGUARD_STATS
- Oracle 11.2 DataGuard RAC To RAC搭建Oracle
- 【DATAGUARD】Oracle 通過Dataguard指定恢復時間用於找回丟失資料Oracle
- CSS 搞事技巧:hover+activeCSS
- Zabbix Agent active主動模式配置模式
- ORA-01153: an incompatible media recovery is active
- ORACLE11GR2 RAC解除安裝ASM例項步驟OracleASM