この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
やりたいこと
Oracle Database 10gまで、パスワードの大文字小文字は同じ扱いでしたが、Oracle Database 11g以降、パスワードの大文字小文字は区別されます。
例として:
ログインを簡素化したく、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パラメータは非推奨となります。
これは、下位互換性のためにのみ残されています。
今後なくなる可能性があるため、移行時、こちらを注意して設計いただければと思います。