尝试使用 impdp 复制架构

rfu*_*sca 5 oracle oracle-11g-r2 impdp

我正在尝试使用 oracle 的 IMPDP 工具完整地复制 SCHEMA。我已经设置了一个指向自身的数据库链接,并且该链接工作正常。然后我运行这个:

impdp username/password@instancename schemas=TARGET_SCHEMA 
      network_link=LINK_BACK_TO_TARGET 
      directory=HOME_DIR logfile=IMPDP_COPY_BACKUP.log 
      remap_schema=TARGET_SCHEMA:SOURCE_SCHEMA 
      TRANSFORM=STORAGE:n:table;
Run Code Online (Sandbox Code Playgroud)

在我的两个测试系统中一切正常,但在 Oracle 11gR2 生产中,它开始移动表并产生以下结果:

Processing object type SCHEMA_EXPORT/TABLE/TABLE
ORA-39126: Worker unexpected fatal error in 
    KUPW$WORKER.UPDATE_TD_BASE_PO_INFO [UPDATE 
    "ADMIN"."SYS_IMPORT_SCHEMA_04" mtu SET 
    mtu.base_process_order = NVL((SELECT mts1.process_order 
    FROM "ADMIN"."SYS_IMPORT_SCHEMA_04" mts1 WHERE 
    mts1.process_order > 0 AND mts1.duplicate = 0 
    AND mts1.object_schema = mtu.base_object_schema 
    AND mts1.object_name = mtu.base_object_name AND 
    mts1.object_type = mtu.base_object_type AND 
    mts1.processing_state != :1 ), 
    (-1000 - (SELECT MIN(mts2.process_order) FROM 
    "ADMIN"."SYS_IMPORT_SCHEMA_04" mts2 WHERE 
    mts2.process_order > 0 AND mts2.duplicate = 0 
    AND mts2.object_schema = mtu.base_object_schema 
    AND mts2.object_name = mtu.base_object_name 
    AND mts2.object_type = mtu.object_type))) 
    WHERE mtu.process_order > 0 AND mtu.duplicate = 0 
    AND mtu.object_type = 'TABLE_DATA' 
    AND mtu.processing_status = :2]
ORA-01427: single-row subquery returns more than one row
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几次,但我不知道发生了什么。

我也对克隆模式的其他方法持开放态度。

kev*_*kio 1

如果您只想完成工作而不担心为什么它在测试中有效但在生产中无效,那么旧的导出/导入方法将起作用。你没有提到操作系统,所以我假设是 Windows,因为这就是我的工作内容。就像是:

REM from a DOS .bat script located on the server 

SET oracle_sid=YourDatabaseName 

REM  export the schema
C:\app\YourOraclePath\bin\exp SchemaOwner/SchemaPass@SchemaName \
   file=(C:\Dump\SchemaName01,C:\Dump\SchemaName02,C:\dump\SchemaName03) \
   filesize=1GB log=C:\dump\Logs\SchemaName.log

REM drop and recreate the new user if they have existing objects
REM otherwise comment out this line

sqlplus /nolog @C:\Dump\DropRecreateUsers.sql

imp NewSchemaOwner/NewSchemaOwnerPassword \
  LOG=C:\dump\logs\importNewSchemaOwner.log file=SchemaOwner01.dmp \
  fromuser=SchemaOwner touser=NewSchemaOwner
Run Code Online (Sandbox Code Playgroud)

这并不能解决使用数据泵时出现的错误,该错误可能与测试和生产之间的差异有关。它也没有讨论将数据集从生产导入到生产中的智慧。如果此操作失败,后果是什么?