GoldenGate資料遷移的問題總結(二)
昨天使用GoldenGate同步資料,資料量玩得有些大了。最後發現很多小問題變得更加嚴峻,比如空間問題。
而且由於沒有更多的經驗,導致這個問題被我引入了另外一個極端。
檢視目標端的空間,一個臨時建立的目錄一下子滿了,得清理一下空間了。
[oracle@newtest ogg_10g]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 9.9G 9.4G 17M 100% /
停止了目標端的replicat程式。
> stop rep_test
Sending STOP request to REPLICAT REP_TEST ..
這個時候注意到源端的日誌輸出了下面的資訊,已經做了Rolling over的操作
2016-11-16 17:27:58 INFO OGG-01026 Oracle GoldenGate Capture for
Oracle, ext_tlbb.prm: Rolling over remote file
/export/home/oracle/ogg/ogg_10g/dirdat/tl000068.
2016-11-16 17:28:31 INFO OGG-01026 Oracle GoldenGate Capture for Oracle, ext_tlbb.prm: Rolling over remote file /export/home/oracle/ogg/ogg_10g/dirdat/tl000069.
2016-11-16 17:29:05 INFO OGG-01026 Oracle GoldenGate Capture for Oracle, ext_tlbb.prm: Rolling over remote file /export/home/oracle/ogg/ogg_10g/dirdat/tl000070.
為了儘快清理目標端的trail檔案,我檢視了下help的輸出,發現一個cleanup的命令,這個應該不錯,試一試吧。
> cleanup replicat rep_test
Cleanup completed.
然後檢視實際上目標伺服器上壓根沒有清理掉這些trail檔案,而稍後又執行了下面的幾個命令。
delete exttrail /export/home/oracle/ogg/ogg_10g/dirdat/tl000051
delete exttrail /export/home/oracle/ogg/ogg_10g/dirdat/tl
沒有任何的提示,而且伺服器端空間還是沒有釋放。-rw-rw-rw- 1 oracle oinstall 99999876 Nov 16 17:19 /export/home/oracle/ogg/ogg_10g/dirdat/tl000051
這可讓我很疑惑了。乾脆先停了試試,發現停程式失敗。
> stop rep_test
Sending STOP request to REPLICAT REP_TLBB ...
STOP request pending end-of-transaction (765395 records so far)..
以上的操作都是測試環境的測試所用,所以沒有太大的心理負擔,但是發現問題似乎很難解決了。
從下面的額資訊可以看出,似乎是在寫48號trail檔案的時候hang住了,也不處理任何資料。
> send rep_test, status
Sending STATUS request to REPLICAT REP_TEST ...
Current status: At EOF
Sequence #: 48
RBA: 99999876
6158834 records in current transaction
PENDING
STOP request pending end-of-transaction (6158834 records so far)
最後我使用kill的方式才終於停止了程式。
> kill replicat rep_test
Sending KILL request to MANAGER ...
Killed process (84166) for REPLICAT REP_TEST
然後再次啟動的時候,發現目標端的trail檔案出現了一些變化,程式啟動失敗了,會自動終止。
2016-11-16 18:41:24 INFO OGG-00996 Oracle GoldenGate Delivery for Oracle, rep_tlbb.prm: REPLICAT REP_TLBB started.
2016-11-16 18:41:24 ERROR OGG-01091 Oracle GoldenGate Delivery for Oracle, rep_tlbb.prm: Unable to open file "/export/home/oracle/ogg/ogg_10g/dirdat/tl000022" (error 2, No such file or directory).
2016-11-16 18:41:24 ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle, rep_tlbb.prm: PROCESS ABENDING.
納悶的是trail檔案指向了22號檔案。而前面的trail檔案已經被我刪除了。
這個問題這個時候該怎麼辦?而更讓人奇怪的trail檔案開始瘋狂複製,而源端的trail檔案id最大還是83,目標端已經到了100多。
2016-11-16 18:54:27 INFO OGG-01735 Oracle GoldenGate Collector for
Oracle: Synchronizing /export/home/oracle/ogg/ogg_10g/dirdat/tl000168
to disk.
反覆嘗試,折騰了不少時間,想這下只能是重新複製一遍了,如果在資料量很大的情況下,這真是一次失敗的資料複製。
不過今天看了下,想還有沒有救,我試了下面的方法,可能算是一個土辦法,僅供借鑑。
我在目標端的目錄下刪除了應用程式的trail檔案,從源端重新複製到了目標端。
在目標端開啟應用程式,不過SEQNO,RBA得改改。
alter replicat rep_TEST, EXTSEQNO 22 EXTRBA 0
這樣一來,rep看似就有了一些反應。
2016-11-17 12:00:55 INFO OGG-00996 Oracle GoldenGate Delivery for Oracle, rep_tlbb.prm: REPLICAT REP_TLBB started.
2016-11-17 12:01:09 INFO OGG-01020 Oracle GoldenGate Delivery for Oracle, rep_tlbb.prm: Processed extract process RESTART_ABEN
D record at seq 23, rba 1037 (aborted 0 records).
檢視應用程式的情況,已經可以看到大事務的資料處理了。
> send rep_test,status
Sending STATUS request to REPLICAT REP_TLBB ...
Current status: Processing data
Sequence #: 37
RBA: 45790084
3352129 records in current transaction
這個過程持續了些時間,同步完成後,資料是同步了過來,已經應用到了83號trail檔案,我想這個問題應該是告一段落了,但是當我在源端繼續修改一些資料,發現目標端沒有同步過來。看來我的那個小伎倆還是有一些限制,而我在源端停止了投遞程式後,重啟就失敗了。
2016-11-17 15:28:34 ERROR OGG-01496 Oracle GoldenGate Capture for
Oracle, dp_tlbb.prm: Failed to open target trail file /export
/home/oracle/ogg/ogg_10g/dirdat/tl000169, at RBA 84770994.
2016-11-17 15:28:34 ERROR OGG-01668 Oracle GoldenGate Capture for Oracle, dp_tlbb.prm: PROCESS ABENDING.
不過這個問題透過我對OGG的一些瞭解似乎還是有一些門道。
3> alter extract DP_TEST ETROLLOVER
4> alter DP_TEST extseqno 83,extrba 0
這樣源端的投遞程式就可以啟動了,而問題是目標端的應用程式又開始報錯了,,這個過程就是檢視ggserr.log的資訊,看到是170的trail,那麼我們就修改為170號trail檔案。
alter REPLICAT rep_TLBB,extseqno 170,extrba 0
問題的原因是什麼呢,我們來檢視源端的投遞程式就明白了。源端和目標端是有read position和write position。
> send dp_test,status
Sending STATUS request to EXTRACT DP_TEST ...
EXTRACT DP_TEST (PID 8302)
Current status: Recovery complete: At EOF
Current read position:
Sequence #: 83
RBA: 84769935
Timestamp: 2016-11-17 15:25:38.000000
Extract Trail: /export/home/oracle/ogg/ogg_10g/dirdat/tl
Current write position:
Sequence #: 170
RBA: 84769847
Timestamp: 2016-11-17 15:43:38.610104
Extract Trail: /export/home/oracle/ogg/ogg_10g/dirdat/tl
而對於OGG的資料同步有些過程怎麼理解呢。其實和Oracle中的物化檢視日誌有一些相似,物化檢視的增量重新整理是不完全依賴於物化檢視日誌,而在同步的過程中是會參考已有的資料,其中一個基準就是rowid.
比如下面的語句。
delete from SWD_QDRAWCHECK where rownum<2;
其實對映到目標端就是這樣的形式:
fqgms90ybsvnk DELETE FROM "TEST"."SWD_QDRAWCHECK" WHERE "ID" = :b0
這個過程怎麼去源端印證呢。
我們做了一個delete操作,這些變更就寫入了最新的trail檔案,那麼我們使用strings來檢視裡面的資訊。
AAACe8AAEAAEf5jAEB
TEST.SWD_QDRAWCHECK
8876366
8876242
...
TEST.SWD_DRAWCN
AAACd3AAEAACk4iAAG
16385776
我們根據rowid來檢視,可以看到資料是依舊於ROWID定位到的,而目標端肯定是沒有這個ROWID對應,這就需要傳入一個需要的ID值,比如唯一性主鍵的值等。
> select * from TEST.SWD_QDRAWCHECK where rowid='AAACe8AAEAAEf5jAEB';
ID QDETAILID DRAWCNID
---------- ---------- ----------
8876362 8876233 11171791
整個過程雖然走了不少的彎路,但是反覆嘗試,仔細比對,還是找到了一些門道,希望繼續整理,保證資訊的準確性,,能夠幫助到更多需要的朋友。
今天的筆記到此告一段落,先準備去趕航班了,下一站會到達魔都上海去感受異常技術盛宴,寫筆記的老傳統依舊不變。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2128637/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- GoldenGate資料遷移的問題總結(一)Go
- 資料遷移部分問題總結
- 資料遷移中的幾個問題總結
- 海量資料遷移之一個誤操作的問題總結
- 通過impdp做資料庫遷移遇到的問題總結資料庫
- 生產環境資料遷移問題彙總
- Datapump資料遷移的實踐總結
- 曠日持久的資料遷移總結
- 使用資料泵遷移遇到的問題
- 遷移資料庫資料考慮問題資料庫
- 關於Oracle資料庫中行遷移/行連結的問題Oracle資料庫
- expdp/impdp跨版本升級遷移問題總結
- 資料整合式遷移的一些總結
- 資料遷移中需要考慮的問題
- 資料遷移整合中的幾個問題總結(r10筆記第99天)筆記
- 大型資料庫跨平臺遷移總結資料庫
- 使用bulkCollect解決資料遷移問題
- 不同的default tablespace資料遷移(二)
- 遷移後帶庫備份問題(二)
- 資料遷移(1)——通過資料泵表結構批量遷移
- 大資料量資料遷移後統計資訊問題大資料
- 利用RMAN遷移表空間碰到的問題(二)
- fastdfs資料遷移以及fastdfs問題排查記錄AST
- Laravel 5.5 資料遷移問題:Specified key was too longLaravel
- 新舊系統更替產生的資料遷移問題
- 資料遷移(MYSQL--ORACLE)中碰到的亂碼問題MySqlOracle
- 【資料遷移】RMAN遷移資料庫到ASM(二)切換資料檔案到ASM資料庫ASM
- OBIEE10g跨平臺遷移過程及問題總結
- OGG資料庫遷移方案(二)資料庫
- 資料的遷移
- Datapump資料遷移前的準備工作(二)
- Laravel5的資料庫表建立問題 資料庫遷移操作報錯問題解決Laravel資料庫
- max_allowed_packet引起MySQL遷移丟失資料的問題MySql
- 聊聊國產資料庫遷移中的表連線效能問題資料庫
- oracle 各種遷移總結Oracle
- 使用Oracle資料泵問題總結Oracle
- MySQL修改資料型別的問題總結MySql資料型別
- WebSphere客戶端遷移的常見問題解決二Web客戶端