Oracle Client のバージョン要件
Oracle Database に対して接続できる Oracle Database Client のバージョンには制限があります。公式にはサポート・ドキュメント「Doc ID 207303.1」に記述されています。サポートされる組み合わせは下記の表のとおりです。Oracle Database 23c に接続できるクライアントは最低でも Oracle Client 19c にする必要があります。
Clientバージョン | 接続可否 |
---|---|
23c | Yes |
21c | Yes |
19c | Yes |
18c | No |
12c | No |
11g | No |
10g | No |
9i | No |
受け入れるクライアント・バージョンの指定
サポート・ドキュメントでは、クライアントのバージョンは 19c 以上が必要ですが、マニュアル「Release 23c Database Net Servicesリファレンス」にはより低いバージョンのクライアントを受け入れる記述があります。この設定はデータベース・サーバーの sqlnet.ora ファイルでSQLNET.ALLOWED_LOGON_VERSION_SERVER パラメーターを指定します。
このパラメーターの変更後に、CREATE USER 文または ALTER USER 文でパスワードを変更すると DBA_USERS ビューの PASSWORD_VERSIONS 列の値が変化します。以下の表はマニュアルからの抜粋です。
設定値 | パスワード・バージョン | クライアント要件 | 備考 |
---|---|---|---|
12a | 12C | 12c Release 1 以降 | |
12 | 11G 12C | 11g R2 以降 | デフォルト |
11 | 10G 11G 12C | 10g 以降 | |
10 | 10G 11G 12C | 10g 以降 | |
9 | 10G 11G 12C | 10g 以降 | |
8 | 10G 11G 12C | 10g 以降 |
クライアントからの接続を受け付けるためには、SQLNET.ALLOWED_LOGON_VERSION_SERVER の設定と、接続先ユーザーのパスワード・バージョンの両方で許可が必要です。
検証
デフォルト状態では SQLNET.ALLOWED_LOGON_VERSION_SERVER パラメーター設定値は 12 で、DBA_USERS ビューの PASSWORD_VERSIONS は '11G 12C' になります。このため Oracle Client 10g からの接続は拒否され、Oracle Client 11g からの接続は許可されます。
$ sqlplus -V
SQL*Plus: Release 10.2.0.5.0 - Production
$ sqlplus SCOTT/{password}@dbsvr23c:1521/freepdb1
SQL*Plus: Release 10.2.0.5.0 - Production on Wed Dec 27 01:30:12 2023
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
ERROR:
ORA-28040: The database does not accept your client's authentication protocol;
login denied.
Enter user-name:
$ sqlplus -V
SQL*Plus: Release 11.2.0.4.0 Production
$ sqlplus SCOTT/{password}@dbsvr23c:1521/freepdb1
SQL*Plus: Release 11.2.0.4.0 Production on Wed Dec 27 01:33:40 2023
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 23c Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
SQL>
SQLNET.ALLOWED_LOGON_VERSION_SERVER パラメーターの設定値をマニュアル上の最小値 8 から、最大値の 12C まで変更しながらユーザーを作成し、DBA_USERS ビューの PASSWORD_VERSIONS 列の値を検証しました。以下は検証結果の表と、作成したユーザー情報の出力結果です。
設定値 | パスワード・バージョン | 備考 |
---|---|---|
8 | 11G 12C | |
9 | 11G 12C | |
10 | 11G 12C | |
11 | 11G 12C | |
12 | 11G 12C | デフォルト |
12A | 12C |
SQL> SELECT username, password_versions FROM dba_users
2 WHERE username LIKE 'USER%' ORDER BY 1;
USERNAME PASSWORD_VERSIONS
-------------------- -----------------
USER08 11G 12C
USER09 11G 12C
USER10 11G 12C
USER11 11G 12C
USER12 11G 12C
USER12A 12C
6行が選択されました。
上記のように、マニュアルの記述とは異なり SQLNET.ALLOWED_LOGON_VERSION_SERVER に低いバージョンを指定しても Oracle Client 10g 以前のバージョンからは接続できないことが確認できました。
Author: Noriyoshi Shinoda / Date: December 26, 2023