[ Oracle11g ] パスワードの有効期限を無期限にする ( password_life_time )

Pocket

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」となり、接続可能となる
 */
スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *