2013-04-22 95 views
0

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

我想使用imp命令。

+1

您可以用数据泵'expdp' /'impdp'做到这一点, [export](http://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_export.htm#i1007837)或[import](http://docs.oracle.com/cd/E11882_01/server .112/e22490/dp_import.htm#autoId29),但不是旧的'exp' /'imp'。有没有一个原因,你坚持使用旧的公用事业? – 2013-04-22 08:18:31

回答

3

exp有它的局限性。 如果你想使用exp/imp像solutiuon,expdp是更好的选择。

如果目标是把刚才复制的序列,为什么不使用DBMS_METADATA来获得DDL:关于使用`include`参数

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; 
2

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

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

请参阅文档here

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

我想你将不得不用文本编辑器打开dmp文件,并将Create Sequence语句复制粘贴到一个新的.sql文件中。您可以使用Perl,Ruby或shell脚本来简化操作,但不能仅使用imp。

+0

但用imp命令我也导入序列? – esoni 2013-04-22 08:07:51

+0

是的,但也有很多其他的对象类型。 – 2013-04-22 08:11:15

+0

重要的是我不想导入程序/函数和包。也导入这种类型的对象? – esoni 2013-04-22 08:12:12