oracle

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

ORA-28002が発生するもまだログインはできます。メッセージの通り数日以内に期限切れが発生しログインができなくなってしまうので対策が必要です。対策として2つあります。
パスワードを更新する、もしくはパスワード権限を無期限にする方法です。今回は両方やってみます。

症状確認

[oracle@vm102 admin]$ sqlplus sooni/sooni@ORA19

SQL*Plus: Release 19.0.0.0.0 - Production on 日 10月 9 15:31:07 2022
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

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


最終正常ログイン時間: 日 10月 09 2022 15:29:06 +09:00


Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
SQL>
上記の通りエラーが発生するもログインする事は可能です。
現状確認SQL
select t.USERNAME,t.ACCOUNT_STATUS,t.CREATED
,t.PROFILE,t.EXPIRY_DATE,t.LOCK_DATE
 from dba_users t where t.USERNAME ='SOONI'
;
現状確認例
-- 現状確認
SQL> select t.USERNAME,t.ACCOUNT_STATUS,t.CREATED,t.PROFILE,t.EXPIRY_DATE
  2  ,t.LOCK_DATE
  3   from dba_users t where t.USERNAME ='SOONI'
  4  ;

-- DEFAULTプロファイルを使っている事確認できます
USERNAME   ACCOUNT_STATUS       CREATED  PROFILE    EXPIRY_D LOCK_DAT
---------- -------------------- -------- ---------- -------- --------
SOONI      EXPIRED(GRACE)       22-02-15 DEFAULT    22-10-16     <--期限が迫っている事確認できます

対策1:パスワード更新する

-- 当然パスワード変更をすると解決します
SQL> alter user "SOONI" IDENTIFIED BY "soonipass";

ユーザーが変更されました。

-- 再度dba_usersを確認してみます
SQL> select t.USERNAME,t.ACCOUNT_STATUS,t.CREATED
  2  ,t.PROFILE,t.EXPIRY_DATE,t.LOCK_DATE
  3   from dba_users t where t.USERNAME ='SOONI';

USERNAME   ACCOUNT_STATUS       CREATED  PROFILE    EXPIRY_D LOCK_DAT
---------- -------------------- -------- ---------- -------- --------
SOONI      OPEN                 22-02-15 DEFAULT    23-04-07    <-- 期限が更新されています

SQL>

対策2:パスワードの期限を無期限にする

今回のケースで言うとsooniユーザは「DEFAULT」プロファイルを使っていますので、このプロファイルに記載されているpassword_life_timeを無期限(unlimited)に更新してあげればよいのですが、これだと「DEFAULT」プロファイルを使っている他のユーザも同様に無期限になってしまいます。少し乱暴な気もするのでここでは、sooni用に新規にプロファイルを作成し対応する事とします。

プロファイルの作成

プロファイルにはいろんな項目ありますが、今回はPASSWORD_LIFE_TIMEのみを指定しています。省略したその他の項目はデフォルトが採用されます。

create profile sooni_profile limit
PASSWORD_LIFE_TIME unlimited
;
プロファイルの作成と割当例
-- sooniユーザ専用プロファイルの作成
SQL> create profile sooni_profile limit
  2  PASSWORD_LIFE_TIME unlimited
  3  ;

プロファイルが作成されました。

-- 作成したプロファイルをsooniへ割り当てる
SQL> alter user sooni profile sooni_profile
  2  ;

-- プロファイル一覧
-- 以下の通り省略したものはDEFAULTが採用されています
SQL> SELECT p.PROFILE,p.RESOURCE_NAME,p.RESOURCE_TYPE,p.LIMIT FROM DBA_PROFILES p where p.PROFILE='SOONI_PROFILE'
  2  order by p.PROFILE
  3  ;

PROFILE              RESOURCE_NAME              RESOURCE LIMIT
-------------------- -------------------------- -------- ----------
SOONI_PROFILE        COMPOSITE_LIMIT            KERNEL   DEFAULT
SOONI_PROFILE        SESSIONS_PER_USER          KERNEL   DEFAULT
SOONI_PROFILE        CPU_PER_SESSION            KERNEL   DEFAULT
SOONI_PROFILE        CPU_PER_CALL               KERNEL   DEFAULT
SOONI_PROFILE        LOGICAL_READS_PER_SESSION  KERNEL   DEFAULT
SOONI_PROFILE        LOGICAL_READS_PER_CALL     KERNEL   DEFAULT
SOONI_PROFILE        IDLE_TIME                  KERNEL   DEFAULT
SOONI_PROFILE        CONNECT_TIME               KERNEL   DEFAULT
SOONI_PROFILE        PRIVATE_SGA                KERNEL   DEFAULT
SOONI_PROFILE        FAILED_LOGIN_ATTEMPTS      PASSWORD DEFAULT
SOONI_PROFILE        PASSWORD_LIFE_TIME         PASSWORD UNLIMITED
SOONI_PROFILE        PASSWORD_REUSE_TIME        PASSWORD DEFAULT
SOONI_PROFILE        PASSWORD_REUSE_MAX         PASSWORD DEFAULT
SOONI_PROFILE        PASSWORD_VERIFY_FUNCTION   PASSWORD DEFAULT
SOONI_PROFILE        PASSWORD_LOCK_TIME         PASSWORD DEFAULT
SOONI_PROFILE        PASSWORD_GRACE_TIME        PASSWORD DEFAULT
SOONI_PROFILE        INACTIVE_ACCOUNT_TIME      PASSWORD DEFAULT

17行が選択されました。

SQL>

-- 変更内容を確認する
-- 以下は12cでの例の為、PASSWORD_LIFE_TIMEのUNLIMITEDだけでEXPIRY_DATEがクリアされ
-- 無期限になっていますが、19cでは次のパスワード更新を実施しないとEXPIRY_DATEがクリアされません
--
ユーザーが変更されました。
SQL> select t.USERNAME,t.ACCOUNT_STATUS,t.CREATED
  2  ,t.PROFILE,t.EXPIRY_DATE,t.LOCK_DATE
  3   from dba_users t where t.USERNAME ='SOONI'
  4  ;
USERNAME   ACCOUNT_STATUS       CREATED  PROFILE        EXPIRY_D LOCK_DAT
---------- -------------------- -------- -------------- -------- --------
SOONI      OPEN                 22-02-15 SOONI_PROFILE          <-- ここがクリアされている


SQL>
SQL*Plus用
set lin 200
set pages 100
COLUMN USERNAME FORMAT A10
COLUMN ACCOUNT_STATUS FORMAT A8
COLUMN PROFILE FORMAT A20
COLUMN RESOURCE_NAME FORMAT A26
COLUMN RESOURCE_TYPE FORMAT A8
COLUMN LIMIT FORMAT A10
スポンサーリンク