手把手教你安裝和配置OGG,並實現單向DML複製技術
說明:
源端:
作業系統:oracle_linux_5.6_32
資料庫:oracle_10.2.0.1_32
goldengate:for_10g_x86
目標端:
作業系統:oracle_linux_5.6_32
資料庫:oracle_10.2.0.1_32
goldengate:for_10g_x86
注意:
本實驗是模擬在同平臺同版本上面安裝和配置OGG,並實現簡單的DML複製,至於複雜的其他方面
希望大家能自己多多實驗。
作者:
姓名:oracle_zsx。
QQ:1468815296。
配置步驟:
1、
檢查源端和目標端正確的IP解析:
源端:
[root@gg1 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.1.71 gg1
目標端:
[root@gg2 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.1.72 gg2
2、
設定LD_LIBRARY_PATH,為了安裝OGG所用的動態連結庫。如果沒有配置這個路徑的話,在安裝OGG的過程
中會報找不到動態連結庫的錯誤,使用者可以自己嘗試一下。
源端:
[root@gg1 ~]# su - oracle
[oracle@gg1 ~]$ vi .bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export SQLPATH=/home/oracle/labs
export PATH=$ORACLE_HOME/bin:$PATH
export nls_lang=american_america.zhs16gbk
export ORACLE_SID=ogg
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
[oracle@gg1 ~]$ source .bash_profile
目標端:
[root@gg2 ~]# su - oracle
[oracle@gg2 ~]$ vi .bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export SQLPATH=/home/oracle/labs
export PATH=$ORACLE_HOME/bin:$PATH
export nls_lang=american_america.zhs16gbk
export ORACLE_SID=ogg
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
[oracle@gg2 ~]$ source .bash_profile
3、
在源端建立專用的表空間、schema、並授權。
create tablespace goldengate datafile '/u01/app/oracle/oradata/ogg/goldengate01.dbf' size 100m autoextend on;
create user goldengate identified by goldengate default tablespace goldengate temporary tablespace temp;
grant connect to goldengate;
grant alter any table to goldengate;
grant alter session to goldengate;
grant create session to goldengate;
grant flashback any table to goldengate;
grant select any dictionary to goldengate;
grant select any table to goldengate;
grant resource to goldengate;
grant select any transaction to goldengate;
4、
檢查源端資料庫是否在歸檔模式,強烈建議在歸檔模式。
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /arch
Oldest online log sequence 1
Next log sequence to archive 3
Current log sequence 3
5、
源端:
新增附加日誌來唯一標識一行記錄,要在資料庫級別開啟最小開關。為了減少整個資料庫新增附加日誌,以及減少歸檔量,
goldengate建議複製哪些物件,就新增哪些表的附加日誌(我們到時候是拿hr使用者下的表來實驗)。
檢查:
SQL> select supplemental_log_data_min from v$database;
SUPPLEME
--------
NO
開啟:
SQL> alter database add supplemental log data;
Database altered.
再次檢視:
SQL> select supplemental_log_data_min from v$database;
SUPPLEME
--------
YES
切換日誌組,使附加日誌開關生效。
SQL> alter system switch logfile;
System altered.
解釋:
在正常情況下,oracle是用rowid來唯一標示一行記錄的,但goldengate這裡不夠,需要開啟附加日誌。
6、
我們先安裝和配置goldengate,安裝比較簡單,解壓之後下一步測試。
[root@gg1 ogg]# unzip ogg112101_fbo_ggs_Linux_x86_ora10g_32bit.zip
[root@gg1 ogg]# tar -xvf fbo_ggs_Linux_x86_ora10g_32bit.tar
[root@gg1 ogg]# chown -R oracle:oinstall /ogg/
注意:
自己要下載正確的軟體。
7、
測試安裝成功,只需進入命令列,就表明安裝是成功的。
[oracle@gg1 ogg]$ ./ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x86, 32bit (optimized), Oracle 10g on Apr 23 2012 07:06:02
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
GGSCI (gg1) 1>
GGSCI (gg1) 1> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER STOPPED
注意:
表示安裝成功。
8、
在目標端也安裝成功。
[root@gg2 ogg]# unzip ogg112101_fbo_ggs_Linux_x86_ora10g_32bit.zip
[root@gg2 ogg]# tar -xvf fbo_ggs_Linux_x86_ora10g_32bit.tar
[root@gg2 ogg]# chown -R oracle:oinstall /ogg/
[oracle@gg2 ogg]$ ./ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x86, 32bit (optimized), Oracle 10g on Apr 23 2012 07:06:02
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
GGSCI (gg2) 1> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER STOPPED
9、
配置源端和目標端的管理程式。
源端:
GGSCI (gg1) 2> create subdirs
GGSCI (gg1) 3> edit params mgr
port 7839
DYNAMICPORTLIST 7840-7850
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
GGSCI (gg1) 6> start mgr
Manager started.
GGSCI (gg1) 7> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
GGSCI (gg1) 8> info mgr
Manager is running (IP port gg1.7839).
目標端:
GGSCI (gg2) 2> create subdirs
GGSCI (gg2) 3> edit params mgr
port 7839
DYNAMICPORTLIST 7840-7850
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
啟動配置的管理程式
GGSCI (gg2) 4> start mgr
Manager started.
檢視是否正在執行的管理程式,如果不是running請檢視自己的原因。
GGSCI (gg2) 5> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
檢視剛剛設定的埠號有沒有問題
GGSCI (gg2) 6> info mgr
Manager is running (IP port gg2.7839).
引數分析:
第一行表示管理程式的埠號。
第二行是接收程式使用的是動態介面列表的埠。
其他引數請大家自己有興趣分析。
10、
源端:
檢視要複製的表的日誌資訊是完整的,確保是logging。把nologing變成logging。
select owner||'.'||table_name table_name,logging
from dba_tables
where owner='HR';
TABLE_NAME LOG
------------------------------------------------------------- ---
HR.REGIONS NO
HR.LOCATIONS NO
HR.DEPARTMENTS NO
HR.JOBS NO
HR.EMPLOYEES NO
HR.JOB_HISTORY NO
HR.COUNTRIES
SQL> alter table HR.REGIONS logging;
Table altered.
SQL> alter table HR.LOCATIONS logging;
Table altered.
SQL> alter table HR.DEPARTMENTS logging;
Table altered.
SQL> alter table HR.JOBS logging;
Table altered.
SQL> alter table HR.EMPLOYEES logging;
Table altered.
SQL> alter table HR.JOB_HISTORY logging;
Table altered.
SQL> alter table HR.COUNTRIES logging;
Table altered.
11、
源端:
配置hr下面表的表級附加日誌。配置登陸使用者。並檢查日誌是否新增成功。
以goldengate這個schema登陸資料庫。
GGSCI (gg1) 10> dblogin userid goldengate, password goldengate
Successfully logged into database.
檢視:
GGSCI (gg1) 11> info trandata hr.*
Logging of supplemental redo log data is disabled for table HR.COUNTRIES.
Logging of supplemental redo log data is disabled for table HR.DEPARTMENTS.
Logging of supplemental redo log data is disabled for table HR.EMPLOYEES.
Logging of supplemental redo log data is disabled for table HR.JOBS.
Logging of supplemental redo log data is disabled for table HR.JOB_HISTORY.
Logging of supplemental redo log data is disabled for table HR.LOCATIONS.
Logging of supplemental redo log data is disabled for table HR.REGIONS.
注意:
發現是disable,還沒有新增成功,繼續下一步。
新增:
GGSCI (gg1) 12> add trandata hr.*
Logging of supplemental redo data enabled for table HR.COUNTRIES.
Logging of supplemental redo data enabled for table HR.DEPARTMENTS.
Logging of supplemental redo data enabled for table HR.EMPLOYEES.
Logging of supplemental redo data enabled for table HR.JOBS.
Logging of supplemental redo data enabled for table HR.JOB_HISTORY.
Logging of supplemental redo data enabled for table HR.LOCATIONS.
Logging of supplemental redo data enabled for table HR.REGIONS.
注意:
現在成功了,是enable的。
12、
配置源端的抓取程式。
GGSCI (gg1) 13> add extract ext_demo, tranlog, begin now, threads 1
EXTRACT added.
GGSCI (gg1) 14> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT STOPPED EXT_DEMO 00:00:00 00:00:09
引數分析:
tranlog:表示資料抓取的來源是資料庫的redo資料。
begin now:表示我們在啟動這個抓取程式的就去抓取資料。
threads 1:表示我們資料庫有多少個redo threads,單例項基本上是1或者不設,rac就自己設定了,
配置過RAC的基本都瞭解。
13、
新增源端的佇列檔案。
GGSCI (gg1) 15> add EXTTRAIL ./dirdat/r1, extract ext_demo,megabytes 100
EXTTRAIL added.
分析:
./dirdat:表示trail檔案的目錄
r1:trail檔案的字首
extract ext_demo:值指定給那個程式用的(ext_demo)。
megabytes 100:檔案大小是100m
14、
編輯我們剛剛在源端配置的抓取程式的引數:
GGSCI (gg1) 16> edit param ext_demo
EXTRACT ext_demo
setenv (ORACLE_SID=ogg)
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid goldengate,password goldengate
REPORTCOUNT EVERY 1 MINUTES, RATE
numfiles 5000
DISCARDFILE ./dirrpt/ext_demo.dsc,APPEND,MEGABYTES 1000
DISCARDROLLOVER AT 3:00
exttrail ./dirdat/r1,megabytes 100
dynamicresolution
TRANLOGOPTIONS EXCLUDEUSER goldengate
TRANLOGOPTIONS convertucs2clobs
TABLE HR.*;
分析:
setenv (ORACLE_SID=ogg):指定oracle的sid,單機環境下可以不設或者bashprofile檔案中設定了預設的
也可以不設,但是叢集環境就要指定了,這裡我們強烈建議指定。
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK):源端資料庫的字符集,一定要跟資料庫中匹配。
userid goldengate,password goldengate:告訴抓取程式是透過這個使用者登陸資料庫的。
exttrail ./dirdat/r1,megabytes 100:與我們上面配置抓取程式的設定要一致,路徑和大小嘛。
TABLE HR.*:最重要的,告訴抓取程式抓取的是哪些使用者哪些表的資料。
15、
啟動抓取程式:(確認自己的配置沒有問題,否則程式可能不是running)
GGSCI (gg1) 26> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT STOPPED EXT_DEMO 00:00:00 00:37:12
GGSCI (gg1) 27> start ext_demo
Sending START request to MANAGER ...
EXTRACT EXT_DEMO starting
GGSCI (gg1) 28> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT_DEMO 00:00:00 00:00:10
16、
配置datapump程式,將抓取資料傳到目標主機。負責TCPIP通訊。
GGSCI (gg1) 31> add extract dpe_demo, exttrailsource ./dirdat/r1
EXTRACT added.
輸出:目標主機怎麼寫,也是定義datapumo程式的輸出。
GGSCI (gg1) 33> add rmttrail ./dirdat/t1,EXTRACT dpe_demo,MEGABYTES 100
RMTTRAIL added.
分析:
exttrailsource:抓取程式的來源,因為這個程式不否則到資料庫中取抓取,所以抓取的來源
是透過抓取程式已經生成好的trail檔案中的內容。
17、
配置datapump程式引數:
GGSCI (gg1) 34> edit param dpe_demo
extract dpe_demo
dynamicresolution
passthru
rmthost 192.168.1.72, mgrport 7839, compress
rmttrail ./dirdat/t1
numfiles 5000
TABLE HR.*;
啟動,如果有問題,狀態不能為running,可以檢視相應的日誌在自己安裝的ogghome目錄下。
GGSCI (gg1) 37> start dpe_demo
Sending START request to MANAGER ...
EXTRACT DPE_DEMO starting
GGSCI (gg1) 38> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING DPE_DEMO 00:00:00 00:12:10
EXTRACT RUNNING EXT_DEMO 00:00:00 00:00:07
分析:
passthru:上面已經說過不需要連線資料庫,所以用這個指令。
rmthost:目標主機的IP地址,就是說我們的rmttrail程式傳送到的主機。
mgrport:目標主機管理程式的埠號,我們上面已經配置了。
compress:在傳輸的過程中啟用壓縮。
rmttrail:路徑和檔案與上面配置的一致。
TABLE HR.*:上面說過,哪些表的redo資訊傳輸。
日誌所在地:
[oracle@gg1 ogg]$ vi ggserr.log
18、
測試goldengate能否抓取資料:
SQL> update employees set salary=salary+1000;
107 rows updated.
SQL> commit;
Commit complete.
檢視是否生成檔案:
[oracle@gg1 ogg]$ ll dirdat
total 16
-rw-rw-rw- 1 oracle oinstall 13721 Dec 12 03:47 r1000000
檢視目標端是否也生成:
[oracle@gg2 ogg]$ ls -l dirdat
total 16
-rw-rw-rw- 1 oracle oinstall 13743 Dec 12 03:47 t1000000
注意:
是可以的,大小是非0。
19、
目標端:
建立golengate軟體使用的schema,並授權一些必要的特殊許可權,注意與源端有所區別,保證我們能DML。
create tablespace goldengate datafile '/u01/app/oracle/oradata/ogg/goldengate01.dbf' size 100m autoextend on;
create user goldengate identified by goldengate default tablespace goldengate temporary tablespace temp;
grant connect to goldengate;
grant alter any table to goldengate;
grant alter session to goldengate;
grant create session to goldengate;
grant flashback any table to goldengate;
grant select any dictionary to goldengate;
grant select any table to goldengate;
grant resource to goldengate;
grant insert any table to goldengate;
grant update any table to goldengate;
grant delete any table to goldengate;
grant create any index to goldengate;
grant select any transaction to goldengate;
20、
目標端:
為replicat程式建立checkpoint表:
GGSCI (gg2) 1> dblogin userid goldengate,password goldengate
Successfully logged into database.
GGSCI (gg2) 2> add checkpointtable goldengate.rep_demo_ckpt
Successfully created checkpoint table goldengate.rep_demo_ckpt.
21、
配置目標端replicate程式:
GGSCI (gg2) 3> add replicat rep_demo,exttrail ./dirdat/t1,checkpointtable goldengate.rep_demo_ckpt
REPLICAT added.
分析:
exttrail:表示這個程式獲取資料的來源是什麼地方,是我們源端rmttrail所設定過的。
22、
配置目標端replicate引數:
GGSCI (gg2) 5> edit param rep_demo
REPLICAT rep_demo
SETENV (ORACLE_SID=ogg)
SETENV (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
USERID goldengate,PASSWORD goldengate
REPORTCOUNT EVERY 30 MINUTES, RATE
REPERROR DEFAULT, ABEND
numfiles 5000
--HANDLECOLLISIONS
assumetargetdefs
DISCARDFILE ./dirrpt/rep_demo.dsc, APPEND, MEGABYTES 1000
ALLOWNOOPUPDATES
MAP HR.*, TARGET HR.*;
分析:
重要的地方與上面基本一致,有興趣可以查查其他引數的資訊。
MAP:源端和目標端的對應。
23、
目標端:
啟動並檢視replicate程式是否執行:
GGSCI (gg2) 6> start rep_demo
GGSCI (gg2) 2> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP_DEMO 00:00:00 01:22:45
24、
測試資料,在源端複製到目標端。
源端:
SQL> conn hr/hr
Connected.
SQL> update employees set salary=5000;
107 rows updated.
SQL> commit;
Commit complete.
SQL> select salary from employees;
SALARY
----------
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
......
107 行
目標端:
SQL> select salary from employees;
SALARY
----------
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
....
107行。
25、
測試資料同步,表明已經配置完成goldengate,並實現了單向DML複製。
源端:
作業系統:oracle_linux_5.6_32
資料庫:oracle_10.2.0.1_32
goldengate:for_10g_x86
目標端:
作業系統:oracle_linux_5.6_32
資料庫:oracle_10.2.0.1_32
goldengate:for_10g_x86
注意:
本實驗是模擬在同平臺同版本上面安裝和配置OGG,並實現簡單的DML複製,至於複雜的其他方面
希望大家能自己多多實驗。
作者:
姓名:oracle_zsx。
QQ:1468815296。
配置步驟:
1、
檢查源端和目標端正確的IP解析:
源端:
[root@gg1 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.1.71 gg1
目標端:
[root@gg2 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.1.72 gg2
2、
設定LD_LIBRARY_PATH,為了安裝OGG所用的動態連結庫。如果沒有配置這個路徑的話,在安裝OGG的過程
中會報找不到動態連結庫的錯誤,使用者可以自己嘗試一下。
源端:
[root@gg1 ~]# su - oracle
[oracle@gg1 ~]$ vi .bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export SQLPATH=/home/oracle/labs
export PATH=$ORACLE_HOME/bin:$PATH
export nls_lang=american_america.zhs16gbk
export ORACLE_SID=ogg
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
[oracle@gg1 ~]$ source .bash_profile
目標端:
[root@gg2 ~]# su - oracle
[oracle@gg2 ~]$ vi .bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export SQLPATH=/home/oracle/labs
export PATH=$ORACLE_HOME/bin:$PATH
export nls_lang=american_america.zhs16gbk
export ORACLE_SID=ogg
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
[oracle@gg2 ~]$ source .bash_profile
3、
在源端建立專用的表空間、schema、並授權。
create tablespace goldengate datafile '/u01/app/oracle/oradata/ogg/goldengate01.dbf' size 100m autoextend on;
create user goldengate identified by goldengate default tablespace goldengate temporary tablespace temp;
grant connect to goldengate;
grant alter any table to goldengate;
grant alter session to goldengate;
grant create session to goldengate;
grant flashback any table to goldengate;
grant select any dictionary to goldengate;
grant select any table to goldengate;
grant resource to goldengate;
grant select any transaction to goldengate;
4、
檢查源端資料庫是否在歸檔模式,強烈建議在歸檔模式。
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /arch
Oldest online log sequence 1
Next log sequence to archive 3
Current log sequence 3
5、
源端:
新增附加日誌來唯一標識一行記錄,要在資料庫級別開啟最小開關。為了減少整個資料庫新增附加日誌,以及減少歸檔量,
goldengate建議複製哪些物件,就新增哪些表的附加日誌(我們到時候是拿hr使用者下的表來實驗)。
檢查:
SQL> select supplemental_log_data_min from v$database;
SUPPLEME
--------
NO
開啟:
SQL> alter database add supplemental log data;
Database altered.
再次檢視:
SQL> select supplemental_log_data_min from v$database;
SUPPLEME
--------
YES
切換日誌組,使附加日誌開關生效。
SQL> alter system switch logfile;
System altered.
解釋:
在正常情況下,oracle是用rowid來唯一標示一行記錄的,但goldengate這裡不夠,需要開啟附加日誌。
6、
我們先安裝和配置goldengate,安裝比較簡單,解壓之後下一步測試。
[root@gg1 ogg]# unzip ogg112101_fbo_ggs_Linux_x86_ora10g_32bit.zip
[root@gg1 ogg]# tar -xvf fbo_ggs_Linux_x86_ora10g_32bit.tar
[root@gg1 ogg]# chown -R oracle:oinstall /ogg/
注意:
自己要下載正確的軟體。
7、
測試安裝成功,只需進入命令列,就表明安裝是成功的。
[oracle@gg1 ogg]$ ./ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x86, 32bit (optimized), Oracle 10g on Apr 23 2012 07:06:02
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
GGSCI (gg1) 1>
GGSCI (gg1) 1> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER STOPPED
注意:
表示安裝成功。
8、
在目標端也安裝成功。
[root@gg2 ogg]# unzip ogg112101_fbo_ggs_Linux_x86_ora10g_32bit.zip
[root@gg2 ogg]# tar -xvf fbo_ggs_Linux_x86_ora10g_32bit.tar
[root@gg2 ogg]# chown -R oracle:oinstall /ogg/
[oracle@gg2 ogg]$ ./ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x86, 32bit (optimized), Oracle 10g on Apr 23 2012 07:06:02
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
GGSCI (gg2) 1> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER STOPPED
9、
配置源端和目標端的管理程式。
源端:
GGSCI (gg1) 2> create subdirs
GGSCI (gg1) 3> edit params mgr
port 7839
DYNAMICPORTLIST 7840-7850
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
GGSCI (gg1) 6> start mgr
Manager started.
GGSCI (gg1) 7> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
GGSCI (gg1) 8> info mgr
Manager is running (IP port gg1.7839).
目標端:
GGSCI (gg2) 2> create subdirs
GGSCI (gg2) 3> edit params mgr
port 7839
DYNAMICPORTLIST 7840-7850
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
啟動配置的管理程式
GGSCI (gg2) 4> start mgr
Manager started.
檢視是否正在執行的管理程式,如果不是running請檢視自己的原因。
GGSCI (gg2) 5> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
檢視剛剛設定的埠號有沒有問題
GGSCI (gg2) 6> info mgr
Manager is running (IP port gg2.7839).
引數分析:
第一行表示管理程式的埠號。
第二行是接收程式使用的是動態介面列表的埠。
其他引數請大家自己有興趣分析。
10、
源端:
檢視要複製的表的日誌資訊是完整的,確保是logging。把nologing變成logging。
select owner||'.'||table_name table_name,logging
from dba_tables
where owner='HR';
TABLE_NAME LOG
------------------------------------------------------------- ---
HR.REGIONS NO
HR.LOCATIONS NO
HR.DEPARTMENTS NO
HR.JOBS NO
HR.EMPLOYEES NO
HR.JOB_HISTORY NO
HR.COUNTRIES
SQL> alter table HR.REGIONS logging;
Table altered.
SQL> alter table HR.LOCATIONS logging;
Table altered.
SQL> alter table HR.DEPARTMENTS logging;
Table altered.
SQL> alter table HR.JOBS logging;
Table altered.
SQL> alter table HR.EMPLOYEES logging;
Table altered.
SQL> alter table HR.JOB_HISTORY logging;
Table altered.
SQL> alter table HR.COUNTRIES logging;
Table altered.
11、
源端:
配置hr下面表的表級附加日誌。配置登陸使用者。並檢查日誌是否新增成功。
以goldengate這個schema登陸資料庫。
GGSCI (gg1) 10> dblogin userid goldengate, password goldengate
Successfully logged into database.
檢視:
GGSCI (gg1) 11> info trandata hr.*
Logging of supplemental redo log data is disabled for table HR.COUNTRIES.
Logging of supplemental redo log data is disabled for table HR.DEPARTMENTS.
Logging of supplemental redo log data is disabled for table HR.EMPLOYEES.
Logging of supplemental redo log data is disabled for table HR.JOBS.
Logging of supplemental redo log data is disabled for table HR.JOB_HISTORY.
Logging of supplemental redo log data is disabled for table HR.LOCATIONS.
Logging of supplemental redo log data is disabled for table HR.REGIONS.
注意:
發現是disable,還沒有新增成功,繼續下一步。
新增:
GGSCI (gg1) 12> add trandata hr.*
Logging of supplemental redo data enabled for table HR.COUNTRIES.
Logging of supplemental redo data enabled for table HR.DEPARTMENTS.
Logging of supplemental redo data enabled for table HR.EMPLOYEES.
Logging of supplemental redo data enabled for table HR.JOBS.
Logging of supplemental redo data enabled for table HR.JOB_HISTORY.
Logging of supplemental redo data enabled for table HR.LOCATIONS.
Logging of supplemental redo data enabled for table HR.REGIONS.
注意:
現在成功了,是enable的。
12、
配置源端的抓取程式。
GGSCI (gg1) 13> add extract ext_demo, tranlog, begin now, threads 1
EXTRACT added.
GGSCI (gg1) 14> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT STOPPED EXT_DEMO 00:00:00 00:00:09
引數分析:
tranlog:表示資料抓取的來源是資料庫的redo資料。
begin now:表示我們在啟動這個抓取程式的就去抓取資料。
threads 1:表示我們資料庫有多少個redo threads,單例項基本上是1或者不設,rac就自己設定了,
配置過RAC的基本都瞭解。
13、
新增源端的佇列檔案。
GGSCI (gg1) 15> add EXTTRAIL ./dirdat/r1, extract ext_demo,megabytes 100
EXTTRAIL added.
分析:
./dirdat:表示trail檔案的目錄
r1:trail檔案的字首
extract ext_demo:值指定給那個程式用的(ext_demo)。
megabytes 100:檔案大小是100m
14、
編輯我們剛剛在源端配置的抓取程式的引數:
GGSCI (gg1) 16> edit param ext_demo
EXTRACT ext_demo
setenv (ORACLE_SID=ogg)
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid goldengate,password goldengate
REPORTCOUNT EVERY 1 MINUTES, RATE
numfiles 5000
DISCARDFILE ./dirrpt/ext_demo.dsc,APPEND,MEGABYTES 1000
DISCARDROLLOVER AT 3:00
exttrail ./dirdat/r1,megabytes 100
dynamicresolution
TRANLOGOPTIONS EXCLUDEUSER goldengate
TRANLOGOPTIONS convertucs2clobs
TABLE HR.*;
分析:
setenv (ORACLE_SID=ogg):指定oracle的sid,單機環境下可以不設或者bashprofile檔案中設定了預設的
也可以不設,但是叢集環境就要指定了,這裡我們強烈建議指定。
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK):源端資料庫的字符集,一定要跟資料庫中匹配。
userid goldengate,password goldengate:告訴抓取程式是透過這個使用者登陸資料庫的。
exttrail ./dirdat/r1,megabytes 100:與我們上面配置抓取程式的設定要一致,路徑和大小嘛。
TABLE HR.*:最重要的,告訴抓取程式抓取的是哪些使用者哪些表的資料。
15、
啟動抓取程式:(確認自己的配置沒有問題,否則程式可能不是running)
GGSCI (gg1) 26> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT STOPPED EXT_DEMO 00:00:00 00:37:12
GGSCI (gg1) 27> start ext_demo
Sending START request to MANAGER ...
EXTRACT EXT_DEMO starting
GGSCI (gg1) 28> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT_DEMO 00:00:00 00:00:10
16、
配置datapump程式,將抓取資料傳到目標主機。負責TCPIP通訊。
GGSCI (gg1) 31> add extract dpe_demo, exttrailsource ./dirdat/r1
EXTRACT added.
輸出:目標主機怎麼寫,也是定義datapumo程式的輸出。
GGSCI (gg1) 33> add rmttrail ./dirdat/t1,EXTRACT dpe_demo,MEGABYTES 100
RMTTRAIL added.
分析:
exttrailsource:抓取程式的來源,因為這個程式不否則到資料庫中取抓取,所以抓取的來源
是透過抓取程式已經生成好的trail檔案中的內容。
17、
配置datapump程式引數:
GGSCI (gg1) 34> edit param dpe_demo
extract dpe_demo
dynamicresolution
passthru
rmthost 192.168.1.72, mgrport 7839, compress
rmttrail ./dirdat/t1
numfiles 5000
TABLE HR.*;
啟動,如果有問題,狀態不能為running,可以檢視相應的日誌在自己安裝的ogghome目錄下。
GGSCI (gg1) 37> start dpe_demo
Sending START request to MANAGER ...
EXTRACT DPE_DEMO starting
GGSCI (gg1) 38> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING DPE_DEMO 00:00:00 00:12:10
EXTRACT RUNNING EXT_DEMO 00:00:00 00:00:07
分析:
passthru:上面已經說過不需要連線資料庫,所以用這個指令。
rmthost:目標主機的IP地址,就是說我們的rmttrail程式傳送到的主機。
mgrport:目標主機管理程式的埠號,我們上面已經配置了。
compress:在傳輸的過程中啟用壓縮。
rmttrail:路徑和檔案與上面配置的一致。
TABLE HR.*:上面說過,哪些表的redo資訊傳輸。
日誌所在地:
[oracle@gg1 ogg]$ vi ggserr.log
18、
測試goldengate能否抓取資料:
SQL> update employees set salary=salary+1000;
107 rows updated.
SQL> commit;
Commit complete.
檢視是否生成檔案:
[oracle@gg1 ogg]$ ll dirdat
total 16
-rw-rw-rw- 1 oracle oinstall 13721 Dec 12 03:47 r1000000
檢視目標端是否也生成:
[oracle@gg2 ogg]$ ls -l dirdat
total 16
-rw-rw-rw- 1 oracle oinstall 13743 Dec 12 03:47 t1000000
注意:
是可以的,大小是非0。
19、
目標端:
建立golengate軟體使用的schema,並授權一些必要的特殊許可權,注意與源端有所區別,保證我們能DML。
create tablespace goldengate datafile '/u01/app/oracle/oradata/ogg/goldengate01.dbf' size 100m autoextend on;
create user goldengate identified by goldengate default tablespace goldengate temporary tablespace temp;
grant connect to goldengate;
grant alter any table to goldengate;
grant alter session to goldengate;
grant create session to goldengate;
grant flashback any table to goldengate;
grant select any dictionary to goldengate;
grant select any table to goldengate;
grant resource to goldengate;
grant insert any table to goldengate;
grant update any table to goldengate;
grant delete any table to goldengate;
grant create any index to goldengate;
grant select any transaction to goldengate;
20、
目標端:
為replicat程式建立checkpoint表:
GGSCI (gg2) 1> dblogin userid goldengate,password goldengate
Successfully logged into database.
GGSCI (gg2) 2> add checkpointtable goldengate.rep_demo_ckpt
Successfully created checkpoint table goldengate.rep_demo_ckpt.
21、
配置目標端replicate程式:
GGSCI (gg2) 3> add replicat rep_demo,exttrail ./dirdat/t1,checkpointtable goldengate.rep_demo_ckpt
REPLICAT added.
分析:
exttrail:表示這個程式獲取資料的來源是什麼地方,是我們源端rmttrail所設定過的。
22、
配置目標端replicate引數:
GGSCI (gg2) 5> edit param rep_demo
REPLICAT rep_demo
SETENV (ORACLE_SID=ogg)
SETENV (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
USERID goldengate,PASSWORD goldengate
REPORTCOUNT EVERY 30 MINUTES, RATE
REPERROR DEFAULT, ABEND
numfiles 5000
--HANDLECOLLISIONS
assumetargetdefs
DISCARDFILE ./dirrpt/rep_demo.dsc, APPEND, MEGABYTES 1000
ALLOWNOOPUPDATES
MAP HR.*, TARGET HR.*;
分析:
重要的地方與上面基本一致,有興趣可以查查其他引數的資訊。
MAP:源端和目標端的對應。
23、
目標端:
啟動並檢視replicate程式是否執行:
GGSCI (gg2) 6> start rep_demo
GGSCI (gg2) 2> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP_DEMO 00:00:00 01:22:45
24、
測試資料,在源端複製到目標端。
源端:
SQL> conn hr/hr
Connected.
SQL> update employees set salary=5000;
107 rows updated.
SQL> commit;
Commit complete.
SQL> select salary from employees;
SALARY
----------
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
......
107 行
目標端:
SQL> select salary from employees;
SALARY
----------
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
....
107行。
25、
測試資料同步,表明已經配置完成goldengate,並實現了單向DML複製。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30345407/viewspace-1782137/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- OGG 簡單DML同步
- MySQL高可用之組複製技術(2):配置單主模型的組複製MySql模型
- OGG雙向條件複製的部署與測試
- MySQL 主從複製安裝部署配置MySql
- 手把手教你HDFS基礎配置安裝及命令使用!
- 新手指南: 手把手教你安裝 Ubuntu 和 FedoraUbuntu
- 手把手教你安裝Faiss(Linux)AILinux
- LINUX 環境 mysql to mysql OGG安裝配置(二)LinuxMySql
- ogg for oracle 19c 非cdb安裝配置Oracle
- MySQL高可用之組複製技術(3):配置多主模型的組複製MySql模型
- Elasticsearch 的安裝和簡單配置Elasticsearch
- 手把手教你在本機安裝sparkSpark
- MySQL 8 複製(八)——組複製安裝部署MySql
- 手把手教你配置git和git倉庫Git
- ogg 併發複製程式自阻塞
- 簡單實踐實現 MySQL 主從複製MySql
- 手把手教你實現boost::bind
- [實踐]wireguard安裝和配置
- 教你JavaScript實現一鍵複製內容剪貼簿JavaScript
- MySQL的零複製技術MySql
- Nginx的安裝和多域名配置的實現方法Nginx
- 安裝nginx並安全地配置和啟動Nginx
- 教你如何在liunx中安裝和部署nacos配置中心
- 手把手教你安裝Jupyter Notebook(保姆級教程)
- 手把手教你SonarQube入門安裝與使用
- 手把手教你封裝 Vue 元件,並使用 npm 釋出封裝Vue元件NPM
- js 實現深複製/深複製JS
- JavaScript實現複製和貼上功能JavaScript
- 下載、安裝Git並複製GitHub專案到本地的流程Github
- 【ubuntu】使用二進位制安裝包安裝node和npm並配置UbuntuNPM
- 安信實驗室教你如何實現Windows自動安裝!Windows
- Linux系統安裝並配置nginx實現多服務同一埠LinuxNginx
- 手把手教你如何實現繼承繼承
- 超簡單整合!手把手教你實現音訊編輯能力音訊
- Windows 安裝並配置 MySQL 5.6WindowsMySql
- Mac安裝python2和python3,並配置MacPython
- Linux零複製技術淺析Linux
- Redis 主從複製技術原理Redis
- 手把手教你安裝Linux效能監控工具——pydashLinux