【匯出匯入】IMPDP table_exists_action 引數的應用

楊奇龍發表於2011-03-14
當使用IMPDP完成資料庫匯入時,如遇到表已存在時,Oracle提供給我們如下四種處理方式:
a.忽略(SKIP,預設行為);
b.在原有資料基礎上繼續增加(APPEND);
c.先DROP表,然後建立表,最後完成資料插入(REPLACE);
d.先TRUNCATE,再完成資料插入(TRUNCATE)。
下面做實驗來看看幾種方式的效果:
==============================REPLACE=================================

C:\Users\aaaa>impdp \"system/yang as sysdba \"  remap_schema=scott:scott  directory=dumpdir  
dumpfile=scott_%U.dmp  table_exists_action=replace logfile=scott_impdp_replace.log
Import: Release 11.1.0.6.0 - Production on 星期一, 14 3月, 2011 15:40:26
Copyright (c) 2003, 2007, Oracle.  All rights reserved.
連線到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功載入/解除安裝了主表 "SYS"."SYS_IMPORT_FULL_01"
啟動 "SYS"."SYS_IMPORT_FULL_01":  "system/******** AS SYSDBA" remap_schema=scott:scott directory=dum
pdir dumpfile=scott_%U.dmp table_exists_action=replace logfile=scott_impdp_replace.log
處理物件型別 SCHEMA_EXPORT/USER
ORA-31684: 物件型別 USER:"SCOTT" 已存在
處理物件型別 SCHEMA_EXPORT/SYSTEM_GRANT
處理物件型別 SCHEMA_EXPORT/ROLE_GRANT
處理物件型別 SCHEMA_EXPORT/DEFAULT_ROLE
處理物件型別 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE_DATA
. . 匯入了 "SCOTT"."DEPT"                              5.937 KB       4 行
. . 匯入了 "SCOTT"."EMP"                               8.570 KB      14 行
. . 匯入了 "SCOTT"."EXPTAB"                            5.015 KB       2 行
. . 匯入了 "SCOTT"."SALGRADE"                          5.867 KB       5 行
. . 匯入了 "SCOTT"."BONUS"                                 0 KB       0 行
處理物件型別 SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理物件型別 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別 SCHEMA_EXPORT/FUNCTION/FUNCTION
ORA-31684: 物件型別 FUNCTION:"SCOTT"."EXP_FUNC" 已存在
處理物件型別 SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
處理物件型別 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
處理物件型別 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
處理物件型別 SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMA
作業 "SYS"."SYS_IMPORT_FULL_01" 已經完成, 但是有 2 個錯誤 (於 15:40:31 完成)

===============================APPEND=====================================================
C:\Users\aaaa>impdp \"system/yang as sysdba \"  remap_schema=scott:scott  directory=dumpdir  dumpfil
e=scott_%U.dmp  table_exists_action=append logfile=scott_impdp_append.log
Import: Release 11.1.0.6.0 - Production on 星期一, 14 3月, 2011 15:42:24
Copyright (c) 2003, 2007, Oracle.  All rights reserved.
連線到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功載入/解除安裝了主表 "SYS"."SYS_IMPORT_FULL_01"
啟動 "SYS"."SYS_IMPORT_FULL_01":  "system/******** AS SYSDBA" remap_schema=scott:scott directory=dum
pdir dumpfile=scott_%U.dmp table_exists_action=append logfile=scott_impdp_append.log
處理物件型別 SCHEMA_EXPORT/USER
ORA-31684: 物件型別 USER:"SCOTT" 已存在
處理物件型別 SCHEMA_EXPORT/SYSTEM_GRANT
處理物件型別 SCHEMA_EXPORT/ROLE_GRANT
處理物件型別 SCHEMA_EXPORT/DEFAULT_ROLE
處理物件型別 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE
ORA-39152: 表 "SCOTT"."DEPT" 已存在。由於附加了 table_exists_action, 資料將附加到現有表, 但是將跳過
所有相關後設資料。
ORA-39152: 表 "SCOTT"."EMP" 已存在。由於附加了 table_exists_action, 資料將附加到現有表, 但是將跳過所
有相關後設資料。
ORA-39152: 表 "SCOTT"."BONUS" 已存在。由於附加了 table_exists_action, 資料將附加到現有表, 但是將跳過
所有相關後設資料。
ORA-39152: 表 "SCOTT"."SALGRADE" 已存在。由於附加了 table_exists_action, 資料將附加到現有表, 但是將
跳過所有相關後設資料。
ORA-39152: 表 "SCOTT"."EXPTAB" 已存在。由於附加了 table_exists_action, 資料將附加到現有表, 但是將跳
過所有相關後設資料。
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE_DATA
ORA-31693: 表資料物件 "SCOTT"."DEPT" 無法載入/解除安裝並且被跳過, 錯誤如下:
ORA-00001: 違反唯一約束條件 (SCOTT.PK_DEPT)
ORA-31693: 表資料物件 "SCOTT"."EMP" 無法載入/解除安裝並且被跳過, 錯誤如下:
ORA-00001: 違反唯一約束條件 (SCOTT.PK_EMP)
. . 匯入了 "SCOTT"."EXPTAB"                            5.015 KB       2 行
. . 匯入了 "SCOTT"."SALGRADE"                          5.867 KB       5 行
. . 匯入了 "SCOTT"."BONUS"                                 0 KB       0 行
處理物件型別 SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理物件型別 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別 SCHEMA_EXPORT/FUNCTION/FUNCTION
ORA-31684: 物件型別 FUNCTION:"SCOTT"."EXP_FUNC" 已存在
處理物件型別 SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
處理物件型別 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
處理物件型別 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
處理物件型別 SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMA
作業 "SYS"."SYS_IMPORT_FULL_01" 已經完成, 但是有 9 個錯誤 (於 15:42:31 完成)

===========================SKIP==============================================
C:\Users\aaaa>impdp \"system/yang as sysdba \"  remap_schema=scott:scott  directory=dumpdir  dumpfil
e=scott_%U.dmp  table_exists_action=skip logfile=scott_impdp_skip.log

Import: Release 11.1.0.6.0 - Production on 星期一, 14 3月, 2011 16:01:18
Copyright (c) 2003, 2007, Oracle.  All rights reserved.
連線到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功載入/解除安裝了主表 "SYS"."SYS_IMPORT_FULL_01"
啟動 "SYS"."SYS_IMPORT_FULL_01":  "system/******** AS SYSDBA" remap_schema=scott:scott directory=dum
pdir dumpfile=scott_%U.dmp table_exists_action=skip logfile=scott_impdp_skip.log
處理物件型別 SCHEMA_EXPORT/USER
ORA-31684: 物件型別 USER:"SCOTT" 已存在
處理物件型別 SCHEMA_EXPORT/SYSTEM_GRANT
處理物件型別 SCHEMA_EXPORT/ROLE_GRANT
處理物件型別 SCHEMA_EXPORT/DEFAULT_ROLE
處理物件型別 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE
ORA-39151: 表 "SCOTT"."DEPT" 已存在。由於跳過了 table_exists_action, 將跳過所有相關後設資料和資料。
ORA-39151: 表 "SCOTT"."EMP" 已存在。由於跳過了 table_exists_action, 將跳過所有相關後設資料和資料。
ORA-39151: 表 "SCOTT"."BONUS" 已存在。由於跳過了 table_exists_action, 將跳過所有相關後設資料和資料。
ORA-39151: 表 "SCOTT"."SALGRADE" 已存在。由於跳過了 table_exists_action, 將跳過所有相關後設資料和資料

ORA-39151: 表 "SCOTT"."EXPTAB" 已存在。由於跳過了 table_exists_action, 將跳過所有相關後設資料和資料。
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE_DATA
處理物件型別 SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理物件型別 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別 SCHEMA_EXPORT/FUNCTION/FUNCTION
ORA-31684: 物件型別 FUNCTION:"SCOTT"."EXP_FUNC" 已存在
處理物件型別 SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
處理物件型別 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
處理物件型別 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
處理物件型別 SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMA
作業 "SYS"."SYS_IMPORT_FULL_01" 已經完成, 但是有 7 個錯誤 (於 16:01:22 完成)

===========================TRUNCATE================================================
C:\Users\aaaa>impdp \"system/yang as sysdba \"  remap_schema=scott:scott  directory=dumpdir
dumpfile=scott_%U.dmp  table_exists_action=truncate logfile=scott_impdp_truncate.log
Import: Release 11.1.0.6.0 - Production on 星期一, 14 3月, 2011 16:01:45
Copyright (c) 2003, 2007, Oracle.  All rights reserved.

連線到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功載入/解除安裝了主表 "SYS"."SYS_IMPORT_FULL_01"
啟動 "SYS"."SYS_IMPORT_FULL_01":  "system/******** AS SYSDBA" remap_schema=scott:scott directory=dum
pdir dumpfile=scott_%U.dmp table_exists_action=truncate logfile=scott_impdp_truncate.log
處理物件型別 SCHEMA_EXPORT/USER
ORA-31684: 物件型別 USER:"SCOTT" 已存在
處理物件型別 SCHEMA_EXPORT/SYSTEM_GRANT
處理物件型別 SCHEMA_EXPORT/ROLE_GRANT
處理物件型別 SCHEMA_EXPORT/DEFAULT_ROLE
處理物件型別 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE
ORA-39120: 無法截斷表 "SCOTT"."DEPT", 將跳過資料。引起失敗的錯誤為:
ORA-02266: 表中的唯一/主鍵被啟用的外來鍵引用
ORA-00955: 名稱已由現有物件使用
ORA-39153: 表 "SCOTT"."EMP" 已存在且已截斷。由於截斷了 table_exists_action, 將載入資料, 但是將跳過所
有相關後設資料。
ORA-39153: 表 "SCOTT"."BONUS" 已存在且已截斷。由於截斷了 table_exists_action, 將載入資料, 但是將跳過
所有相關後設資料。
ORA-39153: 表 "SCOTT"."SALGRADE" 已存在且已截斷。由於截斷了 table_exists_action, 將載入資料, 但是將
跳過所有相關後設資料。
ORA-39153: 表 "SCOTT"."EXPTAB" 已存在且已截斷。由於截斷了 table_exists_action, 將載入資料, 但是將跳
過所有相關後設資料。
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE_DATA
. . 匯入了 "SCOTT"."EMP"                               8.570 KB      14 行
. . 匯入了 "SCOTT"."EXPTAB"                            5.015 KB       2 行
. . 匯入了 "SCOTT"."SALGRADE"                          5.867 KB       5 行
. . 匯入了 "SCOTT"."BONUS"                                 0 KB       0 行
處理物件型別 SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理物件型別 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別 SCHEMA_EXPORT/FUNCTION/FUNCTION
ORA-31684: 物件型別 FUNCTION:"SCOTT"."EXP_FUNC" 已存在
處理物件型別 SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
處理物件型別 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
處理物件型別 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
處理物件型別 SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMA
作業 "SYS"."SYS_IMPORT_FULL_01" 已經完成, 但是有 7 個錯誤 (於 16:01:53 完成)

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

相關文章