仅导入Oracle exp转储中的序列

时间:2013-04-22 07:47:56

标签: oracle import dump

有没有办法从模式转储中导入模式的所有序列(使用exp full=y生成)?我不想导入程序或表格,只想导入所有序列。

我想使用imp命令。

2 个答案:

答案 0 :(得分:3)

exp有它的局限性。 如果你想使用像exp / imp这样的解决方案,expdp是更好的选择。

如果目标只是复制序列,为什么不使用dbms_metadata来获取ddl:

SELECT DBMS_METADATA.GET_DDL('SEQUENCE', u.sequence_name, decode(u.sequence_owner,'SYS','',sequence_owner)) ddl
     FROM all_sequences u where sequence_owner = 'SOE' order by sequence_owner, sequence_name;

答案 1 :(得分:2)

如果使用原始导入实用程序,则可以使用四种不同的模式:表格模式,用户模式,完整数据库模式和表空间模式。

它们中的每一个都会导入不同类型的对象,但它们不像新的数据泵导入那样可控,并且您无法准确选择要导入的类型。

请参阅文档here

序列以用户和完整数据库模式导入,但也会导入许多其他对象类型,包括过程对象(过程,函数和包)。

我认为您必须使用文本editior打开dmp文件,并将Create Sequence语句复制粘贴到新的.sql文件中。您可以使用Perl,Ruby或shell脚本来简化这一过程,但不能仅使用imp来执行此操作。