資料遷移部分問題總結

kingsql發表於2014-09-11
按照計劃在週二開始了資料遷移,本來之前也做了不少的準備工作。但是還是在遷移的過程中出現了一些問題。簡單做一個總結。

1.constraint導致的資料reject
在資料載入的時候,報瞭如下的錯誤。有一些資料記錄被reject了,檢視後發現是源庫和目標庫中表的not null constraint導致的,在源庫中沒有not null constraint,但是在目標庫中有。
這個問題只能和開發做確認,稍後處理。

records from TESTDATA_HIST

cannot insert NULL into ("XXXXX"."TESTDATA_HIST"."TOT_OBJ")

2.foreign key 導致的constraint enable
在資料載入之前,對於foreign key都做了diable的操作,在載入的過程中也沒有出現任何問題。但是在enable foreign key的時候,報了02298的錯誤。

ERROR at line 1:

ORA-02298: cannot validate (XXXXX.CH_XXXX_1FK) - parent keys not found

alter table CH_XXXX enable constraint CH_XXXX_1FK       
這個問題,先做了constraint novalidate,交給開發去檢查資料。     
                        

3.關於datapump載入一個較大的表,含有clob欄位,資料5000萬條

impdp xxxx/xxxx file=exp_test.dmp logfile=imp_test.log TABLE_EXISTS_ACTION=APPEND CONTENT=DATA_ONLY REMAP_SCHEMA=CNVDBO8:XXXX REMAP_TABLESPACE=LARGE_DATA:DATAS01

因為這部分是由另外一個dba來做的,他沒有使用nohup方式,結果到半夜的時候,遠端的網路重啟了。收到了下面的資訊,這確實有些崩潰。
Broadcast Message from uxadmin3 (pts/8) Wed Jun 11 01:08:29...

PLEASE LOG OFF NOW ! ! !
        System maintenance about to begin.
All processes will be terminated in 0 seconds.


Broadcast Message from uxadmin3 (pts/8) Wed Jun 11 01:08:29...
SYSTEM BEING BROUGHT DOWN NOW ! ! !

Connection to 10.196.28.42 closed by remote host.
Connection to 10.196.28.42 closed.


然後等網路好了之後,重新開始。在跑了1個多小時後報了乳腺癌的錯誤,就退出了。

ORA-31693: Table data object "XXXX"."TEST":"PMAX_AMAX_EMAX" failed to load/unload and is being skipped due to error:
ORA-00001: unique constraint (XXXX.TEST_PK) violated
Job "XXXXX"."SYS_IMPORT_FULL_01" completed with 1 error(s) at 02:34:33


可見資料可能有問題,根據我們的理解在datapump執行的過程中,如果突然中斷,是直接rollback的。
但是資料現在都導不進去。最後使用瞭如下的選項,又是一個漫長的過程,這個時候對datapump也算是有一些心理煎熬了。

DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS


這次啟用了nohup方式,在遠端網路中斷,後臺依然在進行。

Starting "XXXXX"."IMPDP_MEMO": XXXXX/******** directory=DR_DATAPUMP_1 dumpfile=exp_mo1_memo.dmp logfile=imp_mo1_memo.log TABLE_EXISTS_ACTION=APPEND CONTENT=DATA_ONLY REMAP_SCHEMA=CNVDBO8:PRDAPPO REMAP_TABLESPACE=LARGE_DATA:DATAS01 parallel=6 DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS JOB_NAME=impdp_memo
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Write failed: Broken pipe


在煎熬了3個小時候,終於有了下面的一段話。對於reject的資料也根據主鍵資訊羅列了出來。

imported "XXXXX"."MO1_MEMO":"PMAX_AMAX_EMAX" 11.89 GB 52646187 out of 53020364 rows


 Rejected row #1043:

   column APP_ID: 1000
   column ENTITY_KEY: 1
   column PERIOD_KEY: 2
   column MEMO_ID: 34141901
。。。。。。

4.sequence檢查
對於sequence的檢查也是資料遷移的重中之重,在最後的檢查中,儘管之前的sequence的值做了一個很大的buffer,膽識還是有一些sequence的問題。

TABLE_NAME

SEQ_NAME

SEQ_MAX

COLUMN_MAX

sequence_1

EXTRACT_FILE_SEQ

22144093

22044092

sequence_2

RC_RATES_1SQ

20462516

20362515

sequence_3

MNTR_TREAT_1SQ

22592118

22492117


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

相關文章