Oracle-11g

IMPDP 作業失敗並出現 ORA-54002

  • January 5, 2021

我正在嘗試將轉儲文件從 11g 數據庫導入 19c 數據庫實例。我按照 Oracle 的建議以 SYSTEM 身份執行該作業。這項工作開始了,但很快就變成了失敗的 SQL 錯誤,這些錯誤都有相同的:

ORA-54002: only pure functions can be specified in a virtual column expression. 

我對該錯誤進行了一些研究,並發現一些跡象表明這是在 Oracle 12 之後解決的問題或錯誤。以下部落格解決了該問題:

從 Oracle 12.2 開始,正則表達式函式被認為是非確定性的

…並討論了一種涉及重新編碼 SQL 的解決方法。

我正在從轉儲中創建一個 DDL 文件,以便為我提供所有可以使用的程式碼。

我的問題是:

  • 是否有替代方法可以重寫轉儲文件中的所有程式碼並針對 impdp 作業執行該程式碼?
  • 這還有可能嗎?
  • 是否有其他選項可以從 11g 實例創建新的轉儲文件,該文件可以與 impdp 一起使用到 19c?

我認為這份文件很好地總結了它:

Oracle 數據庫的 10 項行為更改、不推薦使用和不支持的特性(Oracle | Docs)

查看有關 Oracle Database 19c 更改、棄用和取消支持以及 Oracle Database 版本 18c、12.2 和 12.1 中的棄用和取消支持的資訊。

除了新功能之外,Oracle 數據庫版本還可以修改、棄用或取消支持功能,並為您的數據庫引入升級行為更改

它甚至不包含對 11.x 版本的任何引用。

我猜您的數據庫包含一些可能已被取消支持的功能。

推薦解決方案

升級前資訊工具

您可以使用文章使用 Oracle 數據庫的升級前資訊工具中提供的資訊查明數據庫中的問題。但是,根據您問題中提供的資訊,我想這可能需要一段時間。

Oracle 的白皮書中也提到了升級前資訊工具:升級和遷移到 Oracle Database 19c

如何選擇和使用最佳可用方法將您目前的 Oracle 數據庫升級或遷移到 Oracle Database 19c。

顧問

如果您正在升級數據庫,那麼您可能需要考慮聯繫一位顧問,該顧問可能會為您提供清晰簡潔的功能/功能列表/…在不同的數據庫版本中不再支持這些功能.

回答您的問題

是否有替代方法可以重寫轉儲文件中的所有程式碼並針對 impdp 作業執行該程式碼?

請參閱上述建議。

這還有可能嗎?

也許不是,這取決於 11g 數據庫中使用的功能。它可能有效,也可能無效。

是否有其他選項可以從 11g 實例創建新的轉儲文件,該文件可以與 impdp 一起使用到 19c?

您可以從舊數據庫創建所有對象的 DDL,並嘗試在新的 19c 數據庫中創建它們。但即便如此,您可能正在創建包含不支持的功能的對象。

祝你好運。

引用自:https://dba.stackexchange.com/questions/282575