一、環(huán)境
操作系統(tǒng) Microsoft Windows Server 2003 R2 Enterprise Edition Service Pack 2
數(shù)據(jù)庫(kù)版本: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
GoldenGate: Oracle GoldenGate Capture for Oracle Version 11.1.1.1.2
注:在安裝goldgate之前,需要先安裝好Oracle數(shù)據(jù)庫(kù),并且需要安裝Microsoft Visual C++ 2005 SP1 Redistributable ,這是Windows環(huán)境下Visual C++庫(kù)的運(yùn)行組件。Goldgate運(yùn)行的時(shí)候會(huì)用到一些庫(kù),所以不安裝,可能導(dǎo)致“系統(tǒng)無(wú)法執(zhí)行指定的程序”的錯(cuò)誤。
Microsoft Visual C++ 2005 SP1 Redistributable下載地址:
鏈接:https://pan.baidu.com/s/13lPN6HbFM_YCo8Pbfccrgw
提取碼:t8l0
GoldenGate軟件下載地址:
鏈接:https://pan.baidu.com/s/12m_CNuxZEdoKEemr4OY67g
提取碼:b7zb
二、安裝Goldgate軟件
1、設(shè)置Oracle數(shù)據(jù)庫(kù)的環(huán)境變量
ORACLE_HOME=E:\app\Administrator\product\11.2.0\dbhome_1
ORACLE_SID=orcl
2、將下載好的GoldenGate軟件放到E盤(軟件的位置可自行定義),然后解壓縮,然后進(jìn)行E:\goldgate目錄,運(yùn)行g(shù)gsci,進(jìn)入ogg管理控制臺(tái)。輸入命令:create subdirs,讓ogg創(chuàng)建其需要用到的目錄。
3、把manager進(jìn)程添加到windows服務(wù)。
手動(dòng)指定服務(wù)名:在命令行模式下切換到Ogg目錄,用ggsci命令進(jìn)入GGSCI交互界面。然后輸入edit param ./GLOBALS,(注意:./GLOBALS最好使用大寫)在彈出的記事本編輯器中,輸入以下代碼:
MGRSERVNAME GGMGR
保存后退出,回到windows命令提示符,在Ogg根目錄用install命令添加服務(wù):install addservice,然后手動(dòng)命名的服務(wù),這樣就添加成功了。當(dāng)然也可以直接使用默認(rèn)的服務(wù)名GGSMGR----直接在Ogg目錄輸入install addservice.
注:源端和目標(biāo)端操作一樣。
三、配置Oracle數(shù)據(jù)庫(kù)
注:10g要檢查回收站功能是否關(guān)閉;11g則不必檢查。這里咱們用11g,所以不必檢查。
在源端庫(kù)中關(guān)閉回收站
SQL>show parameter recyclebin
SQL>alter system set recyclebin=off deferred; ---非立即生效
注意:如果是oracle10.1版本需要使用一下命令。
alter system set "_recyclebin=off";
默認(rèn)情況歸檔模式、附加日志、強(qiáng)制日志參數(shù)是關(guān)閉的。
SQL> select supplemental_log_data_min from v$database;
啟動(dòng)歸檔模式、附加日志、強(qiáng)制日志。其中開啟歸檔模式需要重啟數(shù)據(jù)庫(kù),開啟附加日志、強(qiáng)制日志不需要重啟數(shù)據(jù)庫(kù)。
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database force logging;
SQL> alter database add supplemental log data;
SQL> alter database open;
查看數(shù)據(jù)庫(kù)級(jí)別的補(bǔ)充日志是否開啟:
select supplemental_log_data_min from v$database;
四、創(chuàng)建Goldgate管理用戶,并授權(quán)
源端和目標(biāo)端:
--創(chuàng)建表空間
create tablespace OGG_D datafile 'F:\app\Administrator\oradata\dleam75\OGG_D_01.dbf' size 500m autoextend on;
---創(chuàng)建臨時(shí)表空間
create temporary tablespace OGG_T tempfile 'F:\app\Administrator\oradata\dleam75\OGG_T_01.dbf' size 500m autoextend on;
---創(chuàng)建用戶并指定默認(rèn)表空間
create user ogg identified by oracle default tablespace OGG_D temporary tablespace OGG_T;
源端和目標(biāo)端授權(quán):
grant connect,resource,unlimited tablespace to ogg;
grant execute on utl_file to ogg;
源端授權(quán):
grant select any dictionary,select any table to ogg;
grant alter any table to ogg;
grant flashback any table to ogg;
grant execute on DBMS_FLASHBACK to ogg;
目標(biāo)端授權(quán):
grant select any dictionary,select any table to ogg;
grant CREATE SESSION, ALTER SESSION to ogg;
grant alter any table to ogg;
grant flashback any table to ogg;
grant execute on DBMS_FLASHBACK to ogg;
grant insert any table to ogg;
grant delete any table to ogg;
grant update any table to ogg;
源端添加表級(jí)trandata
---先通過(guò)goldgate用戶登錄數(shù)據(jù)庫(kù)
dblogin userid ogg,password oracle
---給表添加trandata
add trandata ddling.*
五、配置源端的進(jìn)程組
1、MGR管理進(jìn)程組
進(jìn)入E:\goldgate目錄下,運(yùn)行g(shù)gsci.exe
GGSCI (DB7) 2> edit param mgr
PORT 7809
DYNAMICPORTLIST 7809-7849
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 2
PURGEOLDEXTRACTS E:\goldgate\dirdat\em*,USECHECKPOINTS, MINKEEPDAYS 5
PORT 7839 ## 通信端口7839, 源端和目標(biāo)端需要保持一致。
DYNAMICPORTLIST 7840-7939 ##動(dòng)態(tài)端口列表的范圍從7840到7939。當(dāng)制定端口被占用或者出現(xiàn)通信故障,管理進(jìn)程將會(huì)從列表中選擇下一個(gè)端口嘗試連接,避免通信端口的單點(diǎn)故障。
AUTOSTART EXTRACT * ##當(dāng)MGR進(jìn)程啟動(dòng)后啟動(dòng)EXTRACT進(jìn)程
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 2 ##當(dāng)EXTRACT進(jìn)程中斷后嘗試自動(dòng)重啟,每隔2分鐘嘗試啟動(dòng)一次,嘗試5次。
PURGEOLDEXTRACTS /home/oracle/product/ogg_src/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 5 ##定期清理dirdat路徑下的本地隊(duì)列(local trail)。保留期限10天,過(guò)期后自動(dòng)刪除。從而控制隊(duì)列文件的目錄不會(huì)增長(zhǎng)過(guò)大。
LAGREPORTHOURS 1 ##每隔一小時(shí)檢查各進(jìn)程延時(shí)情況,并記錄到goldengate report文件。
LAGINFOMINUTES 30 ##進(jìn)程復(fù)制延時(shí)超過(guò)30分鐘,向日志文件記錄一條錯(cuò)誤日志
LAGCRITICALMINUTES 45 ## 傳輸延時(shí)超過(guò)45分鐘將寫入警告日志
通過(guò)start mgr命令啟動(dòng)mgr進(jìn)程,info all查看進(jìn)程狀態(tài)。
2、配置源端的extract進(jìn)程
extract進(jìn)程:
在源端用add extract命令創(chuàng)建一個(gè)extract進(jìn)程:
GGSCI (DB7) 5>add extract exteam,tranlog begin now
用add exttrail命令創(chuàng)建本地trail文件,extract組負(fù)責(zé)寫這部分文件,pump進(jìn)程服務(wù)讀它
GGSCI (DB7) 6>add exttrail ./dirdat/em,extract exteam
GGSCI (DB7) 7>edit param exteam
EXTRACT exteam
SETENV (ORACLE_SID = orcl)
USERID ogg, PASSWORD oracle
DYNAMICRESOLUTION
EXTTRAIL E:\goldgate\dirdat\em
TABLE ddling.*;
參數(shù)解釋如下:
dblogin userid ogg, password ogg ##使用ogg用戶登錄GoldenGate
add extract ext1,tranlog,begin now ##創(chuàng)建主抽取進(jìn)程
add exttrail /home/oracle/product/ogg_src/dirdat/sr, extract ext1 ##創(chuàng)建源端trail文件并指定路徑
edit param ext1
##-----------------
extract ext1
SETENV(ORACLE_SID="orcl") ##設(shè)置Oracle數(shù)據(jù)庫(kù)實(shí)例sid
SETENV(NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8) ##設(shè)置goldengate的字符集變量信息,此處值會(huì)覆蓋操作系統(tǒng)級(jí)別的變量。該值需要和數(shù)據(jù)庫(kù)字符集匹配一致。
userid ogg, password ogg
REPORTCOUNT EVERY 30 MINUTES, RATE ##每隔30分鐘報(bào)告一次從程序開始到現(xiàn)在的抽取進(jìn)程或者復(fù)制進(jìn)程的事物記錄數(shù),并匯報(bào)進(jìn)程的統(tǒng)計(jì)信息
DISCARDFILE /home/oracle/product/ogg_src/dirrpt/extsr.dsc, APPEND, MEGABYTES 1024 ##將執(zhí)行失敗的記錄保存在discard file中,discard file文件記錄了GoldenGate進(jìn)程錯(cuò)誤、數(shù)據(jù)庫(kù)錯(cuò)誤、GoldenGate操作等信息。該文件位于/home/oracle/product/ogg_src/dirrpt/extsr.dsc,大小為1024MB。 文件中已經(jīng)包含記錄的話,再后面繼續(xù)追加,不刪除之前的記錄。
DISCARDROLLOVER AT 3:00 ## 為了防止discard file被寫滿,每天3:00做一次文件過(guò)期設(shè)定
EXTTRAIL /home/oracle/product/ogg_src/dirdat/sr ##隊(duì)列文件路徑, trail文件存放路徑。
DYNAMICRESOLUTION ## 有時(shí)候開啟OGG進(jìn)程的時(shí)候較慢,可能是因?yàn)樾枰降谋硖?,OGG在開啟進(jìn)程之前會(huì)將需要同步的表建立一個(gè)記錄并且存入到磁盤中,這樣就需要耗費(fèi)大量的時(shí)間。使用該參數(shù)來(lái)解決此問(wèn)題。
ddl include all ##配置DDL語(yǔ)句也會(huì)同步
DBOPTIONS ALLOWUNUSEDCOLUMN ## 用于阻止抽取進(jìn)程抽取數(shù)據(jù)時(shí)由于表含有unused列而導(dǎo)致進(jìn)程異常終止(abend)。使用該參數(shù),抽取進(jìn)程抽取到unused列時(shí)也會(huì)向日志文件記錄一條警告信息。
FETCHOPTIONS NOUSESNAPSHOT ## 默認(rèn)值為 usesnapshot,表示利用數(shù)據(jù)庫(kù)閃回讀取數(shù)據(jù)。Nousesnapshot表示直接從原表讀取相關(guān)數(shù)據(jù)。
FETCHOPTIONS FETCHPKUPDATECOLS ##當(dāng)使用了HANDLECOLLISIONS時(shí),請(qǐng)使用該參數(shù)。復(fù)制進(jìn)程出現(xiàn)丟失update記錄(missing update)并且更新的是主鍵,update將轉(zhuǎn)換成insert。由于插入的記錄可能不是完整的行,若要保證完整需要加入此參數(shù)
table ogg.*; ##需要復(fù)制的對(duì)象列表
3、配置源端的pump進(jìn)程
GGSCI (DB7) 8>add extract pump_em,exttrailsource ./dirdat/em
GGSCI (DB7) 9>add rmttrail ./dirdat/em,extract pump_em
GGSCI (DB7) 10>edit param pump_em
EXTRACT pump_em
USERID ogg, PASSWORD oracle
RMTHOST 172.12.9.33, MGRPORT 7809
PASSTHRU
NUMFILES 5000
RMTTRAIL ./dirdat/em
--DYNAMICRESOLUTION
TABLE ddling.*;
edit param dpump1
extract dpump1
userid ogg, password ogg
SETENV(ORACLE_SID="orcl")
SETENV(NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8)
RMTHOST 192.168.66.3, mgrport 7839, COMPRESS ## 目標(biāo)端主機(jī)IP,管理進(jìn)程端口號(hào),投遞前壓縮隊(duì)列文件
PASSTHRU ##表示傳輸進(jìn)程直接跟抽取進(jìn)程交互,而不再和數(shù)據(jù)庫(kù)進(jìn)行交互,減少數(shù)據(jù)庫(kù)資源的利用。
ddl include all
RMTTRAIL /home/oracle/product/ogg_trg/dirdat/tr ##目標(biāo)端保存隊(duì)列文件的目錄
DYNAMICRESOLUTION ##動(dòng)態(tài)解析表名
table ogg.*;
##指定Data Pump進(jìn)程發(fā)送trail文件到目標(biāo)端的位置(目標(biāo)端trail文件添加到隊(duì)列中)
add rmttrail /home/oracle/product/ogg_trg/dirdat/tr, extract dpump1
六、配置目標(biāo)端的進(jìn)程組
1、MGR管理進(jìn)程組
進(jìn)入E:\goldgate目錄下,運(yùn)行g(shù)gsci.exe
GGSCI (easdb) 3> edit param mgr
PORT 7809
DYNAMICPORTLIST 7809-7849
AUTOSTART REPLICAT *
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 2
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
PURGEOLDEXTRACTS E:\goldgate\dirdat\em*,usecheckpoints,minkeepdays 3
PORT 7839 ## 通信端口7839, 源端和目標(biāo)端需要保持一致。
USERID ogg, PASSWORD ogg ## GoldenGate用戶登錄數(shù)據(jù)庫(kù)的用戶名和密碼,密碼未做加密處理。如果密碼需要加密使用:GGSCI (dbtrg) 1> encrypt password pwd ,ENCRYPTKEY default 可以得到加密后的密碼字符串,之后配置進(jìn)程若使用加密過(guò)的密碼,需要帶參數(shù)(ENCRYPTKEY default)。例如:USERID ogg, PASSWORD xxx(加密過(guò)的密碼) ,ENCRYPTKEY default
DYNAMICPORTLIST 7840-7939 ## ##動(dòng)態(tài)端口列表的范圍從7840到7939。當(dāng)制定端口被占用或者出現(xiàn)通信故障,管理進(jìn)程將會(huì)從列表中選擇下一個(gè)端口嘗試連接,避免通信端口的單點(diǎn)故障。
AUTOSTART REPLICAT * ##當(dāng)MGR進(jìn)程啟動(dòng)后啟動(dòng)REPLICAT進(jìn)程
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 2 ## 當(dāng)REPLICAT進(jìn)程中斷后嘗試自動(dòng)重啟,每隔2分鐘嘗試啟動(dòng)一次,嘗試5次。
PURGEOLDEXTRACTS /home/oracle/product/ogg_trg/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 10 ##定期清理dirdat路徑下的本地隊(duì)列(local trail)。保留期限10天,過(guò)期后自動(dòng)刪除。從而控制隊(duì)列文件的目錄不會(huì)增長(zhǎng)過(guò)大。
PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10 ##刪除DDL歷史表,最小保存7天,最大保存10天。
PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10 ## 刪除MARKER歷史表,最小保存7天,最大保存10天。
LAGREPORTHOURS 1 ##每隔一小時(shí)檢查各進(jìn)程延時(shí)情況,并記錄到goldengate report文件。
LAGINFOMINUTES 30 ##進(jìn)程復(fù)制延時(shí)超過(guò)30分鐘,向日志文件記錄一條錯(cuò)誤日志
LAGCRITICALMINUTES 45 ##傳輸延時(shí)超過(guò)45分鐘將寫入警告日志
GGSCI (easdb) 4> start mgr
Managerstarted.
查看進(jìn)程狀態(tài)可發(fā)現(xiàn) MANAGER狀態(tài)為 RUNNING:
GGSCI (easdb) 5> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
2、配置目標(biāo)端的replicat進(jìn)程
先設(shè)置GLOBALS參數(shù)文件
GGSCI (easdb as ogg@orcl) 4> dblogin userid ogg,password oracle
Successfully logged into database.
GGSCI (easdb as ogg@orcl) 5> add checkpointtable ogg.oggckpt
Successfully created checkpoint table ogg.oggckpt.
GGSCI (easdb as ogg@orcl) 6> edit params ./GLOBALS
配置如下:
CHECKPOINTTABLE ogg.oggckpt
exit //退出,以使全局參數(shù)生效
創(chuàng)建完畢后,會(huì)在OGG_D表空間創(chuàng)建以下兩張表,可用ogg用戶登陸查看:
SQL> conn ogg/oracle
Connected.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
-------------------- --------------------- ----------
OGGCKPT TABLE
OGGCKPT_LOX TABLE
配置replicat進(jìn)程
GGSCI (easdb as ogg@orcl) 7>add replicat repem,exttrail ./dirdat/em
GGSCI (easdb as ogg@orcl) 8>edit params repem
REPLICAT repem
SETENV (ORACLE_SID=orcl)
USERID ogg, PASSWORD oracle
REPERROR DEFAULT, Discard
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/repeam.dsc, APPEND, MEGABYTES 2000
dynamicresolution
MAP ddling.*, TARGET ddling.*;
##創(chuàng)建replicat進(jìn)程
add replicat rep1, exttrail /home/oracle/product/ogg_trg/dirdat/tr, checkpointtable ogg.checkpoints
edit param rep1
#------------------
REPLICAT rep1
SETENV(ORACLE_SID="orcl")
SETENV(NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8)
USERID ogg, PASSWORD ogg
REPORT AT 06:00 ##每天06:00定期生成一個(gè)report文件
REPORTCOUNT EVERY 30 MINUTES, RATE ##每隔30分鐘報(bào)告一次從程序開始到現(xiàn)在的抽取進(jìn)程或者復(fù)制進(jìn)程的事物記錄數(shù),并匯報(bào)進(jìn)程的統(tǒng)計(jì)信息
REPORTROLLOVER AT 02:00 ##為了防止report file被寫滿,每天2:00做一次文件過(guò)期設(shè)定
REPERROR DEFAULT, ABEND ## 除了特殊指定的REPERROR語(yǔ)句,報(bào)告所有復(fù)制期間出現(xiàn)的錯(cuò)誤,回滾非正常中斷的事物和進(jìn)程。遇到不能處理的錯(cuò)誤就自動(dòng)abend,啟動(dòng)需要人工干預(yù)處理
ALLOWNOOPUPDATES ##當(dāng)源表有排除列情況或者有目標(biāo)表不存在的列時(shí),當(dāng)更新這列g(shù)oldengate默認(rèn)報(bào)錯(cuò)。應(yīng)用該參數(shù)后,即可讓goldengate生成一條警告信息而不是報(bào)錯(cuò)。
ASSUMETARGETDEFS ##使用ASSUMETARGETDEFS參數(shù)時(shí),用MAP語(yǔ)句中指定的生產(chǎn)庫(kù)源表和災(zāi)備端目標(biāo)表具有相同的列結(jié)構(gòu)。它指示的Oracle GoldenGate不在生產(chǎn)端查找源表的結(jié)構(gòu)定義。
HANDLECOLLISIONS ##用于goldengate自動(dòng)過(guò)濾不能出來(lái)的沖突記錄,為了嚴(yán)格保證數(shù)據(jù)一致性
DISCARDFILE /home/oracle/product/ogg_trg/dirrpt/repsa.dsc, APPEND, MEGABYTES 1024 ##將執(zhí)行失敗的記錄保存在discard file中,discard file文件記錄了GoldenGate進(jìn)程錯(cuò)誤、數(shù)據(jù)庫(kù)錯(cuò)誤、GoldenGate操作等信息。該文件位于./dirrpt/repsa.dsc,大小為1024MB。 文件中已經(jīng)包含記錄的話,再后面繼續(xù)追加,不刪除之前的記錄。
DISCARDROLLOVER AT 02:00 ##為了防止discard file被寫滿,每天2:00做一次文件過(guò)期設(shè)定
ddl include all ##設(shè)置DDL語(yǔ)句也會(huì)同步
ddlerror default ignore retryop ##開啟DDL復(fù)制后,目標(biāo)端Replicat進(jìn)程參數(shù)文件中必須配置忽略或者過(guò)濾DDLERROR的參數(shù)
MAP ogg.*, target ogg.*; ##對(duì)應(yīng)需要復(fù)制的對(duì)象,默認(rèn)一一對(duì)應(yīng)傳輸進(jìn)程
至此,源端和目標(biāo)端的所有進(jìn)程配置完畢,接下來(lái)就是啟動(dòng)進(jìn)程和初始化數(shù)據(jù)庫(kù)。
備份數(shù)據(jù)庫(kù)準(zhǔn)備:
先查看當(dāng)前數(shù)據(jù)庫(kù)的scn,并記錄下來(lái)
SYS@SIT> select current_scn from v$database;
CURRENT_SCNacle
-----------
22482934597 ---千萬(wàn)記住,在后面啟動(dòng)replicat進(jìn)程需要用到;
在E盤創(chuàng)建目錄dir,并授權(quán)
SYS@SIT> create directory MY_DIR as 'E:\dir';
Directory created.
SYS@SIT> grant read,write on directory MY_DIR to system;
創(chuàng)建完畢后,開始備份數(shù)據(jù)庫(kù)(以schemsa備份數(shù)據(jù)庫(kù))
expdp system/oracle schemas=ddling directory=MY_DIR dumpfile=ddling.dmp logfile=ddling.log flashback_scn=723538
備份完畢后,文件存放在E:\dir目錄下。
目標(biāo)端同樣在E盤創(chuàng)建目錄dir,并授權(quán),操作和源端一樣。
接下來(lái)就可以通過(guò)impdp命令還原數(shù)據(jù)庫(kù)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-443004.html
impdp system/oracle directory=MY_DIR dumpfile=ddling.dmp logfile=ddling.log
最后進(jìn)行驗(yàn)證。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-443004.html
到了這里,關(guān)于windows平臺(tái)goldgate同步oracle數(shù)據(jù)庫(kù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!