【Oracle】パスワードの大文字小文字を区別しない方法
Oracle10gあたりから、Oracleのユーザーパスワードも大文字小文字を区別するようになった。
稼働しているシステムの入れ替えだとかに遭遇すると、データベースが新しくなったからそれに合わせてくださいなんてことも言えないので、大文字小文字を区別しないでログインできるようになっててほしいわけだ。
ということで、方法を見つけた。
一言で言ってしまうと、これを実行すればいい。
ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE SCOPE = BOTH;
状態を確認するには、こうだ。
SHOW PARAMETERS SEC_CASE_SENSITIVE_LOGON
デフォルトは結果がTRUEになっている。上記のSQLは、これをFALSEに変えちゃう。
但し、これはSQLではない。
だから、結果的にコマンドラインでこんな叩き方になると思う。
C:\Users\Administrator>sqlplus /nolog SQL*Plus: Release 11.2.0.1.0 Production on 水 12月 18 17:32:14 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. SQL> conn sys/manager as sysdba 接続されました。 SQL> SHOW PARAMETERS SEC_CASE_SENSITIVE_LOGON NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ sec_case_sensitive_logon boolean TRUE SQL> ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE SCOPE = BOTH; システムが変更されました。 SQL> SHOW PARAMETERS SEC_CASE_SENSITIVE_LOGON NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ sec_case_sensitive_logon boolean FALSE SQL> shutdown immediate データベースがクローズされました。 データベースがディスマウントされました。 ORACLEインスタンスがシャットダウンされました。 SQL> startup ORACLEインスタンスが起動しました。 Total System Global Area 1686925312 bytes Fixed Size 2176368 bytes Variable Size 989858448 bytes Database Buffers 687865856 bytes Redo Buffers 7024640 bytes データベースがマウントされました。 データベースがオープンされました。 SQL> SHOW PARAMETERS SEC_CASE_SENSITIVE_LOGON NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ sec_case_sensitive_logon boolean FALSE
一応、サーバの再起動を想定して、DBインスタンスを再起動させてみても設定値が元に戻っていないことを確認した。