ORA-28040:一致する認証プロトコルの例外はありません


92

GrailsプロジェクトをWindows(8)システムのOracleデータベース(Oracle 12c)に接続しようとしています。ただし、アプリケーションを実行すると、次の例外が発生します。

Caused by: org.apache.commons.dbcp.SQLNestedException: 
Cannot create PoolableConnectionFactory (ORA-28040: 
No matching authentication protocol)

Caused by: 
java.sql.SQLException: ORA-28040: 
No matching authentication protocol

インターネットの提案によると、*.oraファイルを編集しようとしましたが、 機能しません。

次のスニペットをsqlnet.oraファイルに追加しました:

SQLNET.ALLOWED_LOGON_VERSION=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10

ここで(10,11,12)を割り当てようとしましたが、どちらも機能していません。

誰かがこれを手伝ってくれませんか?


クライアントとサーバーのどちらのsqlnet.oraを編集しましたか?
Jon Heller 2014年

1
私は初心者なのでわかりません。しかし、私が編集したファイルには数行しか含まれていませんでした。含まれているもの: '#sqlnet.oraネットワーク構成ファイル:E:\ app \ adhikariaman01 \ product \ 12.1.0 \ dbhome_1 \ network \ admin \ sqlnet.ora#Oracle構成ツールによって生成されます。#このファイルは実際にはnetcaによって生成されます。ただし、お客様が「ソフトウェアのみ」をインストールすることを選択した場合、このファイルは存在せず、ネイティブ認証がないと、NT上のデータベースに接続できません。SQLNET.AUTHENTICATION_SERVICES =(NTS)NAMES.DIRECTORY_PATH =(TNSNAMES、EZCONNECT) '
Aman Adhikari

2
それはデータベースサーバーのファイルのように聞こえます。これらの問題は非常に難しい場合があります。SQL * Plusを使用してデータベースサーバーに接続できますか?JDBCシンクライアントを使用していますか?使用している場合は、シッククライアントを試すことができますか?
Jon Heller 2014年

はい、SQL * plus経由で接続しています
Aman Adhikari 2014年

1
私は問題を解決しました:)。ojdbc14.jarファイルを削除し、代わりにojdbc6.jarを使用しましたが、うまくいきました。とにかく答えてくれてありがとう。
Aman Adhikari 2014年

回答:


152

ojdbc14.jarファイルを削除して使用しました代わりにojdbc6.jarしましたが、うまくました。


3
ペンタホケトルからOracle12cを接続しようとすると、同じ問題が発生します。ojdbc14.jarを削除し、完全に機能しています。
lourdh 2015年

17
少なくとも、これが機能する理由を簡単に説明すると非常に便利です。
Yuriy Kravets 2016年

8
私の場合、ojdbc6.jarまたはojdbc7.jarへの変更は、常に設定していたため失敗しました。これは、Oracle12coracle.jdbc.thinLogonCapability"="o3"に対して行う必要がなくなりました。それが他の誰かを助けることができることを願っています
James Tobin

3
これは、ojdbc14.jarを削除し、ojdbc6.jarを使用した後に完全に機能します
Sam

1
数@YuriyKravets 14におけるたojdbc14.jar及び数6てojdbc6.jarは、彼らが書かれたJDKバージョンを指します。ojdbc14.jarのマニフェストファイルを開くと、次のように表示されます。 仕様-タイトル:「JDK1.4で使用するOracle JDBCドライバクラス」 同様に、ojdbc6.jarはJDK1.6の実装をサポートします。
マーベリック

55

これが私が専門家交換で見つけたいくつかのテキストです:

バグ14575666

12.1では、SQLNET.ALLOWED_LOGON_VERSIONパラメーターのデフォルト値が11に更新されました。これは、SQLNET.ALLOWED_LOGON_VERSIONパラメーターが古いデフォルトの8に設定されていない限り、11gより前のJDBCシンドライバーを使用するデータベースクライアントが12.1データベースサーバーに対して認証できないことを意味します。

これにより、DBCAを使用した10.2.0.5 Oracle RACデータベースの作成がORA-28040で失敗します。12.1OracleASMおよびOracleGridInfrastructure環境で一致する認証プロトコルエラーがありません。

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


参考までに:これは、ojdbc14.jarファイルを削除せず、ojdbc6.jarを使用することで機能しました
rageit 2016

4
はい、私の場合、これで問題は解決しましたが、別の問題が発生しました:無効なユーザー名/パスワード。ところで、私はoracle jdeveloper10からoracleデータベース12cに接続しようとしていました。したがって、これが答えになりました:stackoverflow.com/questions/14476875/… 最終的に:1)SQLNET.ALLOWED_LOGON_VERSIONを8に変更します2)SQLNET.AUTHENTICATION_SERVICESを(NONE)に変更します3)ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE 4)ALTER USER XX PWによって識別されます(大文字と小文字を区別するように変更したため、パスワードを再保存します)
hello_earth 2017年

パーティーに遅れましたが、私もこの修正を確認しました。私が持っていた8が働いていたよりも、新しい何も-私はJDBC 11を実行していたにもかかわらず、私のバージョン= 8を設定します。
キース

リモートデータベースサーバーを使用しています。マシンにアクセスできません。SQLDeveloperを使用してデータベースに接続できます(エラーなし)が、アプリケーション(Tomcatにデプロイされています)はこのエラーをスローします。ローカルマシンの設定を変更しましたが、機能しません。サーバーマシンの設定を変更する必要がありますか?
ガンワント


5

これは、sqlnet.oraに以下を追加することを除いて

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

「ORA-01017:ユーザー名/パスワードが無効です。ログオンが拒否されました」というエラーが表示された場合は、パスワードを再作成する必要があります。


「ORA-01017:ユーザー名/パスワードが無効です。ログオンが拒否されました」というエラーが表示された場合は、パスワードを再作成する必要があります。これは命の恩人でした!ありがとう
Thomas VC


3

私は日食を使用していましたが、他のすべての答えを試した後、それは私にとってはうまくいきませんでした。結局、私にとってうまくいっojdb7.jarたのは、ビルドパスのトップに移動することでした。これは、複数のjarに競合する同じクラスがある場合に発生します。

  1. でプロジェクトを選択 Project Explorer
  2. 右クリック Project -> Build Path -> Configure Build Path
  3. に移動 Order and Exportタブにて選択しますojdbc.jar
  4. ボタンTOPをクリックして上に移動します

1

追加する

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

完璧なソリューションですsql.oraディレクトリ.. \ product \ 12.1.0 \ dbhome_1 \ NETWORK \ ADMIN


1

非常に古い質問ですが、他の誰かを助けるかもしれないいくつかの追加情報を提供します。同じエラーが発生し、12.1.0.2 OracleDatabaseでojdbc14.jarを使用していました。Oracleの公式Webページには、どのバージョンがどのデータベースドライバをサポートしているかという情報が記載されています。これがリンクであり、 Oracle12cおよびJava7または8では正しいバージョンはojdbc7.jarであるように見えます。

ojdbc6.jarでは11.2.0.4用です。


0

私の最初のエラーは次のとおりです:ORA-28040:一致する認証プロトコルの例外がありません

私のDBバージョンは12.2(Solaris)で、クライアントバージョンは11.2(windows)です。サーバーとクライアントの両方のsqlnet.oraに以下を追加しました

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8 SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

接続中に無効なユーザー名とパスワードを取得したため、データベースにパスワード(同じパスワード)を再作成しました。これで問題が解決しました。


0

ほとんどの場合、ojdbcドライバーjarを置き換えることが解決策になりますが、私の場合は異なります。

正しいojdbcドライバーを使用していることが確実な場合。自分が思っているデータベースに実際に接続しているかどうかを再確認してください。私の場合、jdbc構成(Tomcat / conf内)は、Oracleバージョンが異なる別のデータベースを指していました。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.