2013-04-22 122 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