OGG學習筆記04-OGG復制部署快速參考


OGG學習筆記04-OGG復制部署快速參考
源端:Oracle 10.2.0.5 RAC + ASM
節點1 Public IP地址:192.168.1.27

目標端:Oracle 10.2.0.5
IP地址:192.168.1.30

操作目標:將源端數據庫業務用戶jy下兩張表ogg同步到目標端數據庫業務用戶ludan下。
在源端配置OGG extract、data pump進程;數據初始化;目標端配置OGG replicat進程。

本文假設兩端的OGG軟件和環境變量已配置完成,即操作系統ogg用戶登陸系統,確認ggsci可以正常使用,mgr管理進程正常啟動,dblogin可以正常登陸到數據庫。
本文意義:OGG復制快速參考,補充一些前面未提及的ogg相關知識點。

1. 配置源端OGG

這一步主要做的工作: 在源端數據庫上創建一個單獨的數據庫用戶; 開啟數據庫最小附加日志,需要同步的表開啟詳細附加日志; 配置好extract進程lxjyrac1; 配置好data pump進程lpjyrac1;

1.1 在源端數據庫上創建一個單獨的數據庫用戶

create user ggs_admin identified by ggs_admin;
grant dba to ggs_admin;

1.2 開啟數據庫最小附加日志,需要同步的表開啟詳細附加日志

--查看數據庫附加日志開啟狀態:
SQL> 
select SUPPLEMENTAL_LOG_DATA_MIN, SUPPLEMENTAL_LOG_DATA_PK, SUPPLEMENTAL_LOG_DATA_UI from v$database;

--數據庫級別開啟最小附加日志:
SQL> 
alter database add supplemental log data;

--表級別開啟詳細附加日志:
GGSCI (oradb27) > 
dblogin userid ggs_admin@racbeq, password ggs_admin
add trandata jy.t_second
add trandata jy.t_second_p

1.3 在源端配置extract進程
我這里將extract進程起名為:lxjyrac1

編輯lxjyrac1進程的配置文件:

GGSCI (oradb27) >
edit param lxjyrac1

--Local Extract lxjyrac1
--Author: Alfred Zhao
--
EXTRACT lxjyrac1
SETENV(NLS_LANG=american_america.ZHS16GBK)
SETENV(ORACLE_SID=jyrac1)
USERID ggs_admin, PASSWORD ggs_admin
--TRANLOGOPTIONS ASMUSER sys@asmbeq, ASMPASSWORD oracle
TRANLOGOPTIONS DBLOGREADER
EXTTRAIL ./dirdat/sa
TABLE JY.T_SECOND;
TABLE JY.T_SECOND_P;

當前數據庫版本是10.2.0.5 RAC + ASM,由於數據庫redo日志放在ASM上,所以extract進程需要配置TRANLOGOPTIONS選項,否則獲取不到數據庫日志。
上面的兩種方式任意選擇哪種都可以,使用“--” 注釋其中一種。

添加lxjyrac1進程:

GGSCI (oradb27) 1> add extract lxjyrac1, tranlog, begin now, threads 2
EXTRACT added.
GGSCI (oradb27) 2> add exttrail ./dirdat/sa, extract lxjyrac1, megabytes 50
EXTTRAIL added. 

1.4 在源端配置datapump進程
我這里將datapump進程起名為:lpjyrac1

編輯lpjyrac1進程的配置文件:

GGSCI (oradb27) >
edit param lpjyrac1

--Local datapump lpjyrac1
--Author: Alfred Zhao
--
EXTRACT lpjyrac1
PASSTHRU
RMTHOST 192.168.1.30, MGRPORT 7777
RMTTRAIL ./dirdat/ta
TABLE JY.T_SECOND;
TABLE JY.T_SECOND_P;

添加lpjyrac1進程(本地datapump進程):

GGSCI (oradb27) 1> add extract lpjyrac1, exttrailsource ./dirdat/sa, begin now
EXTRACT added.
GGSCI (oradb27) 2> ADD RMTTRAIL ./dirdat/ta, EXTRACT LPJYRAC1, MEGABYTES 50
RMTTRAIL added.

1.5 源端啟動所有進程
啟動extract進程lxjyrac1、datapump進程lpjyrac1:

GGSCI (oradb27) > 
start extract lxjyrac1
start extract lpjyrac1

2. 數據初始化

這一步主要做的工作: 源端需要同步的數據表導出; 目標端導入數據,完成初始化。

2.1 數據導出
導出業務用戶jy並把導出文件傳輸到目標數據庫所在主機:

[oracle@oradb27 ~]$ exp jy/jy file=exp_jy.dmp log=exp_jy.log
[oracle@oradb27 ~]$ scp exp_jy.dmp 192.168.1.30:/home/oracle/

2.2 數據導入
創建數據庫業務用戶ludan:

SQL>
create user ludan identified by ludan;
grant connect, resource to ludan;

imp 導入數據:

[oracle@oradb30 ~]$ imp ludan/ludan fromuser=jy touser=ludan file=exp_jy.dmp log=imp_jy.log ignore=y

3. 配置目標端OGG

這一步主要做的工作: 在目標端數據庫上創建一個單獨的數據庫用戶; 在目標端數據庫上創建checkpointtable;

3.1 在目標端數據庫上創建一個單獨的數據庫用戶

SQL>
create user ggt_admin identified by ggt_admin;
grant dba to ggt_admin;

3.2 在目標端數據庫上創建checkpointtable
注意配置文件GLOBALS是位於ogg當前目錄下的,確認內容正確配置了checkpointtable。
這里配置的checkpointtable名字為chkpt

GGSCI (oradb30) > 
edit param ./GLOBALS

checkpointtable ggt_admin.chkpt

GGSCI (oradb30) > 
dblogin userid ggt_admin@ora10, password ggt_admin
add checkpointtable

3.3 在目標端創建replicat進程
我這里將replicat進程起名為:rjyrac1

GGSCI (oradb30) >
edit param rjyrac1

--replicat rjyrac1
--Author: Alfred Zhao
--
REPLICAT rjyrac1
SETENV (ORACLE_SID=ora10)
USERID ggt_admin, PASSWORD ggt_admin
DISCARDFILE ./dirrpt/rjy1.dsc, PURGE
HandleCollisions
AssumeTargetDefs
Map jy.*,Target ludan.*;

添加rjyrac1進程(replicat進程):

GGSCI (oradb30) > 
add replicat rjyrac1, exttrail ./dirdat/ta

3.4 目標端啟動進程
啟動replicat進程rjyrac1:

GGSCI (oradb30) > 
start replicat rjyrac1

4. ogg相關知識點補充

4.1 OGG中ASM連接問題
ogg連接到ASM實例的連接有三種方式:Net8、BEQ、DBLOGREADER,能否使用DBLOGREADER取決於使用的數據庫版本。

上文在lxjyrac1進程配置中,如果選擇BEQ這種連接方式
TRANLOGOPTIONS ASMUSER sys@asmbeq, ASMPASSWORD oracle
那么,源數據庫對應的“tnsnames.ora”配置中別名"asmbeq"的內容:

ASMBEQ =
  (DESCRIPTION =
    (ADDRESS = 
      (PROTOCOL = BEQ)
      (PROGRAM = /u01/app/oracle/product/10.2.0.5/dbhome_1/bin/oracle)
      (ARGV0 = oracle+ASM1)    
      (ARGS = '(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=BEQ)))')
      (ENVS = 'ORACLE_HOME=/u01/app/oracle/product/10.2.0.5/dbhome_1,ORACLE_SID=+ASM1')
    )
    (CONNECT_DATA =
      (SERVICE_NAME = +ASM)
      (INSTANCE_NAME = +ASM1)
    )
  )

目標數據庫“tnsnames.ora”配置中別名"ora10"的內容,Net8連接方式類似這種配置:

ORA10 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.30)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ora10)
    )
  )

使用DBLOGREADER相當於直接利用Oracle中的一個ASM API去訪問文件,不需要配置TNS,也不需要用戶名密碼,是最簡單的方式,但是需要要求數據庫版本是“11.2.0.2”或“10.2.0.5”及以后的版本。

--extract參數中加入:
TranLogOptions DBLOGREADER

本文環境“10.2.0.5 RAC + ASM”,就是使用的這種最簡單的方式,經測試可用。

4.2 OGG中的復雜結構運維經驗
實際上無論是OGG的雙向復制、廣播復制、級聯復制,都是由兩個或多個單向復制組成的,難度相比單純的單向復制並沒有增長多少,只是維護的工作量多了,建議規范好各進程的名字,有助於提高管理效率。

GGSCI (oradb30) 1> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     RUNNING     LPJY1       00:00:00      00:00:04    
EXTRACT     RUNNING     LPJY2       00:00:00      00:00:04    
EXTRACT     RUNNING     LXJY1       00:00:00      00:00:07    
REPLICAT    RUNNING     RJYRAC1     00:00:00      00:00:06    

可以看到本次作為目標端的oradb30。一眼就可以判斷出,跟本次部署有關的只有RJYRAC1進程,其他的LXJY1,LPJY1,LPJY2進程,顯然是其他OGG配置,oradb30作為源端端一些進程。
如果根據名字不能完全弄清楚,可以“view param 名字”看具體的配置文件,即可一目了然,比如查看進程lxjy1配置文件內容:

GGSCI (oradb30) 3> view param lxjy1

--Local Extract lxjy1
--Author: Alfred Zhao
--
EXTRACT lxjy1
SETENV(NLS_LANG=american_america.ZHS16GBK)
SETENV(ORACLE_SID=ora10)
USERID ggs_admin, PASSWORD ggs_admin
EXTTRAIL ./dirdat/sa
TABLE JY.T_SECOND;
TABLE JY.T_SECOND_P;

至此,OGG學習筆記基礎部分的學習就已經結束。

OGG學習筆記基礎篇:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM