以下のように表示されます。
(日本語)
ORA-28040: 一致する認証プロトコルがありません
(英語)
ORA-28040: 一致する認証プロトコルがありません
発生パターン
このエラーは以下のような場合に発生します。
- 使用しているjdbcのバージョンが古い
- Oracle12cのデータベースへ、それよりも低いバージョンのOracleClientから接続しようとした
- エラー例
- SQL> conn test/test@db01 ERROR: ORA-28040: 一致する認証プロトコルがありません SQL>
単にsqlplusから接続しようとするだけでエラーが発生します。
対処法
- OracleClientのバージョンを合わせる
- jdbcのバージョンを上げる(例:ojdbc6.jar → ojdbc8.jar)
- DBサーバー側のsqlnet.oraファイルに以下を追記する。
- (sqlnet.ora)
- SQLNET.ALLOWED_LOGON_VERSION=11
OracleClientのバージョンが11の場合です。
sqlnet.oraファイルはWindowsだと以下にあります。
⇒「%ORACLE_HOME%¥NETWORK¥ADMIN¥sqlnet.ora」
この設定を追記してから再度ログインを試みれば接続できるはずです。
備考
- この設定後に接続しようとすると稀に以下のエラーが発生する場合があります。
「ORA-01017: ユーザー名/ パスワードが無効です。ログオンは拒否されました。」 - この場合は、ALTER USERコマンドで当該ユーザのパスワードを変更してください。
(パスワードは同じでOKです。1回ALTER USERを実行することが必要です。) - パスワード変更については以下記事をご覧ください。
⇒ [ORACLE] ユーザのパスワードを変更する