暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 具有多个remp_schema语句的impdp尝试在同一模式中两次加载数据

askTom 2018-01-30
348

问题描述

亲爱的汤姆,

我们正在使用impdp版本11.2.0.3.0-Production在两个数据库之间交换数据,这两个数据库都在版本11.2.0.3.0-64bit Production中。

我们使用以下import.par parfile与几个remp_schema语句:

DUMPFILE=usertest.dmp
LOGFILE=usertest.dmp.import_20180130_095418.log
PARALLEL=6
SCHEMAS=SRDB_MTGCEN_E01001_W,SRDB_MTGCEN_E01002_W
REMAP_SCHEMA=SRDB_MTGCEN_E01001_W:SRDB_MTGCEN_E01002_W,SRDB_MTGCEN_E01002_W:SRDB_MTGCEN_E01004_W
CONTENT=DATA_ONLY
TABLE_EXISTS_ACTION=TRUNCATE
EXCLUDE=TABLE:"IN('CI_OCC','MD','AREA_SCHEMA','CMPRIVATETABLE','LINKTABLE','DATATABLE','CONN_ROLE_OBJ_SCOPE')"
DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS
复制


我们试图做的是:
-将数据从转储文件中的架构SRDB_MTGCEN_E01001_W导入数据库中的架构SRDB_MTGCEN_E01002_W
-将数据从转储文件中的架构SRDB_MTGCEN_E01002_W导入数据库中的架构SRDB_MTGCEN_E01004_W

当我们运行impdp时,我们在日志中收到数据错误 (对不起,我删除了一些行以符合帖子中的20000 char限制):

C:\importer>impdp 'sys/oracle@srdbsw as sysdba' PARFILE=import.par

Import: Release 11.2.0.3.0 - Production on Tue Jan 30 09:59:46 2018

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Master table "SYS"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
Starting "SYS"."SYS_IMPORT_SCHEMA_01":  "sys/********@srdbsw AS SYSDBA" PARFILE=import.par
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "SRDB_MTGCEN_E01004_W"."OBJECT"             6.562 KB       1 rows
. . imported "SRDB_MTGCEN_E01004_W"."OBJ_VIEWS"          5.156 KB       1 rows
. . imported "SRDB_MTGCEN_E01004_W"."APID"                   0 KB       0 rows
. . imported "SRDB_MTGCEN_E01004_W"."APID_INST"              0 KB       0 rows



. . imported "SRDB_MTGCEN_E01004_W"."APID"                   0 KB       0 rows
. . imported "SRDB_MTGCEN_E01004_W"."APID_INST"              0 KB       0 rows
. . imported "SRDB_MTGCEN_E01004_W"."APID_VIEWS"             0 KB       0 rows
. . imported "SRDB_MTGCEN_E01004_W"."VERIF_PAR"              0 KB       0 rows
. . imported "SRDB_MTGCEN_E01004_W"."VERIF_PHASE"            0 KB       0 rows
. . imported "SRDB_MTGCEN_E01004_W"."OBJECT"             6.562 KB       0 out of 1 rows
1 row(s) were rejected with the following error:
ORA-00001: unique constraint (SRDB_MTGCEN_E01004_W.OBJECT_AK1) violated

. . imported "SRDB_MTGCEN_E01004_W"."OBJ_VIEWS"          5.187 KB       1 rows
Job "SYS"."SYS_IMPORT_SCHEMA_01" successfully completed at 10:00:23
复制


在导入之前,表将被截断并禁用约束。没有禁用的事实不是重点: 当我们检查数据时,有许多重复项,这将阻止再次启用约束。

正如您在日志中看到的那样,问题来自impdp尝试两次在架构SRDB_MTGCEN_E01004_W中导入数据。数据库架构SRDB_MTGCEN_E01002_W中没有导入。

也许问题出在remp_schema语句中。impdp可能会因为转储文件和数据库 (SRDB_MTGCEN_E01002_W) 中都有相同名称的模式而感到困惑。显然,impdp可能正在对remp_schema语句应用一些传递计算,因此它导入:
-数据从转储文件中的schema SRDB_MTGCEN_E01001_W到数据库中的schema SRDB_MTGCEN_E01004_W (因为remp _ schema = SRDB_MTGCEN_E01001_W:SRDB_MTGCEN_E01002_W remp _ schema = SRDB_MTGCEN_E01002_W:SRDB_MTGCEN_E01004_W)
-从转储文件中的架构SRDB_MTGCEN_E01002_W到数据库中的架构SRDB_MTGCEN_E01004_W的数据 (因为remp_schema = SRDB_MTGCEN_E01002_W:SRDB_MTGCEN_E01004_W)

当然,这不是我们想要做的。

我们已经尝试使用上面所示的REMAP_SCHEMA的单行语法和多行语法 (多个REMAP_SCHEMA语句,每个映射一个),但结果是相同的。

如果我们分成两个导入,每个映射一个,它可以工作,但过程较慢。如果可能的话,我们希望一次完成。也许我们缺少一些可以帮助我们的语法?

提前谢谢,
豪尔赫。




专家解答

我认为您必须采用单独的进口产品。鉴于您要映射S1 -> S2,那么S2 -> S4对我来说,S1映射到S4是有意义的。

当然,我不知道有什么参数会改变这种行为。如果这对您来说是个问题,则可以尝试将其作为ER。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论