カテゴリー
Oracle Database 運用 未分類

ORA-28001 the password has expired の対応

Oracle をインストールした後何もしないと 180日目で表題のエラーを受取り、接続障害が発生します。この障害を発生させないためには、あらかじめ運用アカウントへ適用するセキュリティーポリシーを定めて、プロファイルに反映させることが必要ですが、目前で起きている障害を直ちに取り除き、運用を速やかに再開させる為の方法も同じように必要なので対応手順をメモしておきます。

和文表記:
ORA-28001: パスワードが期限切れです。

SQL*Plus 等でDBAとしてデータベースを接続し次のコマンドを実行して、プロファイルの設定状況を確認します。

SQL*Plus を使う場合には事前に次のコマンドを実行しておくと、画面表示が見やすくなります:

set linesize 100 pagesize 250
column USERNAME format a30
column ACCOUNT_STATUS format a20
column PROFILE format a10
column LIMIT format a16

現状、DFAULT プロファイルの設定がどうなっているかを調べるのが次のSQLです。

select LIMIT from dba_profiles where RESOURCE_NAME='PASSWORD_LIFE_TIME' and PROFILE='DEFAULT';

初期値のままだと次の様に表示されます。

LIMIT
----------------
180

データベース作成後180日目以後に大騒ぎにならないようにする為には次のSQLを実行しておきます。

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

パスワードの有効期限が切れているアカウントの現況を調べるには次のSQLを実行します。

select USERNAME,ACCOUNT_STATUS,EXPIRY_DATE,PROFILE from dba_users where username = 'アカウント名';

上記の問合せ結果からパスワードの有効期限が切れている事は”EXPIRED”というキーワードで確認できます。

USERNAME                       ACCOUNT_STATUS       EXPIRY_D PROFILE
------------------------------ -------------------- -------- ----------
アカウント名                    EXPIRED              日付時刻  DEFAULT

このアカウントを有効化する為には次の SQL を実行します。

ALTER USER アカウント名 IDENTIFIED BY 新しいパスワード;

これで終わりです。