日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Goldengate 实现Oracle for Oracle 单向数据同步

發布時間:2025/3/21 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Goldengate 实现Oracle for Oracle 单向数据同步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實驗環境

數據源端: ?host1 ip 192.168.199.163 ?

數據目標端: host2 ip 192.168.199.104


兩臺機器都安裝?http://lqding.blog.51cto.com/9123978/1694971?文中描述安裝配置好了Goldengate 。


要實現數據的同步,Oracle源端必須滿足如下設置

  • Oracle需要運行在歸檔模式下

  • SQL>?startup?mount? ORACLE?instance?started.Total?System?Global?Area??835104768?bytes Fixed?Size ????2217952?bytes Variable?Size ??574621728?bytes Database?Buffers ??255852544?bytes Redo?Buffers ????2412544?bytes Database?mounted. SQL>?alter?database?archivelog;Database?altered.SQL>?alter?database?open;Database?altered.

    2. 開啟日志附加屬性

    SQL>?ALTER?DATABASE?ADD?SUPPLEMENTAL?LOG?DATA;Database?altered.SQL>?ALTER?SYSTEM?SWITCH?LOGFILE;System?altered.


    ogg安裝目錄下提供了一些demo的sql

    [oracle@localhost?ogg]$?ls?demo_ora_* demo_ora_create.sql??demo_ora_insert.sql??demo_ora_lob_create.sql??demo_ora_misc.sql??demo_ora_pk_befores_create.sql??demo_ora_pk_befores_insert.sql??demo_ora_pk_befores_updates.sql


    我們使用demo_ora_create.sql在源和目的端都創建兩張表,在源端使用demo_ora_insert.sql插入數據。

    host1

    SQL>?alter?user?scott?identified?by?tiger?account?unlock;User?altered.SQL>?grant?resource?to?scott;??#ggsci?登錄數據庫時需要該權限 Grant?succeeded.SQL>?grant?select?any?dictionary?to?scott;?#?add?trandata時需要該權限Grant?succeeded. SQL>?conn?scott/tiger Connected. SQL>?@demo_ora_create.sql SQL>?@demo_ora_insert.sql

    host2

    SQL>?alter?user?scott?identified?by?tiger?account?unlock;User?altered. SQL>?grant?resource?to?scott;??#ggsci?登錄數據庫時需要該權限 Grant?succeeded.SQL>?grant?select?any?dictionary?to?scott;?#?add?trandata時需要該權限 SQL>?conn?scott/tiger Connected. SQL>?@demo_ora_create.sql


    為需要同步的表,添加附加日志

    GGSCI?(localhost.localdomain)?1>?dblogin?userid?scott,?password?tiger Successfully?logged?into?database.GGSCI?(localhost.localdomain)?2>?add?trandata?scott.tcustmerLogging?of?supplemental?redo?data?enabled?for?table?SCOTT.TCUSTMER.GGSCI?(localhost.localdomain)?3>?add?trandata?scott.tcustordLogging?of?supplemental?redo?data?enabled?for?table?SCOTT.TCUSTORD.


    一、初始化加載數據

    在源端配置一個初始化Extract,用來同步表中現有數據

    GGSCI?(localhost.localdomain)?7>?ADD?EXTRACT?EINILOAD,?SOURCEISTABLE EXTRACT?added.

    ADD EXTRACT命令用來添加一個EXTRACT, EINILOAD為Extract的group name 。SOURCEISTABLE表示數據源為表。

    查看Extract的信息

    GGSCI?(localhost.localdomain)?9>?INFO?EXTRACT?*,?TASKSEXTRACT????EINILOAD??Initialized???2015-09-11?15:25???Status?STOPPED Checkpoint?Lag???????Not?Available Log?Read?Checkpoint??Not?AvailableFirst?Record?????????Record?0 Task?????????????????SOURCEISTABLE

    配置初始化加載的捕獲參數

    GGSCI?(localhost.localdomain)?10>?edit?params?EINILOAD-- --?GoldenGate?Initial?Data?Capture --?for?TCUSTMER?and?TCUSTORD -- EXTRACT?EINILOAD USERID?system,?PASSWORD?"oracle" RMTHOST?192.168.199.104,?MGRPORT?7809 RMTTASK?REPLICAT,?GROUP?RINILOAD TABLE?SCOTT.TCUSTMER; TABLE?SCOTT.TCUSTORD;


    在目標端,配置一個REPLICAT

    GGSCI?(localhost.localdomain)?2>?ADD?REPLICAT?RINILOAD,?SPECIALRUN REPLICAT?added.


    查看REPLICAT信息

    GGSCI?(localhost.localdomain)?4>?info?replicat?*,?tasksREPLICAT???RINILOAD??Initialized???2015-08-22?14:18???Status?STOPPED Checkpoint?Lag???????00:00:00?(updated?00:02:50?ago) Log?Read?Checkpoint??Not?Available Task?????????????????SPECIALRUN

    配置Replicat參數

    GGSCI?(localhost.localdomain)?5>?edit?params?riniload-- --?GoldenGate?Initial?Load?Delivery -- REPLICAT?RINILOAD ASSUMETARGETDEFS USERID?system,?PASSWORD?"oracle" DISCARDFILE?./dirrpt/RINILOAD.dsc,?PURGE MAP?scott.*,?TARGET?scott.*;


    啟動Extract

    GGSCI?(localhost.localdomain)?11>?start?extract?einiloadSending?START?request?to?MANAGER?... EXTRACT?EINILOAD?starting


    查看日志

    GGSCI?(localhost.localdomain)?21>?view?report?einiload

    如果有報錯,查找原因并解決

    Processing?table?SCOTT.TCUSTMERProcessing?table?SCOTT.TCUSTORD*********************************************************************** *???????????????????**?Run?Time?Statistics?**?????????????????????????* ***********************************************************************Report?at?2015-09-11?16:23:40?(activity?since?2015-09-11?16:23:33)Output?to?RINILOAD:From?Table?SCOTT.TCUSTMER:#???????????????????inserts:?????????2#???????????????????updates:?????????0#???????????????????deletes:?????????0#??????????????????discards:?????????0 From?Table?SCOTT.TCUSTORD:#???????????????????inserts:?????????2#???????????????????updates:?????????0#???????????????????deletes:?????????0#??????????????????discards:?????????0REDO?Log?StatisticsBytes?parsed????????????????????0Bytes?output??????????????????574

    日志顯示,已成功同步數據。

    到目的庫上驗證

    SQL>?select?count(*)?from?tcustmer;COUNT(*) ----------2SQL>?select?count(*)?from?tcustord;COUNT(*) ----------2


    二、配置數據實時同步

    源端,配置一個實時Extract?

    GGSCI?(localhost.localdomain)?22>?ADD?EXTRACT?EORAKK,?TRANLOG,?BEGIN?NOW,?THREADS?1 EXTRACT?added.

    編輯Extract的參數文件

    GGSCI?(localhost.localdomain)?23>?EDIT?PARAMS?EORAKK-- --?Change?Capture?parameter?file?to?capture --?TCUSTMER?and?TCUSTORD?Changes -- EXTRACT?EORAKK USERID?system,?PASSWORD?oracle RMTHOST?192.168.199.104,?MGRPORT?7809 RMTTRAIL?./dirdat/KK TABLE?SCOTT.TCUSTMER; TABLE?SCOTT.TCUSTORD;

    為Extract添加遠端tail file,也就是說這個tail file是在目的端生成的。

    GGSCI?(localhost.localdomain)?24>?ADD?RMTTRAIL?./dirdat/KK,?EXTRACT?EORAKK,?MEGABYTES?5 RMTTRAIL?added.


    驗證結果

    GGSCI?(localhost.localdomain)?28>?INFO?RMTTRAIL?*Extract?Trail:?./dirdat/KKExtract:?EORAKKSeqno:?0RBA:?0File?Size:?5M

    啟動Extract 進程

    GGSCI?(localhost.localdomain)?29>?start?extract?eorakkSending?START?request?to?MANAGER?... EXTRACT?EORAKK?starting

    驗證結果

    GGSCI?(localhost.localdomain)?30>?INFO?EXTRACT?EORAKK,?DETAILEXTRACT????EORAKK????Last?Started?2015-09-11?17:07???Status?RUNNING Checkpoint?Lag???????00:00:00?(updated?00:00:01?ago) Log?Read?Checkpoint??Oracle?Redo?Logs2015-09-11?17:07:47??Thread?1,?Seqno?25,?RBA?36139008SCN?0.1174781?(1174781)Target?Extract?Trails:Remote?Trail?Name????????????????????????????????Seqno????????RBA?????Max?MB./dirdat/KK??????????????????????????????????????????0???????1050??????????5Extract?Source??????????????????????????Begin?????????????End?????????????/u01/app/oracle/oradata/orcl/redo01.log??2015-09-11?16:58??2015-09-11?17:07Not?Available???????????????????????????*?Initialized?*???2015-09-11?16:58Current?directory????/u01/app/oggReport?file??????????/u01/app/ogg/dirrpt/EORAKK.rpt Parameter?file???????/u01/app/ogg/dirprm/eorakk.prm Checkpoint?file??????/u01/app/ogg/dirchk/EORAKK.cpe Process?file?????????/u01/app/ogg/dirpcs/EORAKK.pce Stdout?file??????????/u01/app/ogg/dirout/EORAKK.out Error?log????????????/u01/app/ogg/ggserr.logGGSCI?(localhost.localdomain)?31>?VIEW?REPORT?EORAKKGGSCI?(localhost.localdomain)?32>?INFO?ALLProgram?????Status??????Group???????Lag?at?Chkpt??Time?Since?ChkptMANAGER?????RUNNING??????????????????????????????????????????? EXTRACT?????RUNNING?????EORAKK??????00:00:00??????00:00:06


    目標端,配置REPLICAT

    安裝checkpoint表

    配置checkpoint表的名稱

    GGSCI?(localhost.localdomain)?33>?EDIT?PARAMS?./GLOBALSHECKPOINTTABLE?system.ggschkpt

    生成checkpoint表?

    GGSCI?(localhost.localdomain)?1>?DBLOGIN?USERID?system,?PASSWORD?oracle Successfully?logged?into?database.GGSCI?(localhost.localdomain)?2>?ADD?CHECKPOINTTABLENo?checkpoint?table?specified,?using?GLOBALS?specification?(system.ggschkpt)...Successfully?created?checkpoint?table?system.ggschkpt.GGSCI?(localhost.localdomain)?3>


    添加Replicat

    GGSCI?(localhost.localdomain)?3>?ADD?REPLICAT?RORAKK,?EXTTRAIL?./dirdat/KK REPLICAT?added.


    創建Replicat的參數文件

    GGSCI?(localhost.localdomain)?4>?EDIT?PARAMS?RORAKK-- --?Change?Delivery?parameter?file?to?apply --?TCUSTMER?and?TCUSTORD?Changes -- REPLICAT?RORAKK USERID?system,?PASSWORD?oracle HANDLECOLLISIONS ASSUMETARGETDEFS DISCARDFILE?./dirrpt/RORAKK.DSC,?PURGE MAP?scott.tcustmer,?TARGET?scott.tcustmer; MAP?scott.tcustord,?TARGET?scott.tcustord;

    啟動Replicat

    GGSCI?(localhost.localdomain)?5>?start?replicat?rorakkSending?START?request?to?MANAGER?... REPLICAT?RORAKK?starting

    驗證結果

    GGSCI?(localhost.localdomain)?6>?info?replicat?rorakkREPLICAT???RORAKK????Last?Started?2015-08-22?15:49???Status?RUNNING Checkpoint?Lag???????00:00:00?(updated?00:00:08?ago) Log?Read?Checkpoint??File?./dirdat/KK000000First?Record??RBA?1050


    驗證數據同步

    在源數據庫,執行如下腳本,對兩個表進行insert、update、delete操作

    [oracle@localhost?ogg]$?sqlplus?scott/tigerSQL*Plus:?Release?11.2.0.1.0?Production?on?Fri?Sep?11?17:58:17?2015Copyright?(c)?1982,?2009,?Oracle.??All?rights?reserved.Connected?to: Oracle?Database?11g?Enterprise?Edition?Release?11.2.0.1.0?-?64bit?Production With?the?Partitioning,?OLAP,?Data?Mining?and?Real?Application?Testing?optionsSQL>?@/u01/app/ogg/demo_ora_misc.sql

    查看源表中的數據

    SQL>?select?count(*)?from?tcustmer;COUNT(*) ----------5SQL>?select?count(*)?from?tcustord;COUNT(*) ----------3

    查看目的表的數據

    SQL>?select?count(*)?from?tcustmer;COUNT(*) ----------5SQL>?select?count(*)?from?tcustord;COUNT(*) ----------3

    數據已同步


    三、為同步添加data pump

    如果沒有data pump,Extract將Trail file寫到遠程機器上。如果為Extract配置了Data Pump。那么Extract將Trail file寫到本地。然后Trail 文件由Data Pump傳輸到遠端。

  • 先修改Extract的配置

  • GGSCI?(localhost.localdomain)?1>?info?allProgram?????Status??????Group???????Lag?at?Chkpt??Time?Since?ChkptMANAGER?????RUNNING??????????????????????????????????????????? EXTRACT?????RUNNING?????EORAKK??????00:00:00??????00:00:09????GGSCI?(localhost.localdomain)?2>?stop?extract?eorakkSending?STOP?request?to?EXTRACT?EORAKK?... Request?processed.GGSCI?(localhost.localdomain)?3>?edit?params?eorakk-- --?Change?Capture?parameter?file?to?capture --?TCUSTMER?and?TCUSTORD?Changes -- EXTRACT?EORAKK USERID?system,?PASSWORD?oracle RMTHOST?192.168.199.104,?MGRPORT?7809 EXTTRAIL?./dirdat/KK TABLE?SCOTT.TCUSTMER; TABLE?SCOTT.TCUSTORD;

    將參數文件中的RMTTRAIL ./dirdat/kk 改為 EXTTRAIL ./dirdat/KK


    2. 刪除Extract的遠程Trail

    GGSCI?(localhost.localdomain)?7>?DELETE?RMTTRAIL?./dirdat/KK Deleting?extract?trail?./dirdat/KK?for?extract?EORAKK

    3. 增加一個本地Trail?

    GGSCI?(localhost.localdomain)?10>?ADD?EXTTRAIL?./dirdat/KK,?EXTRACT?eorakk EXTTRAIL?added.


    4. 新增Data pump?

    GGSCI?(localhost.localdomain)?12>?ADD?EXTRACT?EPMPKK,?EXTTRAILSOURCE?./dirdat/KK EXTRACT?added.

    Data pump本質上也是一個Extract,只是類型不同而已

    為data pump配置參數文件

    GGSCI?(localhost.localdomain)?14>?edit?params?epmpkk-- --?Data?Pump?parameter?file -- EXTRACT?EPMPKK PASSTHRU RMTHOST?192.168.199.104,?MGRPORT?7809 RMTTRAIL?./dirdat/KK TABLE?SCOTT.TCUSTMER; TABLE?SCOTT.TCUSTORD;

    為Data Pump添加遠端Trail

    GGSCI?(localhost.localdomain)?15>?add?rmttrail?./dirdat/KK,?EXTRACT?EPMPKK RMTTRAIL?added.


    啟動Extract、Data Pump

    GGSCI?(localhost.localdomain)?16>?start?extract?eorakkSending?START?request?to?MANAGER?... EXTRACT?EORAKK?startingGGSCI?(localhost.localdomain)?17>?start?extract?epmpkkSending?START?request?to?MANAGER?... EXTRACT?EPMPKK?starting


    驗證數據同步

    在源端,刪除兩個表的內容

    SQL>?delete?from?tcustmer;5?rows?deleted.SQL>?delete?from?tcustord;3?rows?deleted.SQL>?commit;Commit?complete.


    查看目的端表內容

    SQL>?select?*?from?tcustmer;no?rows?selectedSQL>?select?*?from?tcustord;no?rows?selected


    轉載于:https://blog.51cto.com/lqding/1695162

    總結

    以上是生活随笔為你收集整理的使用Goldengate 实现Oracle for Oracle 单向数据同步的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。