2016-08-15 61 views
2

我正在使用Oracle 11g XE。我有一個模式,其中包含一些具有虛擬列的表。虛擬列在架構中看起來很好,並按預期行事。使用虛擬列導出架構

我出口該模式的轉儲使用這個命令:

expdp SYSTEM/SYSTEM schemas=TEST_SCHEMA dumpfile=TEST_SCHEMA.dpdmp 

,並使用此命令將其導入到另一個數據庫:

impdp SYSTEM/system SCHEMAS=TEST_SCHEMA DIRECTORY=dmpdir DUMPFILE=TEST_SCHEMA-2016.DPDMP TABLE_EXISTS_ACTION=replace LOGFILE=TEST_SCHEMA.log 

進口了罰款,但是當我檢查了所有的虛擬他們被打破的列。該列的DATA_TYPE是錯誤的,它是NUMBER而不是VARCHAR(36),並且原始源模式中的DATA_DEFAULT函數不在導入的模式中,它只是空值,當我查看實際行時,該虛擬中的值列是'44',它是該列的列標識。

有誰知道爲什麼虛擬列沒有正確遷移?我在輸出模式時是否需要指定某些內容?或者這是一個Oracle錯誤?

回答

2

請在此處查看BUG#10186633和Oracle網站上的BUG#14506804,導入虛擬列時存在問題。

的問題是,在創建函數之前,表上導入創建的,我認爲解決辦法是用正確的定義首先創建表,然後使用該忽略標誌

+0

感謝您的答覆運行導入戴夫,但我不知道這是否是這裏的問題。我沒有創建自己的函數,我只是使用UPPER函數,而不是一個真正的用戶定義函數,所以我認爲這應該工作表創建良好? – Stackman

+0

此外,這些錯誤似乎與人們在導入時遇到錯誤的問題有關。我從來沒有在導入時遇到任何這些錯誤。 – Stackman