OGG的抽取程式合併

xueshancheng 發表於 2021-11-25

1 尋找一個時間點,四個OGG抽取程式讀取的日誌相差特別小,使用強制命令停止OGG程式

首先根據歸檔日誌切換,找到每日資料庫壓力最小的時間點,認為7-9點和17點-21點為業務資料量比較清閒是時間段。在此時間段內尋找合併的抽取程式差異最小的時間點,資料量相差在10M內。

OGG的抽取程式合併

使用 info ET_*  檢視合併的OGG抽取程式讀取的歸檔日誌,找到合併的程式差異最小時間點,並強行停止OGG抽取程式。

如果MGR程式配置OGG程式自動重啟,則需要將此引數禁用,並重啟MGR程式。


SEND EXTRACT ET_CJ, FORCESTOP 

 SEND EXTRACT ET_JA, FORCESTOP 

 SEND EXTRACT ET_TB, FORCESTOP 

 SEND EXTRACT ET_YD, FORCESTOP  


停止後的狀態如下

EXTRACT     ABENDED     ET_CJ       00:00:01      00:01:19    

EXTRACT     ABENDED     ET_JA       00:00:01      00:01:16    

EXTRACT     STOPPED     ET_TB       00:00:00      00:01:13    

EXTRACT     STOPPED     ET_YD       00:00:01      00:01:13


檢視每個抽取程式程式讀取的RBA號的位置,並以最小的時間為準。

GGSCI (XXDB3) 24> info ET_*


EXTRACT    ET_CJ     Last Started 2021-11-19 08:49   Status ABENDED

Checkpoint Lag       00:00:01 (updated 00:00:13 ago)

Log Read Checkpoint  Oracle Redo Logs

                      2021-11-19 08:51:38  Thread 1, Seqno 923151, RBA 226304

                     SCN 3689.4151044528 (15848285399472)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:51:40  Thread 2, Seqno 513373, RBA 580112

                     SCN 3689.4151046683 (15848285401627)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:43:41  Thread 3, Seqno 700612, RBA 759541456

                     SCN 3689.4150310212 (15848284665156)


EXTRACT    ET_JA     Last Started 2021-11-19 08:49   Status ABENDED

Checkpoint Lag       00:00:01 (updated 00:00:10 ago)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:51:42  Thread 1, Seqno 923151, RBA 243200

                     SCN 3689.4151048854 (15848285403798)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:51:43  Thread 2, Seqno 513373, RBA 599568

                     SCN 3689.4151049970 (15848285404914)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:43:40  Thread 3, Seqno 700612, RBA 750326584

                     SCN 3689.4150309682 (15848284664626)


EXTRACT    ET_TB     Last Started 2021-11-19 08:49   Status STOPPED

Checkpoint Lag       00:00:00 (updated 00:00:07 ago)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:51:45  Thread 1, Seqno 923151, RBA 261120

                     SCN 3689.4151052791 (15848285407735)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:51:47  Thread 2, Seqno 513373, RBA 616292

                     SCN 3689.4151054181 (15848285409125)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:43:50  Thread 3, Seqno 700612, RBA 1104938896

                     SCN 3689.4150328763 (15848284683707)


EXTRACT    ET_YD     Last Started 2021-11-19 08:49   Status STOPPED

Checkpoint Lag       00:00:01 (updated 00:00:07 ago)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:51:45  Thread 1, Seqno 923151, RBA 259072

                     SCN 3689.4151052078 (15848285407022)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:51:46  Thread 2, Seqno 513373, RBA 614928

                     SCN 3689.4151053645 (15848285408589)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:43:50  Thread 3, Seqno 700612, RBA 1089680932

                     SCN 3689.4150328161 (15848284683105)


根據如上資訊,決定使用使用每個執行緒最低的RBA號進行資料抽取,差異在10M內,

有可能會導致目標端的資料有重複資料但不會導致資料丟失,應該是在可以接受的範圍內。

否則,則需要業務系統所有的業務,才能保證幾個抽取程式讀取的位置一致。

例項1     2021-11-19 08:51:38  Thread 1, Seqno 923151, RBA 226304

例項2     2021-11-19 08:51:40  Thread 2, Seqno 513373, RBA 580112

例項3     2021-11-19 08:43:40  Thread 3, Seqno 700612, RBA 750326584


2 停止投遞程式,並將投遞程式中的引數檔案予以修改。即將抽取程式中的表,複製到投遞程式中,

並記錄投遞程式讀取的RBA號,以作回退使用。

GGSCI (XXDB3) 24> stop DP_*


Sending STOP request to EXTRACT DP_CJ ...

Request processed.


Sending STOP request to EXTRACT DP_JA ...

Request processed.


Sending STOP request to EXTRACT DP_TB ...

Request processed.


Sending STOP request to EXTRACT DP_YD ...

Request processed.



GGSCI (XXDB3) 25> info DP_*


EXTRACT    DP_CJ     Last Started 2021-11-15 23:33   Status STOPPED

Checkpoint Lag       00:00:00 (updated 00:00:08 ago)

Log Read Checkpoint  File ./dirdat/cj2/cj041171

                     2021-11-19 08:49:45.202412  RBA 1384


EXTRACT    DP_JA     Last Started 2021-11-19 09:42   Status STOPPED

Checkpoint Lag       00:00:00 (updated 00:00:07 ago)

Log Read Checkpoint  File ./dirdat/ja/jb128023

                     2021-11-19 08:49:45.275881  RBA 1385


EXTRACT    DP_TB     Last Started 2021-11-15 23:33   Status STOPPED

Checkpoint Lag       00:00:00 (updated 00:00:07 ago)

Log Read Checkpoint  File ./dirdat/tb/tb004071

                     2021-11-19 08:49:45.523086  RBA 1061


EXTRACT    DP_YD     Last Started 2021-11-15 23:33   Status STOPPED

Checkpoint Lag       00:00:00 (updated 00:00:06 ago)

Log Read Checkpoint  File ./dirdat/yd/yd008514

                     2021-11-19 08:49:45.218477  RBA 1061


3 將 ET_CJ、ET_JA、ET_TB、ET_YD 四個抽取程式中的表進行整理去重,合併到一起,並新增到ET_TB程式中

此步驟相關的表就不列在此處了。


4  調整ET_TB程式的trail檔案大小及讀取的位置,此此調整trail檔案大小,主要是解決11G的OGG的trail

檔案號達到999999時的故障,提前進行處理,避免未來某一天因為此問題導致OGG程式的異常。

 修改ET_TB 的抽取trail檔案大小為2G

       extract Trail: ./dirdat/tb/tb

             extract: ET_TB

               Seqno: 4071

                 RBA: 1061

           File Size: 200M   --修改前

 以下為執行的修改命令       

 GGSCI (XXDB3) 39> ALTER EXTTRAIL ./dirdat/tb/tb, EXTRACT ET_TB, MEGABYTES 2000

EXTTRAIL altered.


     extract Trail: ./dirdat/tb/tb

             extract: ET_TB

               Seqno: 4071

                 RBA: 1061

           File Size: 2000M      --修改後

           

修改ET_TB 讀取歸檔日誌的位置:

GGSCI (XXDB3) 41> info ET_tb


EXTRACT    ET_TB     Initialized   2021-11-19 08:49   Status STOPPED

Checkpoint Lag       00:00:00 (updated 01:19:32 ago)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:51:45  Thread 1, Seqno 923151, RBA 261120

                     SCN 3689.4151052791 (15848285407735)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:51:47  Thread 2, Seqno 513373, RBA 616292

                     SCN 3689.4151054181 (15848285409125)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:43:50  Thread 3, Seqno 700612, RBA 1104938896

                     SCN 3689.4150328763 (15848284683707) 


GGSCI (XXDB3) 42> ALTER EXTRACT    ET_TB,  Thread 1, ET_SEQNO 923151, ET_RBA 226304

EXTRACT altered.



GGSCI (XXDB3) 43> ALTER EXTRACT    ET_TB,  Thread 2, ET_SEQNO 513373, ET_RBA 580112

EXTRACT altered.



GGSCI (XXDB3) 44> ALTER EXTRACT    ET_TB,  Thread 3, ET_SEQNO 700612, ET_RBA 750326584

EXTRACT altered.


GGSCI (XXDB3) 45> info ET_tb


EXTRACT    ET_TB     Initialized   2021-11-19 10:12   Status STOPPED

Checkpoint Lag       01:20:20 (updated 00:00:04 ago)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:51:45  Thread 1, Seqno 923151, RBA 226304

                     SCN 0.0 (0)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:51:47  Thread 2, Seqno 513373, RBA 580112

                     SCN 0.0 (0)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:43:50  Thread 3, Seqno 700612, RBA 750326584

                     SCN 0.0 (0)

5 啟動OGG抽取程式,發現報錯,對錯誤的處理

2021-11-19 10:13:14  INFO    OGG-01516  Positioned to (Thread 2) Sequence 513373, RBA 580112, SCN 0.0, Nov 19, 2021 8:51:47 AM.


2021-11-19 10:13:14  INFO    OGG-01513  Positioning to (Thread 3) Sequence 700612, RBA 750326584, SCN 0.0.


2021-11-19 10:13:15  INFO    OGG-01516  Positioned to (Thread 3) Sequence 700612, RBA 750326584, SCN 0.0, Nov 19, 2021 8:43:50 AM.


2021-11-19 10:13:15  INFO    OGG-01517  Position of first record processed for Thread 1, Sequence 923151, RBA 226320, SCN 3689.4151044612, N

ov 19, 2021 8:51:38 AM.


2021-11-19 10:13:15  INFO    OGG-01055  Recovery initialization completed for target file ./dirdat/tb/tb004071, at RBA 1061.


2021-11-19 10:13:15  INFO    OGG-01478  Output file ./dirdat/tb/tb is using format RELEASE 11.2.


2021-11-19 10:13:15  INFO    OGG-01026  Rolling over remote file ./dirdat/tb/tb004071.


2021-11-19 10:13:15  INFO    OGG-01053  Recovery completed for target file ./dirdat/tb/tb004072, at RBA 1061.


2021-11-19 10:13:15  INFO    OGG-01057  Recovery completed for all targets.


***********************************************************************

**                     Run Time Messages                             **

***********************************************************************



Source ContET_ :

  SourceModule            : [er.redo.ora.rtc]

  SourceID                : [/scratch/pradshar/view_storage/pradshar_pse_15852019/oggcore/OpenSys/src/app/er/redo/oracle/rtc.c]

  SourceFunction          : [RTC_producer]

  SourceLine              : [2111]

  ThreadBacktrace         : [6] elements

                          : [/goldengate/libgglog.so(CMessageContET_::AddThreadContET_()+0x1e) [0x7f46be57771e]]

                          : [/goldengate/libgglog.so(CMessageFactory::CreateMessage(CSourceContET_*, unsigned int, ...)+0x2cc) [0x7f46be5706

bc]]

                          : [/goldengate/libgglog.so(_MSG_ERR_ER_GENERIC_FAILURE(CSourceContET_*, char const*, CMessageFactory::MessageDispo

sition)+0x31) [0x7f46be55b859]]

                          : [/goldengate/ET_ract(RTC_producer+0x4f6) [0x72b826]]

                          : [/lib64/libpthread.so.0(+0x7dd5) [0x7f46be6f1dd5]]

                          : [/lib64/libc.so.6(clone+0x6d) [0x7f46ba78fb3d]]


2021-11-19 10:13:15  ERROR   OGG-01028  Non-standard redo detected in 10g compatible format.



根據如下文件ET_ract Abends with OGG-01028 Non-Standard Redo Detected in 10g 

Compatible Format (Doc ID 1313864.1)  進行調整,抽取程式恢復正常

以下為執行的操作

GGSCI (XXDB3) 53>      ALTER EXTRACT ET_TB,  Thread 2, BEGIN  2021-11-19 08:51:40

EXTRACT altered.



GGSCI (XXDB3) 54> ALTER EXTRACT ET_TB,  Thread 3, BEGIN  2021-11-19 08:43:40

EXTRACT altered.


GGSCI (XXDB3) 59> info ET_tb   --OGG抽取程式已經恢復正常


EXTRACT    ET_TB     Last Started 2021-11-19 10:26   Status RUNNING

Checkpoint Lag       01:26:07 (updated 00:00:00 ago)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:55:00  Thread 1, Seqno 923152, RBA 325136

                     SCN 3689.4151325171 (15848285680115)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 09:00:39  Thread 2, Seqno 513376, RBA 13507168

                     SCN 3689.4151908598 (15848286263542)

Log Read Checkpoint  Oracle Redo Logs

                     2021-11-19 08:43:40  Thread 3, Seqno 700612, RBA 748003028

                     SCN 3689.4150309574 (15848284664518)


檢視生產的trail檔案,為調整其它OGG投遞程式做依據。

[[email protected] tb]$ ls -ltr

total 3736044

-rw-rw-rw- 1 oracle oinstall       1061 Nov 19 10:13 tb004071

-rw-rw-rw- 1 oracle oinstall       1061 Nov 19 10:26 tb004072

-rw-rw-rw- 1 oracle oinstall 1999998590 Nov 19 10:31 tb004073

-rw-rw-rw- 1 oracle oinstall  798726201 Nov 19 10:32 tb004074


6   修改DP_tb 投遞程式的大小,並啟動(由於此投遞程式以前就是ET_TB抽取程式對應的投遞程式,故只需要調整大小就行了)

GGSCI (XXDB3) 61> ALTER  RMTTRAIL ./dirdat/tb, EXTRACT DP_TB, MEGABYTES 2000

RMTTRAIL altered.



GGSCI (XXDB3) 62> info ET_trail ./dirdat/tb


       extract Trail: ./dirdat/tb

             ET_ract: DP_TB

               Seqno: 4066

                 RBA: 111462747

           File Size: 2000M

           


GGSCI (XXDB3) 64> start DP_TB


Sending START request to MANAGER ...

EXTRACT DP_TB starting



GGSCI (XXDB3) 74> info DP_tb


EXTRACT    DP_TB     Last Started 2021-11-19 10:31   Status RUNNING

Checkpoint Lag       01:46:02 (updated 00:00:00 ago)

Log Read Checkpoint  File ./dirdat/tb/tb004074

                     2021-11-19 08:46:29.000000  RBA 1088769399


7  調整DP_CJ投遞程式生成trail檔案的大小,及讀取trail檔案的名稱及位置(由於此投遞程式都去的trail檔名不是ET_TB生成的trail檔名,故需要進行調整)

調整讀取trail檔案的名稱

GGSCI (XXDB3) 80> ALTER EXTRACT  DP_CJ, EXTTRAILSOURCE  ./dirdat/tb/tb

EXTRACT altered.


調整讀取trail檔案的RBA號

GGSCI (XXDB3) 81> ALTER DP_CJ,extseqno 4073,extrba 0

EXTRACT altered.


GGSCI (XXDB3) 82> info DP_cj


EXTRACT    DP_CJ     Initialized   2021-11-19 10:39   Status STOPPED

Checkpoint Lag       00:00:00 (updated 00:00:09 ago)

Log Read Checkpoint  File ./dirdat/tb/tb004073

                     First Record  RBA 0


調整TRAIL檔案的大小

GGSCI (XXDB3) 83> ALTER RMTTRAIL ./dirdat/yx/yx, EXTRACT DP_CJ, MEGABYTES 2000

RMTTRAIL altered.



    ET_ract Trail: ./dirdat/yx/yx

             ET_ract: DP_CJ

               Seqno: 41162

                 RBA: 15795712

           File Size: 2000M

 

啟動 

 GGSCI (XXDB3) 84> start DP_cj


Sending START request to MANAGER ...

EXTRACT DP_CJ starting


GGSCI (XXDB3) 91> !

info DP_cj


EXTRACT    DP_CJ     Last Started 2021-11-19 10:41   Status RUNNING

Checkpoint Lag       00:00:00 (updated 00:00:01 ago)

Log Read Checkpoint  File ./dirdat/tb/tb004085

                     2021-11-19 09:22:27.000000  RBA 1032207204


其它的OGG投遞程式就不一一列舉。


8 檢視目標端OGG程式是否有報錯,經驗證,只要一個複製程式報ORA-00001錯誤,忽略後,問題解決。


9  對比4個OGG抽取程式合併後的效能,初步計算,4個OGG抽取程式合併為一個,每天大概能為磁碟節省12T到24T的IO。

經過幾天的觀察,OGG目前沒有發生延遲,也未發生以前延遲88小時的現象。


9.1 從日誌切換,在19日OGG抽取程式合併後22日有5T的歸檔日誌量,但抽取程式沒有任何延遲

OGG的抽取程式合併

9.2 從OGG抽取程式處理資料的效能來比對,發現峰值,OGG效能提升比以前提升許多倍。

合併前,11月2日,處理資料的速度,根據delta(此值後續的數字為每秒中OGG抽取程式處理資料的數量),每秒大概在幾條資料,11月4日,為230條左右

OGG的抽取程式合併

OGG的抽取程式合併


合併後,根據11月22日的資料,每秒4000條,有時能夠達到5萬條每秒,最高達到11萬每秒

OGG的抽取程式合併


OGG的抽取程式合併


根據delta資訊的比對,可以發現OGG抽取程式效能最少提升20倍以上,最大估計能達到1000倍以上。

通過此事件可以清晰的看出,不合理的架構,會極大的浪費系統的資源。稍微進行調整,效能就會有極大的提升。

如果將另一個節點17個抽取程式合併為一個,估計每天就能為系統節省140T的IO吞吐量,想想都興奮,主機的IO、CPU、記憶體、網路等效能壓力都將進行釋放,這是一個多麼偉大的事件。估計比花100多萬買裝置的效果都好。


IT系統優化兩條路,一為提升硬體的效能,二為優化業務系統。優化業務系統,需要懂資料庫、業務、架構等各方面知識,且有多年經驗的,能靜下心來認值思考問題的可能原因,通過各種技術手段進行驗證,才能找到解決問題的根源,否則一切都是

都是空談。


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