Oracle11g からはデフォルトでパスワードの有効期限が180日になっています。 Oracle10g までのようにパスワードの有効期限を無期限にしないと、半年後に以下の Oracle エラーが発生することになり、色々面倒なことになります。とくに一括で 「 ログインできません 」 的なメッセージを表示しているようなシステムの場合には、 解析にも時間がかかるかもしれません。
天災は忘れたころにやってきます
スポンサーリンク
「ORA-28001: ユーザーのアカウントが期限切れです。パスワードを変更する必要があります。」
パスワードの有効期限を無期限にする
パスワードの有効期限を無期限にする方法は以下の通りです。なお、SQLの表示結果はわかりやすいように多少加工してありますので、実際の表示とは異なります。
-- ユーザのプロファイルを確認する。(特に変更していない場合はdefaultだろう) select username,profile from dba_users; -- username profile -- ---------------------------- -- test_user default -- 対象プロファイルのパスワード有効期限(PASSWORD_LIFE_TIME)を確認する select * from dba_profiles where 0=0 and profile = 'DEFAULT' and resource_name = 'PASSWORD_LIFE_TIME'; -- PROFILE RESOURCE_NAME RESOURCE LIMIT -- ------------------------------------------------------------ -- DEFAULT PASSWORD_LIFE_TIME PASSWORD 180 -- defaultプロファイルのパスワードの有効期限を無制限に変更する alter profile default limit password_life_time unlimited;
ユーザーのロックを解除する
もしも、ORA-28001が発生していてユーザーがロックされている場合は、ロックも解除する必要があります。
-- ユーザのロック状態を確認 select * from DBA_USERS /* * ACCOUNT_STATUSが「EXPIRED & LOCKED」になっていればロックおよびパスワード期限切れ状態 */ -- ロックを解除(アンロック) ALTER USER <ユーザ名> ACCOUNT UNLOCK; /* * ロック解除後には、ACCOUNT_STATUSが「EXPIRED」になっていればパスワードの期限切れ状態 */ -- パスワードの再設定 ALTER USER <ユーザ名> IDENTIFIED BY <新パスワード> /* * パスワード再設定後には、ACCOUNT_STATUSが「OPEN」となり、接続可能となる */