私は自分のgrailsプロジェクトをwindows(8)システムでOracle databse(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)を代入しようとしましたが、どちらもうまくいきません。
誰かが私を助けてください。
ojdbc14.jarファイルを削除して使用しましたojdbc6.jar代わりに、それは私のために働いた
これが expert-exchange で見つけたテキストです。
バグ14575666
12.1では、SQLNET.ALLOWED_LOGON_VERSIONパラメータのデフォルト値が11に更新されました。これは、SQLNET.ALLOWED_LOGON_VERSIONパラメータが古いデフォルトの8に設定されていない限り、11gより前のJDBC Thinドライバを使用するデータベースクライアントを認証できないことを意味します。
これにより、DBCAを使用した10.2.0.5のOracle RACデータベース作成は、12.1のOracle ASMおよびOracle Grid Infrastructure環境では、ORA-28040:No matching authentication protocolエラーで失敗します。
回避策:Oracle/network/admin/sqlnet.oraファイルでSQLNET.ALLOWED_LOGON_VERSION = 8を設定します。
sqlnet.oraに以下を追加することを除いて
SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8
私はまた私の問題を解決したクライアントとサーバーの両方に以下を追加しました
SQLNET.AUTHENTICATION_SERVICES = (NONE)
私はojdbc8.jarを使用してこの問題を解決しました。 Oracle 12cはojdbc8.jarと互換性があります。
私はEclipseを使っていましたが、他のすべての答えを試してもうまくいかなかったのです。結局、私にとってうまくいったのはビルドパスのojdb7.jar
を上に移動することでした。これは、複数のjarが同じクラスを競合している場合に発生します。
Project Explorer
でプロジェクトを選択Project -> Build Path -> Configure Build Path
を右クリックOrder and Export
タブに行き、ojdbc.jar
を選択してください- ボタン
TOP
をクリックして一番上に移動します
追加中
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8
sql.oraディレクトリとして最適です..\product\12.1.0\dbhome_1\NETWORK\ADMIN
ojdbc-fullをインストールするだけで、12.1.0.1リリースが含まれます。
これを除いて、sqlnet.oraに次を追加します。
SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8
「ORA-01017:ユーザー名/パスワードが無効です。ログオンが拒否されました」というエラーが表示された場合は、パスワードを再作成する必要があります。