impdp匯入中碰到的兩個問題,impdp匯入碰到兩個

來源:互聯網
上載者:User

impdp匯入中碰到的兩個問題,impdp匯入碰到兩個

前兩天,需要將遠程一個測試庫用expdp匯出的資料dump匯入到本地的一個測試環境中,其中碰到了一些問題,值得小結下。


環境介紹

1. 資料量:10+表,<1000萬的資料,dump檔案大約400多MB

2. 源庫和目標庫都是11.2.0.4

3. 字元集不同,源庫字元集是GBK,目標庫字元集是UTF-8


匯入命令

test/test directory=exp_dump dumpfile=test.dmp logfile=test.log remap_schema=test1:test2 remap_tablespace=TBS_DAT_1:TBS_DAT_2,TBS_IDX_1:TBS_IDX_2


匯入處理程序中碰到的兩個問題

(1) 中文字元集轉換

KUP-11007: conversion error loading table "TEST"."T_PSR"
ORA-12899: 列 REASON_CODE 的值太大 (實際值: 21, 最大值: 20)
KUP-11009: data for row: REASON_CODE : 0X'BABDBFD5C6F7C8DDC1BFCFDED6C6'

這裡涉及到了字元集轉換的問題,中文在GBK字元集中佔2位,但在UTF-8字元集中佔3位,所以在GBK中儲存小於20個字元的情況下,匯入到了UTF-8的庫中,就可能因為需要額外的字元空間導致超出欄位長度定義,報了ORA-12899的錯誤。


(2) 主外部索引鍵關聯

ORA-31693: Table data object "TEST"."T_ITE" failed to load/unload and is being skipped due to error:
ORA-29913: error in executing ODCIEXTTABLEFETCH callout
ORA-02291: integrity constraint (TEST.FK_ITE_REF_PSR) violated - parent key not found

由於有些表之間是存在主外部索引鍵關聯的,expdp匯出的時候選擇了data_only僅匯出資料,impdp匯入的時候會因未插入主鍵記錄而插入外鍵記錄,出現ORA-02291的錯誤,對於這種情況可以選擇先禁止主外部索引鍵關聯,匯入後再恢複關聯。

操作順序

(a) 匯入前,執行如下SQL找到需要禁止的外部索引鍵關聯

select 'ALTER TABLE '||TABLE_NAME||' DISABLE CONSTRAINT '||constraint_name||';' 

from user_constraints WHERE CONSTRAINT_TYPE='R';

(b) 執行(a)的結果SQL

(c) 匯入後,執行如下SQL找到需要恢複的外部索引鍵關聯

select 'ALTER TABLE '||TABLE_NAME||' ENABLE NOVALIDATE CONSTRAINT '||constraint_name||';' 

from user_constraints WHERE CONSTRAINT_TYPE='R';

NOVALIDATE參數不會驗證已儲存的資料,但未來再插入的記錄則會遵循主外部索引鍵關聯的關係。


總結

1. 使用10g以上版本提供的expdp/impdp資料泵匯入匯出工具,較以往的exp/imp工具,無論是在參數的可選擇性上,還是速度和壓縮比上,都有了不小的改進,提供更為方便快速的資料匯入匯出方法給我們。

2. 匯入匯出可能碰到最多的問題,字元集轉換算是其中之一,要明確匯入匯出資料對字元集的依賴程度,才能確保資料匯入匯出的正確。

3. 對於有主外部索引鍵關聯的資料,如果選擇data_only僅匯出資料,那麼可在匯入前禁止約束,這樣匯入處理程序不會受到主外部索引鍵關聯的影響,匯入後可以恢複約束,保證約束的正確。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.