GOLDENGATE安裝與數據複製流搭建配置
(源庫爲實例,支持ASM,不含DDL抽取版)
1、配置場景
2、OGG軟件安裝
2.1 源端和目標端創建OGG安裝目錄與授權
#mkdir /u01/ogg
#chown –R oracle:oinstall/u01/ogg
#chmod –R 777/u01/ogg
2.2 源端和目標端配置環境變量
#su – oracle
[oracle@server1~]$ vi.bash_profile
添加以下內容:
export OGG=/u01/ogg export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/u01/ogg |
[oracle@server1~]$ source.bash_profile
2.3 源端和目標端安裝OGG軟件
(1) 將ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip軟件複製到/u01/ogg目錄內
(2) 解壓縮軟件
[oracle@server1 ~]$unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
[oracle@server1 ~]$tar xvf fbo_ggs_Linux_x64_ora11g_64bit.tar
2.4源端數據庫創建測試表與插入測試數據
(如果是生產環境,此步可以跳過)
(1) 創建測試表TABLE GOLDENGATE.OGG_UPG
create table GOLDENGATE.OGG_UPG ( pr_id NUMBER(10)notnull, t_name VARCHAR2(20), sal NUMBER(10), insert_time DATE primary key ) tablespace GOLDENGATE |
(2) 創建測試用的sequence
create sequence GOLDENGATE.SEQ_OGG_T01 minvalue1 maxvalue9999999999999999999999999999 startwith1 incrementby1 cache 20; |
(3)插入數據
i number:=1; begin loop inser tinto goldengate.OGG_UPGvalues (goldengate.seq_ogg_t01.nextval,'ogg_test1',i,sysdate); commit; i:=i+1; exit when i=10001; end loop; end; / |
3、源端數據庫與表配置修改
3.1 開啓數據庫最小級別追加日誌
SQL>alter database add supplemental log data;
SQL>altersystem switch logfile;
SQL>exit
3.2 開啓需要同步表的表級追加日誌
[oracle@server1~]$./ggsci
GGSCI>dbloginuserid goldengate, password goldengate
GGSCI>addtrandata goldengate.ogg_upg
4、OGG源端配置
4.1 創建subdirs
GGSCI>create subdirs
4.2 創建MGR
GGSCI> editparams mgr
dynamicportlist 7800-8000 --autorestart extract *,waitminutes 30,resetminutes 5 lagreporthours 1 laginfominutes 20 lagcriticalminutes 60 purgeoldextracts ./dirdat/tr*,usecheckpoints,minkeepdays 10 |
GGSCI>start mgr
4.3 創建extract進程
GGSCI>add ext exttr,tranlog, begin now
GGSCI>addexttrail ./dirdat/tr, ext exttr, megabytes 200
GGSCI>editparams exttr
setenv (NLS_LANG = AMERICAN_AMERICA.AL32UTF8) userid goldengate, password goldengate REPORT AT 01:59 reportrollover at 02:00 TRANLOGOPTIONS CONVERTUCS2CLOBS THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 90000 IOLATENCY 100000 tranlogoptions altarchivelogdest primary instance orcl /u01/archive discardfile ./dirrpt/exttr.dsc, append, megabytes 1000 --warnlongtrans 2h, checkintervals 3m exttrail ./dirdat/tr numfiles 2000 dynamicresolution |
4.4 創建dataPump進程
GGSCI>add extdpetr, exttrailsource ./dirdat/tr
GGSCI>add rmttrail ./dirdat/tr, extdpetr, megabytes 200
setenv (NLS_LANG = AMERICAN_AMERICA.AL32UTF8) userid goldengate, password goldengate REPORT AT 01:59 reportrollover at 02:00 rmthost 192.168.1.220, mgrport 7809, compress rmttrail ./dirdat/tr dynamicresolution numfiles 2000 gettruncates TABLE GOLDENGATE.OGG_UPG; |
GGSCI>start param dpetr
5、目標端OGG配置
5.1 創建subdirs
GGSCI>create subdirs
5.2 創建MGR
GGSCI> edit params mgr
Port 7809 dynamicportlist 7800-8000 autorestart replicat *,waitminutes 5,resetminutes 5 lagreporthours 1 laginfominutes 20 lagcriticalminutes 60 purgeoldextracts ./dirdat/tr*,usecheckpoints,minkeepdays 10 |
GGSCI>start mgr
5.3 創建replicat進程
GGSCI>dblogin userid goldengate, password goldengate
GGSCI>add checkpointtable goldengate.checkpoint_reptr_01
GGSCI>add replicat reptr, exttrail ./dirdat/tr, checkpointtablegoldengate.checkpoint_reptr_01
GGSCI>edit params reptr
setenv (NLS_LANG = AMERICAN_AMERICA.AL32UTF8) userid goldengate, password goldengate sqlexec "Alter session set constraints=deferred" REPORT AT 01:59 reportrollover at 02:00 discardrollover on friday --handlecollisions reperror default,abend discardfile ./dirrpt/reptr.dsc,append, megabytes 1000 assumetargetdefs checksequencevalue dynamicresolution numfiles 2000 batchsql BATCHESPERQUEUE 100, OPSPERBATCH 8000 grouptransops 10000 maxtransops 10000 MAP GOLDENGATE.OGG_UPG, TARGET GOLDENGATE.OGG_UPG; |
創建完replicat進程後,千萬不要啓動
6、數據初始化
6.1 停用源端數據庫的JOB
Sql>alter system set job_queue_processes=0 scope=both; --先關閉job隊列,防止後續的job再啓動. Sql>alter system set aq_tm_processes=0 scope=both; --關閉高級隊列 Sql>select count(*) from dba_jobs_running; --查看系統是否存在有job正在執行,如果還有JOB在運行,則進行Kill操作 |
6.2 停止前端系統應用
(防止有事務啓動後,在取SCN時還未結束,由於GOLDENGATE抽取進程,只會抽取在extract進程啓動之後開始的事務,該點很重要。)
6.3 殺掉所有事務
(1)查詢還在執行的事務
select * from gv$transaction;
(2)kill 當前正在執行的事務的session
6.4 停掉listener
$lsnrctl stop
(防止新的連接連上來創建新事務操作表數據)
6.5 查詢源端數據庫的當前SCN號
SQL> selectdbms_flashback.get_system_change_number from dual;
記錄下SCN號:2553440
6.6 導出數據
$expdpsystem/XXX directory=expdp_dir dumpfile=tableXXX.dmp filesize=30G logfile=expdp_XXXX.log flashback_scn=2553440 tables=GOLDENGATE.OGG_UPG
6.7 恢復源端數據庫的JOB參數
Sql>alter system set job_queue_processes=20 scope=both; --根據實際值進行恢復. Sql>alter system set aq_tm_processes=1 scope=both; |
6.8 目標端數據庫導入數據
$imppdp system/XXX directory=expdp_dir dumpfile=tableXXX.dmp logfile=impdp_XXXX.log |
7、啓動目標端的replicat進程
GGSCI> startreptr,aftercsn 2553440
8、驗證OGG能正常同步數據
8.1 在目標數據庫中查詢GOLDENGATE.OGG_UPG表數據量
SQL> select count(*) from goldengate.ogg_upg;
COUNT(*) ---------- 10000 |
8.2 在源端數據庫上的GOLDENGATE.OGG_UPG表中再插入一萬行數據
declare i number:=1; begin loop insertinto goldengate.OGG_UPGvalues (goldengate.seq_ogg_t01.nextval,'ogg_test1',i,sysdate); commit; i:=i+1; exitwhen i=10001; end loop; end; / |
8.2 在目標數據庫上查詢GOLDENGATE.OGG_UPG表數據是否增長
SQL> select count(*) from goldengate.ogg_upg;
COUNT(*) ---------- 20000 |
配置成功,並可以正常同步。
本文作者:黎俊傑(網名:踩點),從事”系統架構、操作系統、存儲設備、數據庫、中間件、應用程序“六個層面系統性的性能優化工作
歡迎加入 系統性能優化專業羣,共同探討性能優化技術。羣號:258187244