web-dev-qa-db-ja.com

dbms_datapumpを使用してすべてのデータベースリンクをインポートする

ソースDBバージョン:11.2.0.3
宛先DBバージョン:12.1.0.2

Dbms_datapumpを使用して、あるデータベースから別のデータベースにすべてのデータベースリンクをインポートしようとしています。コードは上記の宛先DBで実行されており、データベースリンクを介して上記のソースDBからDBリンクをプルしています。

私は過去にdbms_datapump.metadata_filterを使用して、特定のオブジェクト(関数やプロシージャなど)のみをインポートしました。ただし、次の場合はORA-39001が返されます。引数の値が無効です:

dbms_datapump.metadata_filter(h1,'INCLUDE_PATH_EXPR','IN (''DATABASE LINK'')');

したがって、ORA-39001も返す複数バージョンを試してみました。

dbms_datapump.metadata_filter(h1,'INCLUDE_PATH_EXPR','IN (''DATABASE LINKS'')');

ここには基本的な何かが欠けている必要があることはわかっていますが、同じ検索で「dbms_datapump」と「データベースリンク」を使用した検索結果は、データベースリンクを介してインポートする方法で結果を返すだけで、データベースリンクを直接インポートします。

以前は、次を使用してデータベースリンクを直接インポートできました。

select DBMS_LOB.SUBSTR@dblinkimp(DBMS_METADATA.GET_DDL@dblinkimp
('DB_LINK', '[DBlinkName]', '[SchemaName]')) from dual@dblinkimp;

次に、execute immediateを使用して上記のステートメントからの出力を実行しますが、これは11.2.0.4以降では有効なオプションではありません(Metalink Doc ID 1905221.1を参照)。

1
Kris Johnston

DATABASE LINKまたはDATABASE LINKSではなく、DB_LINKです。有効な値はDATABASE_EXPORT_OBJECTSSCHEMA_EXPORT_OBJECTSTABLE_EXPORT_OBJECTSにあります。

2
Balazs Papp