源数据库版本:11.2.0.3
目标数据库版本:12.1.0.2
我正在尝试使用 dbms_datapump 将所有数据库链接从一个数据库导入到另一个数据库。代码在上述目标数据库上运行,并通过数据库链接从上述源数据库中提取数据库链接。
我过去使用 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)。
不是
DATABASE LINK
或DATABASE LINKS
,是DB_LINK
。DATABASE_EXPORT_OBJECTS
您可以在和SCHEMA_EXPORT_OBJECTS
中找到有效值TABLE_EXPORT_OBJECTS
。