實戰goldengate:安裝配置+資料初始化+單向DML複製
1.安裝軟體
1.1 下載goldengate
1.2 設定ORACLE_HOME and ORACLE_SID等環境變數
確保安裝的oracle例項設定了正確的ORACLE_HOME以及ORACLE_SID,
當ogg程式連線資料庫時會引用它們。
1.3 設定共享庫的環境變數
確保ggsci或其他ogg程式的正常執行需要正確設定共享庫路徑,
如果設定不正確在執行ggsci時會報錯“./ggsci: error while loading shared libraries”
export LD_LIBRARY_PATH=/opt/oracle/db_1/lib:$LD_LIBRARY_PATH
/opt/oracle/db_1為oracle軟體安裝目錄
1.4安裝ogg
1.4.1 解壓軟體包
mkdir /opt/ogg/11.2 -p
unzip ogg112101_fbo_ggs_Linux_x64_ora10g_64bit.zip
tar -xvf fbo_ggs_Linux_x64_ora10g_64bit.tar
1.4.2 建立ogg工作目錄
./ggsci
CREATE SUBDIRS
EXIT
2.啟用ogg的ddl複製
2.1 建立相應的使用者以及表空間
sqlplus / as sysdba
create tablespace ogg_tbs datafile '/opt/oracle/oradata/ogg1/ogg_tbs01.dbf' size 50M autoextend on;
create user oggadmin identified by oracle default tablespace ogg_tbs quota unlimited on ogg_tbs;
grant dba to oggadmin;
2.2 建立全域性引數檔案
./ggsci
EDIT PARAMS ./GLOBALS
GGSCHEMA oggadmin
EXIT
2.3 以sysdba角色執行相應指令碼
@marker_setup.sql
alter system set RECYCLEBIN=off; --執行ddl_setup前必須保證關閉資料庫的回收站特性
@ddl_setup.sql
@role_setup.sql
GRANT GGS_GGSUSER_ROLE to oggadmin;
@ddl_enable.sql
NOTE:在源端ogg的ddl支援是預設關閉的,如果需要啟用的話需在extract程式的引數檔案中加入ddl引數;
在目標端ogg的ddl支援是預設開啟的,如果有其他需求可以在replicat程式的引數檔案中使用ddl引數來
過濾或或者忽略某些ddl操作。
3.配置ogg instance
3.1 配置mangager
./ggsci
EDIT PARAMS MGR
PORT 3809
DYNAMICPORTLIST 3800-3820
3.2 配置extract --源端
./ggsci
EDIT PARAMS ext1
EXTRACT ext1
USERID oggadmin, PASSWORD oracle
EXTTRAIL /opt/ogg/11.2/dirdat/lt
DDL INCLUDE MAPPED --讓extract程式捕獲ddl
TABLE source.*;
3.3 配置data-pump --源端
./ggsci
EDIT PARAMS pump1
EXTRACT pump1
USERID oggadmin, PASSWORD oracle
RMTHOST 10.10.2.118, MGRPORT 3809
RMTTRAIL /opt/ogg/11.2/dirdat/rt
TABLE source.*;
3.4 配置replicat --目標端
3.4.1 建立checkpoint table
./ggsci
dblogin userid oggadmin,password oracle
add checkpointtable oggadmin.checkpoint
EDIT PARAMS ./GLOBALS
CHECKPOINTTABLE oggadmin.checkpoint
3.4.2 建立replicat引數檔案
./ggsci
EDIT PARAMS rep1
REPLICAT rep1
USERID oggadmin, PASSWORD oracle
DBOPTIONS SUPPRESSTRIGGERS
DBOPTIONS DEFERREFCONST
ASSUMETARGETDEFS
DISCARDFILE /opt/ogg/11.2/disc.log
MAP source..*, TARGET target.*;
4.配置oracle database for ogg
4.1 配置oracle database的日誌模式
sqlplus / as sysdba
shutdown immediate
startup mount
alter database archivelog;
alter database open;
ALTER DATABASE FORCE LOGGING;
alter database add supplemental log data;
select SUPPLEMENTAL_LOG_DATA_MIN,FORCE_LOGGING,LOG_MODE from v$database; --查詢資料庫日誌模式
4.2 建立測試使用者以及測試表
sqlplus / as sysdba --源端
create user source identified by oracle;
grant connect,resource to source;
conn source/oracle
create table test(id int,name varchar2(10));
begin
for i in 1..3 loop
insert into test values(i,'a'||i);
end loop;
commit;
end;
sqlplus / as sysdba --目標端
create user target identified by oracle;
grant connect,resource to target;
4.3 啟用表級別的補充日誌 --源端
./ggsci
dblogin userid oggadmin,password oracle
ADD TRANDATA source.*
NOTE:執行上述操作時必須保證oracle中必須有source使用者以及該使用者下至少有一張表,否則回報如下錯誤:
ERROR: No viable tables matched specification.
如果新增補充日誌的表沒有主鍵的話會報如下警告:
WARNING OGG-00869 No unique key is defined for table 'TEST'. All viable columns will be used to
represent the key,but may not guarantee uniqueness. KEYCOLS may be used to define the key.
5.配置ogg initial load
5.1 配置ogg instance
該配置已經在步驟3中完成
5.2 新增衝突處理 --目標端
如果在初始化載入時源庫仍處於活動狀態那麼需要在replicat引數檔案中新增如下引數:
HANDLECOLLISIONS
5.3 關閉ddl同步
對於extract引數檔案,去掉如下引數:
DDL INCLUDE MAPPED
5.4 新增ogg程式
5.4.1 新增primary extract --源端
./ggsci
ADD EXTRACT ext1, TRANLOG, BEGIN NOW
5.4.2 新增local trail --源端
./ggsci
ADD EXTTRAIL /opt/ogg/11.2/dirdat/lt, EXTRACT ext1
5.4.3 新增data-pump extract --源端
./ggsci
ADD EXTRACT pump1, EXTTRAILSOURCE /opt/ogg/11.2/dirdat/lt
5.4.4 新增remote trail --源端
./ggsci
ADD RMTTRAIL /opt/ogg/11.2/dirdat/rt, EXTRACT pump1
5.4.5 新增replicat --目標端
ADD REPLICAT rep1, EXTTRAIL /opt/ogg/11.2/dirdat/rt
NOTE:新增replicat程式是提示如下錯誤:
ERROR: No checkpoint table specified for ADD REPLICAT.
這個錯誤貌似很奇怪,因為在之前的操作中已經新增了checkpoint表,你可以嘗試退出ggsci會話然後
重新登入後再次新增即可,如果還是不行可以嘗試重建checkpoint表
5.5 使用expdp/impdp初始化目標端
5.5.1 啟動manager
./ggsci
START MANAGER
5.5.2 啟動primary extract --源端
./ggsci
START EXTRACT ext1
NOTE:這裡啟動extract程式時報如下錯誤:
ERROR OGG-00303 Oracle GoldenGate Capture for Oracle, ext1.prm: USERID and PASSWORD required.
這裡錯誤的原因是extract的引數檔案中userid和password引數隔行了,這兩個引數需要在同一行否則ogg會報上述錯誤
5.5.3 啟動data-pump extract --源端
./ggsci
START EXTRACT pump1
5.5.4 使用expdp/impdp完成資料初始化
查詢源庫當前scn --源庫
sqlplus / as sysdba
select current_scn from v$database;
CURRENT_SCN
-----------
606390
匯出源庫資料 --源庫
expdp system/oracle directory=dump_dir dumpfile=source.dmp schemas=source flashback_scn=606390
模擬生產環境中源庫的資料變化 --源庫
sqlplus source/oracle
select * from test;
ID NAME
---------- ----------
1 a1
2 a2
3 a3
delete test where id=1;
commit;
insert into test values(4,'a4');
insert into test values(5,'a5');
commit;
update test set name='aa'||id where mod(id,2)=0;
commit;
SQL> select * from test;
ID NAME
---------- ----------
2 aa2
3 a3
4 aa4
5 a5
匯入資料到目標庫 --目標庫
impdp system/oracle directory=dump_dir dumpfile=source.dmp remap_schema=source:target
查詢當前目標庫中的資料 --目標庫
sqlplsu target/oracle
SQL> select * from test;
ID NAME
---------- ----------
1 a1
2 a2
3 a3
5.5.5 確認replicat引數檔案設定正確 --目標端
./ggsci
VIEW PARAMS rep1
NOTE:確認引數檔案中有HANDLECOLLISIONS引數,如果沒有使用以下命令新增
EDIT PARAMS rep1
5.5.6 指定scn啟動repicat --目標端
./ggsci
start rep1, aftercsn 606390
NOTE:啟動replicat程式報如下錯誤:
OGG-00868 Oracle GoldenGate Delivery for Oracle, rep1.prm: ORA-06550: line 1, column 7:
PLS-00201: identifier 'SYS.DBMS_STREAMS_ADM_UTL_INVOK' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored SQL
BEGIN sys.dbms_streams_adm_utl_invok.SET_FOO_TRIGGER_SESSION_CONTXT (fire=>TRUE); END;.
解決辦法是授予相應許可權給ogg使用者
sqlplus / as sysdba
grant execute on DBMS_STREAMS_ADM_UTL_INVOK to oggadmin;
5.5.7 初始化完成後關閉HANDLECOLLISIONS --目標端
./ggsci
SEND REPLICAT rep1, NOHANDLECOLLISIONS
5.5.8 驗證資料同步效果 --目標端
sqlplus target/oracle
select * from test;
ID NAME
---------- ----------
2 aa2
3 a3
4 aa4
5 a5
1.1 下載goldengate
1.2 設定ORACLE_HOME and ORACLE_SID等環境變數
確保安裝的oracle例項設定了正確的ORACLE_HOME以及ORACLE_SID,
當ogg程式連線資料庫時會引用它們。
1.3 設定共享庫的環境變數
確保ggsci或其他ogg程式的正常執行需要正確設定共享庫路徑,
如果設定不正確在執行ggsci時會報錯“./ggsci: error while loading shared libraries”
export LD_LIBRARY_PATH=/opt/oracle/db_1/lib:$LD_LIBRARY_PATH
/opt/oracle/db_1為oracle軟體安裝目錄
1.4安裝ogg
1.4.1 解壓軟體包
mkdir /opt/ogg/11.2 -p
unzip ogg112101_fbo_ggs_Linux_x64_ora10g_64bit.zip
tar -xvf fbo_ggs_Linux_x64_ora10g_64bit.tar
1.4.2 建立ogg工作目錄
./ggsci
CREATE SUBDIRS
EXIT
2.啟用ogg的ddl複製
2.1 建立相應的使用者以及表空間
sqlplus / as sysdba
create tablespace ogg_tbs datafile '/opt/oracle/oradata/ogg1/ogg_tbs01.dbf' size 50M autoextend on;
create user oggadmin identified by oracle default tablespace ogg_tbs quota unlimited on ogg_tbs;
grant dba to oggadmin;
2.2 建立全域性引數檔案
./ggsci
EDIT PARAMS ./GLOBALS
GGSCHEMA oggadmin
EXIT
2.3 以sysdba角色執行相應指令碼
@marker_setup.sql
alter system set RECYCLEBIN=off; --執行ddl_setup前必須保證關閉資料庫的回收站特性
@ddl_setup.sql
@role_setup.sql
GRANT GGS_GGSUSER_ROLE to oggadmin;
@ddl_enable.sql
NOTE:在源端ogg的ddl支援是預設關閉的,如果需要啟用的話需在extract程式的引數檔案中加入ddl引數;
在目標端ogg的ddl支援是預設開啟的,如果有其他需求可以在replicat程式的引數檔案中使用ddl引數來
過濾或或者忽略某些ddl操作。
3.配置ogg instance
3.1 配置mangager
./ggsci
EDIT PARAMS MGR
PORT 3809
DYNAMICPORTLIST 3800-3820
3.2 配置extract --源端
./ggsci
EDIT PARAMS ext1
EXTRACT ext1
USERID oggadmin, PASSWORD oracle
EXTTRAIL /opt/ogg/11.2/dirdat/lt
DDL INCLUDE MAPPED --讓extract程式捕獲ddl
TABLE source.*;
3.3 配置data-pump --源端
./ggsci
EDIT PARAMS pump1
EXTRACT pump1
USERID oggadmin, PASSWORD oracle
RMTHOST 10.10.2.118, MGRPORT 3809
RMTTRAIL /opt/ogg/11.2/dirdat/rt
TABLE source.*;
3.4 配置replicat --目標端
3.4.1 建立checkpoint table
./ggsci
dblogin userid oggadmin,password oracle
add checkpointtable oggadmin.checkpoint
EDIT PARAMS ./GLOBALS
CHECKPOINTTABLE oggadmin.checkpoint
3.4.2 建立replicat引數檔案
./ggsci
EDIT PARAMS rep1
REPLICAT rep1
USERID oggadmin, PASSWORD oracle
DBOPTIONS SUPPRESSTRIGGERS
DBOPTIONS DEFERREFCONST
ASSUMETARGETDEFS
DISCARDFILE /opt/ogg/11.2/disc.log
MAP source..*, TARGET target.*;
4.配置oracle database for ogg
4.1 配置oracle database的日誌模式
sqlplus / as sysdba
shutdown immediate
startup mount
alter database archivelog;
alter database open;
ALTER DATABASE FORCE LOGGING;
alter database add supplemental log data;
select SUPPLEMENTAL_LOG_DATA_MIN,FORCE_LOGGING,LOG_MODE from v$database; --查詢資料庫日誌模式
4.2 建立測試使用者以及測試表
sqlplus / as sysdba --源端
create user source identified by oracle;
grant connect,resource to source;
conn source/oracle
create table test(id int,name varchar2(10));
begin
for i in 1..3 loop
insert into test values(i,'a'||i);
end loop;
commit;
end;
sqlplus / as sysdba --目標端
create user target identified by oracle;
grant connect,resource to target;
4.3 啟用表級別的補充日誌 --源端
./ggsci
dblogin userid oggadmin,password oracle
ADD TRANDATA source.*
NOTE:執行上述操作時必須保證oracle中必須有source使用者以及該使用者下至少有一張表,否則回報如下錯誤:
ERROR: No viable tables matched specification.
如果新增補充日誌的表沒有主鍵的話會報如下警告:
WARNING OGG-00869 No unique key is defined for table 'TEST'. All viable columns will be used to
represent the key,but may not guarantee uniqueness. KEYCOLS may be used to define the key.
5.配置ogg initial load
5.1 配置ogg instance
該配置已經在步驟3中完成
5.2 新增衝突處理 --目標端
如果在初始化載入時源庫仍處於活動狀態那麼需要在replicat引數檔案中新增如下引數:
HANDLECOLLISIONS
5.3 關閉ddl同步
對於extract引數檔案,去掉如下引數:
DDL INCLUDE MAPPED
5.4 新增ogg程式
5.4.1 新增primary extract --源端
./ggsci
ADD EXTRACT ext1, TRANLOG, BEGIN NOW
5.4.2 新增local trail --源端
./ggsci
ADD EXTTRAIL /opt/ogg/11.2/dirdat/lt, EXTRACT ext1
5.4.3 新增data-pump extract --源端
./ggsci
ADD EXTRACT pump1, EXTTRAILSOURCE /opt/ogg/11.2/dirdat/lt
5.4.4 新增remote trail --源端
./ggsci
ADD RMTTRAIL /opt/ogg/11.2/dirdat/rt, EXTRACT pump1
5.4.5 新增replicat --目標端
ADD REPLICAT rep1, EXTTRAIL /opt/ogg/11.2/dirdat/rt
NOTE:新增replicat程式是提示如下錯誤:
ERROR: No checkpoint table specified for ADD REPLICAT.
這個錯誤貌似很奇怪,因為在之前的操作中已經新增了checkpoint表,你可以嘗試退出ggsci會話然後
重新登入後再次新增即可,如果還是不行可以嘗試重建checkpoint表
5.5 使用expdp/impdp初始化目標端
5.5.1 啟動manager
./ggsci
START MANAGER
5.5.2 啟動primary extract --源端
./ggsci
START EXTRACT ext1
NOTE:這裡啟動extract程式時報如下錯誤:
ERROR OGG-00303 Oracle GoldenGate Capture for Oracle, ext1.prm: USERID and PASSWORD required.
這裡錯誤的原因是extract的引數檔案中userid和password引數隔行了,這兩個引數需要在同一行否則ogg會報上述錯誤
5.5.3 啟動data-pump extract --源端
./ggsci
START EXTRACT pump1
5.5.4 使用expdp/impdp完成資料初始化
查詢源庫當前scn --源庫
sqlplus / as sysdba
select current_scn from v$database;
CURRENT_SCN
-----------
606390
匯出源庫資料 --源庫
expdp system/oracle directory=dump_dir dumpfile=source.dmp schemas=source flashback_scn=606390
模擬生產環境中源庫的資料變化 --源庫
sqlplus source/oracle
select * from test;
ID NAME
---------- ----------
1 a1
2 a2
3 a3
delete test where id=1;
commit;
insert into test values(4,'a4');
insert into test values(5,'a5');
commit;
update test set name='aa'||id where mod(id,2)=0;
commit;
SQL> select * from test;
ID NAME
---------- ----------
2 aa2
3 a3
4 aa4
5 a5
匯入資料到目標庫 --目標庫
impdp system/oracle directory=dump_dir dumpfile=source.dmp remap_schema=source:target
查詢當前目標庫中的資料 --目標庫
sqlplsu target/oracle
SQL> select * from test;
ID NAME
---------- ----------
1 a1
2 a2
3 a3
5.5.5 確認replicat引數檔案設定正確 --目標端
./ggsci
VIEW PARAMS rep1
NOTE:確認引數檔案中有HANDLECOLLISIONS引數,如果沒有使用以下命令新增
EDIT PARAMS rep1
5.5.6 指定scn啟動repicat --目標端
./ggsci
start rep1, aftercsn 606390
NOTE:啟動replicat程式報如下錯誤:
OGG-00868 Oracle GoldenGate Delivery for Oracle, rep1.prm: ORA-06550: line 1, column 7:
PLS-00201: identifier 'SYS.DBMS_STREAMS_ADM_UTL_INVOK' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored SQL
BEGIN sys.dbms_streams_adm_utl_invok.SET_FOO_TRIGGER_SESSION_CONTXT (fire=>TRUE); END;.
解決辦法是授予相應許可權給ogg使用者
sqlplus / as sysdba
grant execute on DBMS_STREAMS_ADM_UTL_INVOK to oggadmin;
5.5.7 初始化完成後關閉HANDLECOLLISIONS --目標端
./ggsci
SEND REPLICAT rep1, NOHANDLECOLLISIONS
5.5.8 驗證資料同步效果 --目標端
sqlplus target/oracle
select * from test;
ID NAME
---------- ----------
2 aa2
3 a3
4 aa4
5 a5
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30345407/viewspace-1784351/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g GoldenGate單向複製配置(DML)OracleGo
- 【GoldenGate】Oracle GoldenGate(一) 安裝與DML單向同步配置GoOracle
- goldengate 單向複製配置Go
- (一)OGG的安裝與配置,並實現單向DML複製操作
- goldengate單向複製的配置Go
- GoldenGate單向複製配置(支援DDL複製)Go
- GoldenGate配置(一)之單向複製配置Go
- 實戰goldengate之ora-To-ora單向複製Go
- Oracle goldengate 11g (二)【DML and DDL單向複製】OracleGo
- 手把手教你安裝和配置OGG,並實現單向DML複製技術
- oracle goldengate 雙向複製配置OracleGo
- GoldenGate配置(二)之雙向複製配置Go
- GoldenGate單向表DML同步Go
- 安裝配置Oracle GoldenGate for DB2(單向)OracleGoDB2
- GoldenGate學習筆記(5)_配置例程之單向複製Go筆記
- GoldenGate DML複製增刪改表Go
- 使用GoldenGate 實現Oracle for Oracle 單向資料同步(實現表的DML操作同步)GoOracle
- 資料複製_GoldenGateGo
- 通過goldengate從ORACLE向mysql的單向複製GoOracleMySql
- 使用goldengate的資料泵進行Oracle-Oracle的單向複製GoOracle
- OGG雙向DML複製操作
- goldengate配置DDL複製Go
- MongoDB資料庫之主從複製配置實戰【轉】MongoDB資料庫
- 【轉】GoldenGate資料庫複製實施案例Go資料庫
- GoldenGate配置(三)之DDL複製配置Go
- oracle goldengate 配置DML&DDL實驗OracleGo
- Oracle GoldenGate安裝應用及初始化資料示例OracleGo
- Oracle GoldenGate 資料同步初始化最佳實戰(Data Pump)OracleGo
- GoldenGate抽取Informix資料庫安裝及配置GoORM資料庫
- Oracle使用goldengate分別向Oracle和mysql雙路的單向複製OracleGoMySql
- goldengate不使用資料泵完成Oracle-Oracle的雙向複製GoOracle
- MySQL單機多例項安裝並配置主從複製MySql
- 一次通過stream複製解決資料單向複製的案例
- OGG安裝及單向配置
- MySQL 主從複製安裝部署配置MySql
- Oracle goldengate 安裝配置OracleGo
- 安裝並配置goldengateGo
- GoldenGate for win安裝配置Go