我有一個Oracle 10G安裝(Oracle數據庫10g企業版版本10.2.0.3.0 - 產品),以及一個java web應用程序,它通過JDBC連接在oracle中調用存儲過程和函數。 SP和功能是軟件包的一部分。第一次調用SP或函數時,在成功編譯包後,我得到以下錯誤:成功編譯後,首次調用存儲過程失敗。 Oracle 10g
(我用「#schema-name#。#package-name#」替換了我們的模式名稱和包名稱。 )
ORA-04068: existing state of packages has been discarded
ORA-04061: existing state of package body "#schema-name#.#package-name#" has been invalidated
ORA-04065: not executed, altered or dropped package body "#schema-name#.#package-name#"
ORA-06508: PL/SQL: could not find program unit being called: "#schema-name#.#package-name#"
ORA-06512: at "#schema-name#.#package-name#", line 5393
ORA-06512: at line 1
下一次被調用時,所有事情都按照它應該的方式運行。關於爲什麼以及如何防止這種情況發生的任何想法?
是的,我們正在使用連接池。我會在哪裏調用DBMS_SESSION.RESET_PACKAGE? – jworrin
您需要在編譯期間停止從Web應用程序訪問所有數據庫,然後在收集池中的每個會話中調用它。刷新池中的所有連接可能會更容易(即關閉它們並創建一個新的連接)。 – Codo