たきるブログ

C#やOracleなどの情報を書いています。

【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インスタンスを再起動させてみても設定値が元に戻っていないことを確認した。