パスワードの大文字と小文字
Oracle Database 10g以前、データベース・ユーザーのパスワードは大文字/小文字が区別されませんでした。Oracle Database 11g Release 1以降、Oracle Databaseユーザーのパスワードは大文字と小文字が区別される設定がデフォルトです。
この動作は初期化パラメーターsec_case_sensitive_logonで制御します。パラメーター値をデフォルト値のtrueからfalseに変更すると、パスワードの大文字と小文字を区別しなくなります。
Oracle Database 12cの動作
インスタンス起動時のログ
初期化パラメーターsec_case_sensitive_logonをfalseに設定することは、Oracle Database 12cでは非推奨になりました。このパラメーターをfalseに設定した状態でOracle Database 12c Release 2インスタンスを起動すると、Alert.logに以下のメッセージが出力されます。
Deprecated system parameters with specified values:
sec_case_sensitive_logon
End of deprecated system parameter listing
Oracle Database 12c Release 2からの動作変更
Oracle Database 12c Release2環境で、初期化パラメーターsec_case_sensitive_logonをfalseに設定する場合にはもう一つの設定が必要です。
必要な設定はデータべス・サーバーのsqlnet.ora ($ORACLE_HOME/network/admin/sqlnet.ora) に、以下の記述を行います。
SQLNET.ALLOWED_LOGON_VERSION_SERVER=11
Oracle Database 12c Release 2では、このパラメーターのデフォルト値は12です。
このパラメーターの設定値を12または12aに指定した状態を「排他モード」と呼び、旧バージョンのパスワード認証を受け付けない状態になります。
初期化パラメーターsec_case_sensitive_logonをfalseに設定し、上記設定を入れない場合、正しいユーザー名/パスワードを指定してもエラー「ORA-01017: invalid username/password; logon denied」が出力されて接続できません。
SQLNET.ALLOWED_LOGON_VERSION_SERVERの設定により、DBA_USERSビューの内容がどのように変化するかを検証しました。
ALLOWED_LOGON_VERSION_SERVER | DBA_USERS.PASSWORD_VERSIONS | 備考 |
---|---|---|
11 | 10G 11G 12C | |
12 | 11G 12C | デフォルト値 |
上記のように、sqlnet.oraファイルの設定により、CREATE USER文実行時のシステム・ディクショナリが変化します。
下記のマニュアルにはSQLNET.ALLOWED_LOGON_VERSION_SERVERの使用方法が詳しく掲載されています。
https://docs.oracle.com/cd/E82638_01/NETRF/parameters-for-the-sqlnet-ora-file.htm#GUID-1FA9D26C-4D97-4D1C-AB47-1EC234D924AA
JDBC Driverの接続動作にも影響を与えるため、バージョンアップ時には慎重な検討が必要です。