Oracle Database パスワードの大文字小文字を区別しない設定


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

やりたいこと

Oracle Database 10gまで、パスワードの大文字小文字は同じ扱いでしたが、Oracle Database 11g以降、パスワードの大文字小文字は区別されます。

例として:
file

ログインを簡素化したく、11g以降ても大文字小文字を区別せずにログインしたいなら、10gまでの機能を復活させることで設定可能です。
どうするべきかをここで簡単にまとめます。

設定

■対象DBバージョン

Oracle Database 11g以降

■関連パラメータ

‣SQLNET.ALLOWED_LOGON_VERSION_SERVER
どのパスワードバージョンまでパスワード認証を受け付けるかを決めるsqlnetパラメータです。
・「12」に設定すると、11g,12cのパスワード認証方式対応可能
・「11」に設定すると、10g,11gのパスワード認証方式を対応可能
今回は10gのパスワード認証方式を使用したいため、「11」に設定してよい。

‣SEC_CASE_SENSITIVE_LOGON
パスワードの大/小文字の区別を有効または無効する設定する。
・「FALSE」に設定すると、区別を無効に設定
・「TRUE」に設定すると、区別を有効に設定

■設定方法

1.sqlnet.ora内以下の内容を追記

SQLNET.ALLOWED_LOGON_VERSION_SERVER=11

2.DBパラメータ変更前のパスワードバージョン確認

select username,account_status,password_versions from dba_users order by account_status,username;
→対象ユーザのpassword_versionsに10gが含まれないことを確認する

3.パラメータ sec_case_sensitive_logon を FASLEに変更

alter system set sec_case_sensitive_logon = FALSE scope=both;

4.ユーザパスワードを再設定することで、機能を復活させる

alter user username indentified by "password";

5.DBパラメータ変更後のパスワードバージョン確認

select username,account_status,password_versions from dba_users order by account_status,username;
→対象ユーザのpassword_versionsに10gが含まれることを確認する

まとめ

12c以降、SEC_CASE_SENSITIVE_LOGONパラメータは非推奨となります。
これは、下位互換性のためにのみ残されています。
今後なくなる可能性があるため、移行時、こちらを注意して設計いただければと思います。

Last modified: 2024-02-06

Author