簡體   English   中英

Io 異常:Oracle 雲中的 Oracle 錯誤 ORA-12650

[英]Io exception: Oracle Error ORA-12650 in Oracle Cloud

我一直在為我的 DB 機器(Oracle 11g)使用 Oracle 雲 PAAS linux 服務器,並擁有 linux 應用程序服務器,我可以在其中運行我所有的 Java 應用程序。

假設我有可以連接雲數據庫機器的基於 spring 的 Web 應用程序。 我曾嘗試訪問 Toad 中的模式 for oracle,它按預期工作,但是當我嘗試訪問數據庫以從應用程序檢索數據時,它給出以下錯誤。

java.sql.SQLException: Io exception: Oracle Error ORA-12650
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:420)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:154)
    at GetConnection.main(GetConnection.java:35)

我還嘗試將服務訪問從 SID 擴展到 DB 機器中的服務名稱。 仍然給出同樣的錯誤。 相同的代碼在我們設置的另一台雲機器上運行良好。 但是這個雲機是oracle團隊做的,大部分都是默認的。

請分享您的建議以解決此問題。

此問題是由於 Oracle DB 計算機加密ENCRYPTION_SERVER設置造成的。 據我所知,這是默認設置並將其設置為啟用,當我們將其設置為禁用或注釋該行時,應用程序將按預期工作。 以下是供參考的文件名,

Filename : sqlnet.ora (We have to disable ENCRYPTION_SERVER settings)
File Location : ../oracle/product/11.2.0/dbhome_1/network/admin 

希望這對某人有所幫助。!

它根本沒有幫助我。 實際上,我遵循了您的解決方案,結果我遇到了另一個比試圖解決的錯誤更嚴重和更嚴重的錯誤。 讓我解釋一下。 首先,您提到的“禁用”值甚至不是此參數的可接受值。 根據 Oracle ( Oracle Docs ),這些是任何人都可以使用的公認值:

SQLNET.ENCRYPTION_SERVER 目的

為數據庫服務器打開加密。

默認

接受

價值觀

  • accepted :在對方要求或請求時啟用安全服務。

  • rejected :禁用安全服務,即使對方要求。

  • requested :如果對方允許,則啟用安全服務。

  • required : 啟用安全服務,如果對方沒有啟用安全服務,則不允許連接。

示例

SQLNET.ENCRYPTION_SERVER=accepted

在我的情況下是 12c Oracle Cloud 數據庫,默認設置為“必需”,在嘗試啟動我的應用程序時給我錯誤“Io 異常:Oracle 錯誤 ORA-12650”。 將參數設置為“已接受”解決了問題並設法啟動了我的應用程序。 如果您仍然遇到錯誤,您還可以將以下參數設置為已接受: SQLNET.CRYPTO_CHECKSUM_SERVER = 接受,如果您在 sqlnet.ora 中看到該值設置為“必需”。

請記住,我的應用程序以及我的 OCI 設置僅用於測試目的,並不打算在生產環境中使用。 SQLNET.ENCRYPTION_SERVERSQLNET.CRYPTO_CHECKSUM_SERVER的值設置為“accepted”將顯着降低數據庫的安全性,使其容易受到來自有權訪問它的任何應用程序的任何攻擊。 最好的情況是修改您的應用程序以將 ENCRYPTION 用作“必需”。

將 OJDBC jar 降級到 version7 也有效 - 在你的依賴文件中用 ojdbc7.jar 替換更高版本(ojdbc14.jar 是我的罪魁禍首)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM