GoldenGate資料遷移的問題總結(一)
今天對GoldenGate的資料同步進一步做了測試,發現在一些模擬真實的場景中,需要考慮的因素要更多更為複雜。簡單同步幾條,幾百條資料的測試同步做驗證測試可以,但是很難測試出來一些潛在的問題,今天碰到了一些問題,基本都得到了解決。
首先要測試的這個環境資料要多一些。匯出了一個測試環境的資料進行OGG的複製演練。
test@TESTDB> select table_type from cat group by table_type
TABLE_TYPE
-----------
TABLE
VIEW
SYNONYM
SEQUENCE
test@TESTDB> select count(*)from cat;
COUNT(*)
----------
259
我覺得資料遷移裡面增量資料的遷移實在是太複雜了,一旦某個地方出錯,回滾的餘地都會很小。這個使用者下有不少的表,所以測試起來就會更加謹慎小心。為了不影響其它使用者,我先做了源端和目標端的配置。源端基於Solaris,10gR2,目標端基於Linux 64,11gR2
配置抽取程式
dblogin userid ogg_source,password oracle
add trandata test.*
edit params ext_test
EXTRACT ext_test
USERID ogg_source, PASSWORD oracle
EXTTRAIL /export/home/oracle/ogg/ogg_10g/dirdat/tl
TABLE test.*;
ADD EXTRACT ext_test, TRANLOG, BEGIN NOW
ADD EXTTRAIL /export/home/oracle/ogg/ogg_10g/dirdat/tl, EXTRACT ext_test
start ext_test
info ext_test
配置投遞程式
edit params dp_test
EXTRACT dp_test
PASSTHRU
RMTHOST 10.127.133.125, MGRPORT 1530
RMTTRAIL /export/home/oracle/ogg/ogg_10g/dirdat/tl
TABLE test.*;
ADD EXTRACT dp_test,EXTTRAILSOURCE /export/home/oracle/ogg/ogg_10g/dirdat/tl
ADD RMTTRAIL /export/home/oracle/ogg/ogg_10g/dirdat/tl, EXTRACT dp_test
start dp_test
info dp_tes配置應用程式
dblogin userid ogg_target,password oracle
edit params rep_test
REPLICAT REP_test
USERID ogg_target, PASSWORD oracle
ASSUMETARGETDEFS
HANDLECOLLISIONS
MAP test.*,TARGET test.*;
ADD REPLICAT rep_test, EXTTRAIL /export/home/oracle/ogg/ogg_10g/dirdat/tl,CHECKPOINTTABLE ogg_target.CHKPTAB
start rep_test為了簡單測試一下資料量大的情況下的同步情況,我選取了下面的幾個表資料,摘自impdp的日誌
. . imported "test"."SWD_DRAWCN" 839.7 MB 11174310 rows
. . imported "test"."SWD_QDRAWCHECK" 187.7 MB 9052277 rows
. . imported "test"."TL_SERVER_LOG" 13.92 MB 61341 rows
. . imported "test"."SWD_DRAWCARD" 8.129 MB 185044 rows
首先測試了delete的情況,看看源端,目標端的同步速率,整個過程持續了近40分鐘,其中大部分的時間都在源端,可見硬體老化還是很嚴重的,在目標端同樣的操作就快了不是一點半點。
問題1:抽取程式失敗
然後再次使用impdp在源端匯入資料,這個過程源端的抽取程式很可能會失敗,原因之一就是因為impdp需要建立一個臨時表,而我們在配置裡指定測試使用者下的表都要對映 。
2016-11-16 16:21:04 ERROR OGG-00901 Failed to lookup object ID for table test.SYS_IMPORT_TABLE_01
.這個過程很容易,在Impdp完成後重啟抽取程式即可。
問題2:支援TRUNCATE
我對測試環境中的物件進行了檢查,發現有一個地方很可能出現問題,因為線上上庫中存在一個JOB,會先清空一箇中繼表資料,然後補入一部分資料,清空的操作是truncate,所以資料同步還是需要支援truncate操作,對於其它的DDL暫時先不動。
要實現識別truncate的操作,OGG已經做好了,需要在抽取程式和應用程式的引數配置,加入一個引數GETTRUNCATES即可。這樣就可以輕鬆同步資料了,使用truncate都可以自動同步,擺平了一個潛在的隱患。
問題3:投遞程式失敗
下午在大批次資料的測試場景中,發現投遞程式竟然自動停了。
2016-11-16 17:22:36 ERROR OGG-01668 Oracle GoldenGate Capture for Oracle, dp_test.prm: PROCESS ABENDING.
2016-11-16 17:22:53 INFO OGG-01026 Oracle GoldenGate Capture for Oracle, ext_test.prm: Rolling over remote file /export/home/o
racle/ogg/ogg_10g/dirdat/tl000059.登入到目標端,發現資料庫直接hang住了。
[oracle@newtest ~]$ sqlplus n1/n1
^C ERROR:
ORA-02002: error while writing to audit trail
ORA-00604: error occurred at recursive SQL level 1
ORA-01013: user requested cancel of current operation
而問題的原因就是歸檔空間滿了。簡單清理後繼續測試。
問題4:trail檔案的清理
而後續繼續測試,發現另外一個問題擺上了日程,那就是對trail檔案的清理,其中一個方式就是在mgr中配置引數,設定一個範圍來刪除。
edit param mgr
PURGEOLDEXTRACTS /export/home/oracle/ogg/ogg_10g/dirdat/tl*, USECHECKPOINTS, MINKEEPDAYS 2
問題5:無法停止replicat程式
如果在資料同步的過程中,停止replicat程式失敗,會直接影響資料同步的情況
GGSCI (newtest.oracle.com) 10> stop rep_test
Sending STOP request to REPLICAT REP_test ...
STOP request pending end-of-transaction (6158834 records so far)..
可以使用kill的方式終止
GGSCI (newtest.oracle.com) 9> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER STOPPED
REPLICAT STOPPED REP_1 00:00:00 00:00:34
REPLICAT RUNNING REP_test 00:31:32 01:01:07
GGSCI (newtest.oracle.com) 14> start mgr
Manager started.
GGSCI (newtest.oracle.com) 17> kill replicat rep_test
Sending KILL request to MANAGER ...
Killed process (84166) for REPLICAT REP_test
小技巧:
在資料複製的過程中,如果想檢視源端目標端的同步情況,使用info得到的資訊是很籠統的,我們可以使用send的方式得到一個狀態資訊,這個資料是相對準確的。
GGSCI (newtest.oracle.com) 2> 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)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2128589/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- GoldenGate資料遷移的問題總結(二)Go
- 資料遷移部分問題總結
- 資料遷移中的幾個問題總結
- 海量資料遷移之一個誤操作的問題總結
- 通過impdp做資料庫遷移遇到的問題總結資料庫
- 資料整合式遷移的一些總結
- 生產環境資料遷移問題彙總
- Datapump資料遷移的實踐總結
- 曠日持久的資料遷移總結
- 使用資料泵遷移遇到的問題
- 遷移資料庫資料考慮問題資料庫
- 關於Oracle資料庫中行遷移/行連結的問題Oracle資料庫
- expdp/impdp跨版本升級遷移問題總結
- 資料遷移中需要考慮的問題
- 資料遷移整合中的幾個問題總結(r10筆記第99天)筆記
- 大型資料庫跨平臺遷移總結資料庫
- 使用bulkCollect解決資料遷移問題
- X7一體機資料庫遷移問題處理資料庫
- 資料遷移(1)——通過資料泵表結構批量遷移
- 大資料量資料遷移後統計資訊問題大資料
- fastdfs資料遷移以及fastdfs問題排查記錄AST
- Laravel 5.5 資料遷移問題:Specified key was too longLaravel
- 新舊系統更替產生的資料遷移問題
- 資料遷移(MYSQL--ORACLE)中碰到的亂碼問題MySqlOracle
- OBIEE10g跨平臺遷移過程及問題總結
- 資料的遷移
- Laravel5的資料庫表建立問題 資料庫遷移操作報錯問題解決Laravel資料庫
- max_allowed_packet引起MySQL遷移丟失資料的問題MySql
- 聊聊國產資料庫遷移中的表連線效能問題資料庫
- oracle 各種遷移總結Oracle
- 【資料遷移】RMAN遷移資料庫到ASM(一)建立ASM磁碟組資料庫ASM
- 使用Oracle資料泵問題總結Oracle
- MySQL修改資料型別的問題總結MySql資料型別
- 遷移資料.
- 記錄一次XTTS遷移碰到的問題TTS
- WebSphere客戶端遷移的一般問題Web客戶端
- 利用RMAN遷移表空間碰到的問題(一)
- 【遷移】使用rman遷移資料庫資料庫