web-dev-qa-db-ja.com

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;

私の2つのテストシステムではすべてが正常に機能しますが、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

何度か試しましたが、何が起こっているのか無知です。

また、スキーマを複製する他の方法も利用できます。

5
rfusca

仕事を終わらせたいだけで、テストでは機能するが本番では機能しない理由を気にしない場合は、古いエクスポート/インポートメソッドが機能します。オペレーティングシステムについては触れていないので、私は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

これは、テストと本番環境の違いに関連している可能性が高いデータポンプを使用したエラーには対応していません。また、データセットを本番から本番にインポートする際の知恵についても触れていません。この操作が失敗した場合、結果はどうなりますか?

1
kevinsky