使用dbms_datapump导入所有数据库链接
-
29-09-2020 - |
题
源数据库版本: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 ID1905221.1)。
解决方案
它不是 DATABASE LINK
或 DATABASE LINKS
, ,它是 DB_LINK
.您可以在以下位置找到有效值 DATABASE_EXPORT_OBJECTS
, SCHEMA_EXPORT_OBJECTS
和 TABLE_EXPORT_OBJECTS
.
不隶属于 dba.stackexchange