プログラマーを職業としてます。 Flex,Air,C#,Oracle,PHPの言語ノウハウを中心に情報発信していきます


[Oracle11g] パスワードの有効期限に注意!!

ある日、Oracleデータベースにログインしようとしたところ、ログインはできましたが、以下のようなメッセージが同時に表示されました。

ERROR:
ORA-28002: パスワードは、3日以内に期限切れになります。

 

調べてみたところ、Oracle11gではパスワードの有効期限がデフォルトで180日になっているようです。
セキュリティ上は必要な機能ですが、企業内で使用するDBのパスワードはあまり変更しないですよね。
使用するアプリ側にもパスワードを記載したりしますので、変更するといろいろなところに問題が発生します。

 

10gまでのように、デフォルトのパスワード有効期限を無期限にするには、以下のSQLをSYSユーザーなどで実行します。

alter profile default limit password_life_time unlimited;

これで、今後パスワード設定時には無期限になります。
※”unlimited”の部分を日数指定すれば、その期間が有効期間となります。

 

上記SQL実行後、デフォルト有効期限が変更されたかを念のため確認します。

select * from dba_profiles where resource_name = 'PASSWORD_LIFE_TIME';

取得結果のPROFILE=”DEFAULT”行にあるLIMITカラムの値が”UNLIMITED”になっていればOKです。

ただし、すでに設定されているアカウントに関しては有効期限が設定された状態ですので、パスワードを再設定します。

alter user ユーザ名 identified by パスワード;

 

もしすでに有効期限が切れてしまっている場合、アカウントがロックされてしまいます。
その場合は、上記パスワード再設定とともにアカウントのロック解除を行う必要があります。

alter user ユーザー名 account unlock;

Oracle11gでは、他にもアカウント名の大文字小文字区別がデフォルトオンになっていたりと、これまで意識していなかった部分に変更が入っていますので、注意が必要です。

それにしても危ないところでした。
これに気づかなかったら、ある日からシステムがまったく動かない状態になって、クレームの嵐になるところでした。
たまたまログインしてみてよかった。。。

今後、データベースを作成する際には忘れずにパスワードの無期限指定を入れておく必要がありますね。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です