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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Goldengate的拆分与合并

發(fā)布時(shí)間:2024/8/26 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Goldengate的拆分与合并 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在使用Goldengate作為復(fù)制解決方案時(shí),隨著負(fù)載的增加,replicat組件常常是最先出現(xiàn)性能瓶頸的。為了適應(yīng)不斷增加的負(fù)載,就需要拆分replicat來實(shí)現(xiàn)并行復(fù)制,本文介紹Goldengate拆分的具體實(shí)施步驟。同時(shí),作為拆分的逆向操作,介紹如何將拆分的多個(gè)replicat合并回一個(gè)replicat。
拆分的方式一般分為兩種: 一種是用goldengate提供的@RANGE函數(shù)作表內(nèi)的拆分,通過對(duì)表上主鍵列作hash算法將該表上發(fā)生的變更均分到多個(gè)replicat上來降低單個(gè)replicat組件的負(fù)載; 另一種是將復(fù)制的表劃分成幾組,使用多個(gè)replicat組件來分別復(fù)制其中的一組表。 前一種拆分和合并方式的具體步驟參考metalink文檔:1320133.1和1512633.1。
本文介紹后一種拆分方式的實(shí)現(xiàn)步驟。 為了實(shí)現(xiàn)對(duì)表分組拆分,首先要考慮如何分組,通常我們可以按表的負(fù)載來劃分。 通過以下命令,生成近一段時(shí)間復(fù)制的統(tǒng)計(jì)report ? GGSCI>send rep01,report 在report文件中可以看到各個(gè)表上在過去一段時(shí)間分別發(fā)生了多少變更,進(jìn)而按負(fù)載將表均分到多個(gè)replicat組件中。 接下來以將一路replicat拆分成兩路的案例介紹具體實(shí)施步驟:
replicat進(jìn)程的拆分與合并 拆分: 1.停止replicat進(jìn)程 ? cd $GG_HOME ? ggsci ? GGSCI>stop rep01 ?? 2.將兩個(gè)新的replicat參數(shù)文件拷貝到$GG_HOME/dirprm目錄中。 ? 這兩個(gè)新的參數(shù)文件與原有的參數(shù)文件的主要區(qū)別是將其中的復(fù)制表按負(fù)載均分為了兩部分,分別放在單獨(dú)的參數(shù)文件中。 ?? 3.創(chuàng)建新的replicat組件 ? GGSCI> ADD REPLICAT rep01a,EXTTRAIL /oracle/goldengate/ggs/dirdat/r1 ? GGSCI> ADD REPLICAT rep02a,EXTTRAIL /oracle/goldengate/ggs/dirdat/r1 ?? 4.檢查replicat進(jìn)程的checkpoint信息 ?? ? GGSCI>info rep01,showch ? 記錄下其Current Checkpoint信息中的sequence和RBA值。 ? Current Checkpoint (position of last record read in the data source): ? ? Sequence #: 2157 ? ? RBA: 2856752 ? ? Timestamp: 2013-09-03 08:13:58.035316 ? ? Extract Trail: /oracle/goldengate/ggs/dirdat/r1 ? ?? 5.修改新建replicat進(jìn)程的read checkpoint信息 ? 根據(jù)step 4中得到的Current checkpoint信息修改新建replicat進(jìn)程的checkpoint信息,之后新建的replicat進(jìn)程就會(huì)從舊replicat進(jìn)程停止的位置開始抓取新的信息 ? GGSCI> alter rep01a, extseqno <sequence>, extrba <RBA> ? GGSCI> alter rep02a, extseqno <sequence >, extrba <RBA> ?? 6.啟動(dòng)新建的replicat進(jìn)程 ? GGSCI>start rep01a ? GGSCI>start rep02a ?? 7.刪除舊的replicat進(jìn)程 ? ? GGSCI>dblogin userid <gg user>,password *** ? GGSCI>delete rep01 ??? ?? 合并: 1.停止extract進(jìn)程 ? cd $GG_HOME ? ggsci ? GGSCI>stop ext01
2.檢查extract進(jìn)程的checkpoint信息? ? GGSCI>info ext01,showch ? 記錄下其Write Checkpoint信息中的sequence和RBA值,比如: ? Write Checkpoint #1 ? GGS Log Trail ? Current Checkpoint (current write position): ? ? Sequence #: 2157 ? ? RBA: 36277005
3.檢查pump進(jìn)程的checkpoint信息 ? GGSCI>info pump01,showch ? 若pump進(jìn)程的Current Checkpoint信息中的sequence和RBA值與step 2得到的值相等,則說明goldengate抓取的信息都已被傳送到了target服務(wù)器上,可繼續(xù)執(zhí)行下一步驟。否則,等待并重復(fù)運(yùn)行該命令。 ? 比如: ? Current Checkpoint (position of last record read in the data source): ? ? Sequence #: 2157 ? ? RBA: 36277005
? 同時(shí),記錄下其Write Checkpoint信息中的sequence和RBA值。 ? 比如: ? Write Checkpoint #1 ? GGS Log Trail ? Current Checkpoint (current write position): ? ? Sequence #: 2160 ? ? RBA: 41659507
4.檢查replicat進(jìn)程的checkpoint信息 ?? ? GGSCI>info rep01a,showch ? GGSCI>info rep02a,showch ? 若replicat進(jìn)程的Current Checkpoint信息中的sequence和RBA值與step 3中得到的Write Checkpoint信息相等,則說明goldengate抓取的信息都已被apply到target db,可繼續(xù)執(zhí)行下一步驟。否則,等待并重復(fù)運(yùn)行該命令。 ? 比如: ? Current Checkpoint (position of last record read in the data source): ? ? Sequence #: 2160 ? ? RBA: 41659507 ? ?? 5.停止舊的replicat進(jìn)程? ? GGSCI>stop rep01a ? GGSCI>stop rep02a ? ? ?? 6.將合并后新的replicat參數(shù)文件拷貝到$GG_HOME/dirprm目錄中。 ? 合并后新的參數(shù)文件是將原有的兩個(gè)參數(shù)文件中的表合并到了一個(gè)文件中。 ? ?? 7.創(chuàng)建新的replicat進(jìn)程 ? GGSCI> ADD REPLICAT rep01,EXTTRAIL /oracle/goldengate/ggs/dirdat/r1
8.修改新建replicat進(jìn)程的read checkpoint信息 ? 根據(jù)step 4中得到的Current checkpoint信息修改新建replicat進(jìn)程的checkpoint信息,之后新建的replicat進(jìn)程就會(huì)從舊replicat進(jìn)程停止的位置開始抓取新的信息 ? GGSCI> alter rep01, extseqno <sequence>, extrba <RBA> ?? 9.啟動(dòng)新建的replicat進(jìn)程 ? GGSCI>start rep01
10.啟動(dòng)extract進(jìn)程 ? GGSCI>start ext01 ? ?? 11.刪除舊的replicat進(jìn)程 ? GGSCI>dblogin userid <gg user>,password *** ? GGSCI>delete rep01a ? GGSCI>delete rep02a ?? ? ?? 查詢關(guān)于Goldengate的相關(guān)資料可發(fā)現(xiàn),作為實(shí)現(xiàn)goldengate best practice的建議之一,oracle建議:"To avoid contention, Oracle recommends that when reading trail files, you pair each Replicat with its own trail file".也就是說,當(dāng)考慮拆分replicat來實(shí)現(xiàn)并行復(fù)制時(shí),oracle建議最好從pump組件開始拆分,以下步驟就針對(duì)前面的案例,進(jìn)一步說明了如何從pump組件開始拆分goldengate.然后介紹如何對(duì)這種拆分作逆向合并。
pump和replicat進(jìn)程的拆分與合并 拆分: 1.停止extract進(jìn)程 ? cd $GG_HOME ? ggsci ? GGSCI>stop ext01
2.檢查extract進(jìn)程的checkpoint信息? ? GGSCI>info ext01,showch ? 記錄下其Write Checkpoint信息中的sequence和RBA值,比如: ? Write Checkpoint #1 ? GGS Log Trail ? Current Checkpoint (current write position): ? ? Sequence #: 2153 ? ? RBA: 91925643
3.檢查pump進(jìn)程的checkpoint信息 ? GGSCI>info pump01,showch ? 若pump進(jìn)程的Current Checkpoint信息中的sequence和RBA值與step 2得到的值相等,則說明goldengate抓取的信息都已被傳送到了target服務(wù)器上,可繼續(xù)執(zhí)行下一步驟。否則,等待并重復(fù)運(yùn)行該命令。 ? Current Checkpoint (position of last record read in the data source): ? ? Sequence #: 2153 ? ? RBA: 91925643 ? ?? ? 記錄下其Write Checkpoint信息中的sequence和RBA值,比如: ? Write Checkpoint #1 ? GGS Log Trail ? Current Checkpoint (current write position): ? ? Sequence #: 2157 ? ? RBA: 2332672
4.停止舊的pump進(jìn)程? ? GGSCI>stop pump01? ?? 5.檢查replicat進(jìn)程的checkpoint信息 ?? ? GGSCI>info rep01,showch ? 若replicat進(jìn)程的Current Checkpoint信息中的sequence和RBA值與step 3中得到的Write Checkpoint信息相等,則說明goldengate抓取的信息都已被apply到target db,可繼續(xù)執(zhí)行下一步驟。否則,等待并重復(fù)運(yùn)行該命令。 ? Current Checkpoint (position of last record read in the data source): ? ? Sequence #: 2157 ? ? RBA: 2856752 ? ?? 6.停止舊的replicat進(jìn)程? ? GGSCI>stop rep01?
7.將兩個(gè)新的pump參數(shù)文件拷貝到$GG_HOME/dirprm目錄中。 ? 這兩個(gè)新的參數(shù)文件與原有的參數(shù)文件的主要區(qū)別是將其中的復(fù)制表按負(fù)載均分為了兩部分,分別放在單獨(dú)的參數(shù)文件中。 ?? 8.創(chuàng)建兩個(gè)新的pump進(jìn)程 ? GGSCI>ADD EXTRACT pump01a, EXTTRAILSOURCE /oracle/goldengate/ggs/dirdat/e1 ? GGSCI>ADD RMTTRAIL /oracle/goldengate/ggs/dirdat/r1, EXTRACT pump01a,MEGABYTES 100 ? GGSCI>ADD EXTRACT pump02a, EXTTRAILSOURCE /oracle/goldengate/ggs/dirdat/e1 ? GGSCI>ADD RMTTRAIL /oracle/goldengate/ggs/dirdat/r2, EXTRACT pump02a,MEGABYTES 100
9.修改新建pump進(jìn)程的read checkpoint信息 ? 根據(jù)step 3中得到的read checkpoint信息修改新建pump進(jìn)程的checkpoint信息,讓其從舊pump進(jìn)程停止的位置開始抓取新的信息 ? GGSCI> ALTER EXTRACT pump01a, EXTSEQNO <sequence>, EXTRBA <RBA> ? GGSCI> ALTER EXTRACT pump02a, EXTSEQNO <sequence>, EXTRBA <RBA> ?? 10.將兩個(gè)新的replicat參數(shù)文件拷貝到$GG_HOME/dirprm目錄中。 ? 與pump參數(shù)文件類似,這兩個(gè)新的參數(shù)文件與原有的參數(shù)文件的主要區(qū)別是對(duì)表的拆分。 ? ?? 11.創(chuàng)建兩個(gè)新的replicat進(jìn)程 ? GGSCI>ADD REPLICAT rep01a,EXTTRAIL /oracle/goldengate/ggs/dirdat/r1 ? ? ? GGSCI>ADD REPLICAT rep02a,EXTTRAIL /oracle/goldengate/ggs/dirdat/r2 ?? 12.刪除traget服務(wù)器上/oracle/goldengate/ggs/dirdat/目錄下原有的以r1開頭的trail file文件
13.啟動(dòng)新建的pump進(jìn)程 ? GGSCI>start pump01a ? GGSCI>start pump02a ?? 14.啟動(dòng)新建的replicat進(jìn)程 ? GGSCI>start rep01a ? GGSCI>start rep02a
13.刪除舊的pump進(jìn)程 ? GGSCI>delete pump01
14.刪除舊的replicat進(jìn)程 ? GGSCI>dblogin userid <gg user>,password *** ? GGSCI>delete rep01 ? ? ? ?? 合并: 1.停止extract進(jìn)程 ? cd $GG_HOME ? ggsci ? GGSCI>stop ext01
2.檢查extract進(jìn)程的checkpoint信息? ? GGSCI>info ext01,showch ? 記錄下其Write Checkpoint信息中的sequence和RBA值,比如: ? Write Checkpoint #1 ? GGS Log Trail ? Current Checkpoint (current write position): ? ? Sequence #: 2153 ? ? RBA: 91925643
3.檢查pump進(jìn)程的checkpoint信息 ? GGSCI>info pump01a,showch ? GGSCI>info pump02a,showch ? ? 若pump進(jìn)程的Current Checkpoint信息中的sequence和RBA值與step 2得到的值相等,則說明goldengate抓取的信息都已被傳送到了target服務(wù)器上,可繼續(xù)執(zhí)行下一步驟。否則,等待并重復(fù)運(yùn)行該命令。 ? Current Checkpoint (position of last record read in the data source): ? ? Sequence #: 2153 ? ? RBA: 91925643 ? ?? ? 記錄下其Write Checkpoint信息中的sequence和RBA值,比如: ? Write Checkpoint #1 ? GGS Log Trail ? Current Checkpoint (current write position): ? ? Sequence #: 2157 ? ? RBA: 2332672
4.停止舊的pump進(jìn)程? ? GGSCI>stop pump01a? ? GGSCI>stop pump02a ?? ?? 5.檢查replicat進(jìn)程的checkpoint信息 ?? ? GGSCI>info rep01a,showch ? GGSCI>info rep01a,showch ? 若replicat進(jìn)程的Current Checkpoint信息中的sequence和RBA值與step 3中得到的Write Checkpoint信息相等,則說明goldengate抓取的信息都已被apply到target db,可繼續(xù)執(zhí)行下一步驟。否則,等待并重復(fù)運(yùn)行該命令。 ? Current Checkpoint (position of last record read in the data source): ? ? Sequence #: 2157 ? ? RBA: 2856752 ? ?? 6.停止舊的replicat進(jìn)程? ? GGSCI>stop rep01a ? GGSCI>stop rep02a ??
7.將合并后新的pump參數(shù)文件拷貝到$GG_HOME/dirprm目錄中。 ? 合并后新的參數(shù)文件是將原有的兩個(gè)參數(shù)文件中的表合并到了一個(gè)文件中。? ?? 8.創(chuàng)建新的pump進(jìn)程 ? GGSCI>ADD EXTRACT pump01, EXTTRAILSOURCE /oracle/goldengate/ggs/dirdat/e1 ? GGSCI>ADD RMTTRAIL /oracle/goldengate/ggs/dirdat/r1, EXTRACT pump01,MEGABYTES 100
9.修改新建pump進(jìn)程的read checkpoint信息 ? 根據(jù)step 3中得到的read checkpoint信息修改新建pump進(jìn)程的checkpoint信息,讓其從舊pump進(jìn)程停止的位置開始抓取新的信息 ? GGSCI> ALTER EXTRACT pump01, EXTSEQNO <sequence>, EXTRBA <RBA> ?? 10.將合并后新的replicat參數(shù)文件拷貝到$GG_HOME/dirprm目錄中。 ? 合并后新的參數(shù)文件是將原有的兩個(gè)參數(shù)文件中的表合并到了一個(gè)文件中。? ?? 11.創(chuàng)建新的replicat進(jìn)程 ? GGSCI>ADD REPLICAT rep01,EXTTRAIL /oracle/goldengate/ggs/dirdat/r1 ? ?? 12.刪除traget服務(wù)器上/oracle/goldengate/ggs/dirdat/目錄下原有的以r1開頭的trail file文件
13.啟動(dòng)新建的pump進(jìn)程 ? GGSCI>start pump01 ? ?? 14.啟動(dòng)新建的replicat進(jìn)程 ? GGSCI>start rep01
13.刪除舊的pump進(jìn)程 ? GGSCI>delete pump01a ? GGSCI>delete pump02a ?? 14.刪除舊的replicat進(jìn)程 ? GGSCI>dblogin userid <gg user>,password *** ? GGSCI>delete rep01a ? GGSCI>delete rep02a

總結(jié)

以上是生活随笔為你收集整理的Goldengate的拆分与合并的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。