DIRECTORY=DIR_IKO
LOGFILE=DIR_IKO:impdp_NEW_SCHEMA_FROM_OLD_SCHEMA.log
PARALLEL=4
NETWORK_LINK=DBLINK
CONTENT=ALL
TABLE_EXISTS_ACTION=TRUNCATE
REMAP_SCHEMA=OLD_SCHEMA:NEW_SCHEMA
REMAP_TABLESPACE=TS_OLD_SCHEMA_1:TS_NEW_SCHEMA_1
REMAP_TABLESPACE=IS_OLD_SCHEMA_1:IS_NEW_SCHEMA_1
EXCLUDE=SYNONYM
EXCLUDE=TABLE:"='TABLE_NAME'"
EXCLUDE=TABLE:"LIKE 'B%'"
SCHEMAS=OLD_SCHEMA
インスタンスの異なるスキーマ間の移行。
一回、ダンプファイルをエクスポートしてインポートしてもよいが、
NASをマウントしたり、ファイルをSCPするのがめんどくさいので、
DBLINKを張って直接データを流し込む。
TABLE_EXISTS_ACTION=TRUNCATE
としているのは、NEW_SCHEMAはカラム定義は変わらないが、パーティションやインデックスを見直して新規に一括作成したかったため。
・ポイント①
DBLINKはインスタンス間のどのスキーマ同士でもはってよいが、
DBLINKのFROMにEXP_FULL_DATABASE、TOにIMP_FULL_DATABASEのロールをそれぞれのスキーマに付与する必要がある。
FROMがOLD_SCHEMAになっていても、TOと対応したロールが必要らしい。
・ポイント②
DBLINKのTOのユーザーでimpdpコマンドを実行。(あたりまえだけど)
impdp NEW_SCHEMA/***** parfile=impdp_NEW_SCHEMA_FROM_OLD_SCHEMA.par
改善点:
インデックスのリビルドがオーバヘッドになるので、UNUSABLEにしてパーティション単位でリビルドした方が速いと思われる。インデックスの数がぐっと増えたこともある(DB負荷的にはエコだけど、手順は増えるのでめんどくさいか)
以下、NETWORK_LINKオプションの制限事項(ドキュメントより転載)
ContentTypeセットがあるSecureFiles、または現在Oracle Database File System Linksを介してSecureFilesセグメントの外に格納されているSecureFilesが表に含まれている場合、インポートのNETWORK_LINKパラメータはサポートされません。
ネットワーク・インポートは進化した型の使用をサポートしません。
ネットワーク・インポートはLONG列をサポートしません。
データ・ポンプ操作がネットワーク・リンクを介して行われる場合、ソース・データベースとターゲット・データベースのバージョンの差違が1バージョン以下である必要があります。たとえば、1つのデータベースがOracle Database 11gの場合、他のデータベースは11gまたは10gのいずれかである必要があります。データ・ポンプがチェックするのはメジャー・バージョン番号のみ(10g、11gなど)で、具体的なリリース番号(10.1、10.2、11.1、11.2など)ではありません。
インポート・ジョブを実行するUSERIDがターゲット・データベースのDATAPUMP_IMP_FULL_DATABASEロールを持っている場合、そのユーザーは、ソース・データベースのDATAPUMP_EXP_FULL_DATABASEロールも持っている必要があります。
データ・ポンプ・インポートでサポートされているデータベース・リンクのタイプは、パブリック、固定ユーザーおよび接続ユーザーのみです。現在のユーザーのデータベース・リンクは、サポートされていません。
ネットワーク・モード・インポートではパラレル問合せ(PQ)スレーブは使用されません。「ネットワーク・モード・インポートにおけるPARALLELの使用」を参照してください。