資料複製_GoldenGate

redhouser發表於2011-06-01

為了實現生產庫到查詢庫的資料複製,對GoldenGate進行測試。
環境:
~]$ uname -a
Linux net95 2.6.18-164.el5xen #1 SMP Thu Sep 3 04:47:32 EDT 2009 i686 i686 i386 GNU/Linux

[oracle@net95 gg]$ ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.1.1.0.0 Build 078
Linux, x86, 32bit (optimized), Oracle 10 on Jul 28 2010 13:24:18

1,安裝
1.1,安裝軟體(在源端和目標端分別執行)
* 使用oracle安裝使用者:
mkdir /home/oracle/gg
vi /home/oracle/.bash_profile:
增加:
PATH=/home/oracle/gg:$PATH
export PATH
LD_LIBRARY_PATH=/home/oracle/gg:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

* 複製軟體
copy software to /home/oracle/gg

* 建立子目錄
ggsci
ggsci>>create subdirs

* 設定管理器引數,並啟動
ggsci>>edit params mgr,輸入port 7809儲存退出即可
ggsci>>start mgr
Manager started.

1.2,在資料庫中增加管理使用者(在源端和目標端分別執行)
create user ggadmin identified by ggadmin;
grant dba to ggadmin;

1.3源端
* 確認源端資料庫為歸檔模式
--alter database archivelog;(需要在資料庫mount狀態下執行);

* 設定源端附加日誌
select supplemental_log_data_min from v$database;
alter database add supplemental log data;

* 切換日誌以使附加日誌生效:
alter system switch logfile;

2,測試
2.1測試使用者準備
源端:
create user ggtest identified by ggtest;
grant connect,resource to ggtest;

sqlplus ggtest/ggtest
create table t(x int,y int);

alter table t
  add constraint pk_t primary key(x);

ggsci>>ADD TRANDATA GGTEST.TT

目標端:
create user ggtest identified by ggtest;
grant connect,resource to ggtest;

sqlplus ggtest/ggtest
create table t(x int,y int);

alter table t
  add constraint pk_t primary key(x);

2.2源端:
extract
ggsci>>edit params e01
extract e01
setenv (ORACLE_SID=bocnet)
userid ggadmin,password ggadmin
exttrail ./dirdat/sa
table ggtest.t;

ggsci>>add extract e01,tranlog,begin now,threads 1
ggsci>>add exttrail ./dirdat/sa,extract e01,megabytes 10
ggsci>>start e01

ggsci>>add extract ep01,exttrailsource ./dirdat/sa,begin now
ggsci>>edit params ep01
EXTRACT ep01
PASSTHRU
RMTHOST rhel5, MGRPORT 7809
RMTTRAIL ./dirdat/ta
TABLE ggtest.t;
ggsci>>add rmttrail ./dirdat/ta,extract ep01,megabytes 10
ggsci>>start ep01

2.3目標端:replicate
ggsci>>dblogin userid ggadmin,password ggadmin
ggsci>>add checkpointtable ggtest.checkpoint

ggsci>>edit params r01
REPLICAT r01
SETENV (ORACLE_SID=ora10)
USERID ggadmin, PASSWORD ggadmin
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/r01.dsc, PURGE
MAP ggtest.t, TARGET ggtest.t;

ggsci>>add replicat R01, exttrail ./dirdat/ta checkpointtable ggtest.checkpoint
ggsci>>start replicat r01


2.4資料複製
源端:
insert into t
select rownum,rownum from dual connect by level<10;
commit;

目標端:
select * from t;


3,問題排查
logdump>>open file

send extract ep01,report
view report ep01

No route to host
從A ping B可以,但telnet B 7809報錯:No route to host
從B telnet A 7809 可以。懷疑B上防火牆設定:
B:/etc/rc.d/init.d/iptables stop
OK!

徹底解決:
允許某臺機器的所有訪問
iptables -I INPUT -s 22.11.97.95 -j ACCEPT
/etc/rc.d/init.d/iptables save
service iptables restart


---
附錄:
在iptables中,如何指定某個IP地址可以訪問本機IP的所有埠,同樣本機IP的所有埠都訪問某個IP地址?
iptabels -A INPUT -p tcp -s 192.168.0.1 --dport 1024/65535-j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024/65535 -d 192.168.0.1 -j ACCEPT

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18922393/viewspace-696837/,如需轉載,請註明出處,否則將追究法律責任。

相關文章