我想使用DBMS_DATAPUMP API从多个模式导出导入表。例如user1.table1 user2.table2 user3.table3我给予一个参数,这些表就像一个用逗号分隔的列表。'user1.table1,user2.table2,user3.table3'之后,我将表的列表存储在表中。然后,我在游标中读取表的内容,并在游标中使用LOOP遍历,然后给予模式和表名。
LOOP
dbms_datapump.metadata_filter(handle => h1, name => 'NAME_EXPR', value => 'IN('table1'));
dbms_datapump.metadata_filter(handle => h1, name => 'SCHEMA_LIST', value => 'IN('user1'));
END LOOP.
第一个表已成功添加到dbms_datapump作业,但第二个表退出时出错。
ORA-39071:SCHEMA_LIST的值格式不正确。ORA-00936:缺失扩张
我试图找到解决方案,如何从不同的模式中使用DBMS_DATAPUMP API表进行exp/imp,但我找到了任何示例。我找到的例子只显示了你是否是来自一个模式的exp/imp。Thanks in advance
2条答案
按热度按时间nwo49xxi1#
--对于表模式,仅支持单个
SCHEMA_EXPR
过滤器。如果指定了,它只能指定一个模式(例如'IN (''SCOTT'')'
)。--可以输入多个表名,但不能超过4000个字符(文字限制),包括特殊字符。
cedebl8k2#
对SCHEMA_EXPR使用变量的语法无效。"'SCHEMA_EXPR','IN('|| vschemas|| ')');"