web-dev-qa-db-ja.com

ORA-28040:一致する認証プロトコルがありません:Oracle12cのアップグレード

Oracleデータベースを11gから12cに移行しました。 Java 1.5で実行され、ojdbc14.jarを使用するレガシーアプリケーションがあります。

私たちのアプリケーションは、次のようなデータベースへの接続エラーを作成できません。

Java.sql.SQLException: ORA-28040: No matching authentication protocol

ORA-28040:一致する認証プロトコルの例外がありません と答えて、ojdbc14.jarをojdbc6.jarにアップグレードしようとしました。

私は今、次のような別のエラーメッセージがあります:

  error: OracleCallableStatement is not public in Oracle.jdbc.driver; cannot be accessed from outside package
import Oracle.jdbc.driver.OracleCallableStatement;
                          ^
error: OracleTypes is not public in Oracle.jdbc.driver; cannot be accessed from outside package
            cstmt.registerOutParameter(3,Oracle.jdbc.driver.OracleTypes.CURSOR);
                                           ^

Antビルドファイル:

<javac srcdir="${src}" destdir="${classes}" source="1.5" target="1.5">
            <classpath refid="cpath" />
</javac>

アプリケーションを機能させるために正確に何をすべきかわからない。

4
Tushar

最近、2つの異なるアプリケーションで同じエラーが発生しました。

  1. a Java Oracle 12cデータベースでodbc6.jarを使用するTomcat7上の7アプリ。
  2. レガシーASP Oracle 12cデータベースを備えたアプリケーション。

あなたが参照したのと同じ投稿 -で言及されている2番目の解決策は私たちにとってうまくいきました。

回避策:Oracle/network/admin /sqlnet.oraファイルでSQLNET.ALLOWED_LOGON_VERSION = 8を設定します。

DBAと協力して、データベースサーバーのsqlnet.oraに上記のオプションを設定しました。これで問題は解決しました。私はそれが誰かを助けることを願っています。

3
VC1

私は同じエラーに直面しました。

Ojdbc14.jarを削除せずに解決しました。

ステップ1 : set SQLNET.ALLOWED_LOGON_VERSION=8

ステップ2:変更

Connection conn = (Connection) DriverManager.getConnection("jdbc:Oracle:thin:@server:port:sid", "username", "passwrd");

Java.sql.Connection conn = DriverManager.getConnection("jdbc:Oracle:thin:@@server:port:sid", "username", "passwrd");

それはうまくいくでしょう!

2

Oracle 11からOracle 12.に移行した後、私の場合、libディレクトリにはOJDBC14.jarOJDBC8.jarの両方がありました。 古いOJDBC14.jarを削除した後、それは私のために働きました。

アプリケーションをojdbc6に移行する場合、考えられる理由の1つは、古いクラス(古いojdbcバージョンと互換性がある)がクラスを取得していない可能性があることですOracleTypes。最も簡単な方法は、エラーが発生しているクラスからimportステートメントをimport Oracle.jdbc.driver.OracleTypes;からimportOracle.jdbc.OracleTypes;に変更することです。

0
Sanket03

主な問題は、10gのJDBCシンクライアントがSHA-1認証プロトコルを使用していることです。このプロトコルは12cでは許可されていないため、エラーが発生します。

Oracleでsqlnet.oraファイルが見つからなかったため、次のコマンドでファイルを作成する必要がありました。

vi $Oracle_HOME/network/admin/sqlnet.ora

そして、私は以下を追加しました:

SQLNET.ALLOWED_LOGON_VERSION=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
SQLNET.ALLOWED_LOGON_VERSION=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.AUTHENTICATION_SERVICES = (NONE)

そのため、リスナーを停止して開始する必要がありました。

lsnrctl stop
lsnrctl start

最後に、データベースを再起動します。

これは回避策にすぎません

すべての接続について、Sqldeveloper(ver。1.5.5)でORA-28040を入手していました。 SQLNET.ALLOWED_LOGON_VERSION = 8を設定しましたが、エラーは解消されませんでした。次に、「ツール」->「設定」->「データベース」->「詳細パラメータ」で「OCI /シックドライバを使用」を有効にしました。それがトリックでした。

0
kmxr

Oracle 12cに移行した後、DBへの接続に問題がありました。エラーは次のとおりです。Java.sql.SQLException:ORA-28040:一致する認証プロトコルがありません。このパラメータSQLNET.ALLOWED_LOGON_VERSION = 8を設定した後、解決されました。

どうもありがとうございました

0
Dusica

11gから12cに移行したときにこのエラーが発生しました。「サーバー名」を送信することで、正しい応答を得ることができます(これは、cmdで確認する必要がある最初のステップです)。この後、データベースサーバーが64ビット要求のみを処理できるようになっていることがわかります(私の場合、WinSQLを使用していて、常に32ビットをチェックします)。したがって、これを修正するには、管理者に32ビット要求のサーバーを作成するように依頼するか、SQL開発者に移動してください。