신문지한장

[Tech] ORA-28002 : oracle system 계정 lock(EXPIRED) ? 본문

Oracle/Tech

[Tech] ORA-28002 : oracle system 계정 lock(EXPIRED) ?

신문지한장 2025. 2. 7. 17:03

💡 account_status 상태는 신규 로그인 시 변경된다.

     로그인 전까지 직전 상태 유지

     account_status 상태 변화 : OPEN → EXPIRED(GRACE) → EXPIRED

 

(1) 소소제목

SYS@EJJM>!date
2025. 02. 04. (화) 12:40:33 KST

 

(2) 현재 SYSTEM 및 OPEN 유저 상태 확인

col username for a30
col profile for a30
set line 200
set pages 1000
select username, account_status, lock_date, expiry_date, created, profile from dba_users;

USERNAME                       ACCOUNT_STATUS                   LOCK_DATE          EXPIRY_DATE        CREATED            PROFILE
------------------------------ -------------------------------- ------------------ ------------------ ------------------ ------------------------------
SYS                            OPEN                                                                   17-APR-19          DEFAULT
SYSTEM                         OPEN                                                                   17-APR-19          DEFAULT
TEST1                          OPEN                                                                   27-NOV-24          DEFAULT

45 rows selected.

 

(3) PASSWORD_LIFE_TIME 변경 (180일 > 1일)

col limit for a30
SYS@TRUINJM> select * from dba_profiles where profile='DEFAULT' and RESOURCE_NAME='PASSWORD_LIFE_TIME';
PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT                          COM INH IMP
------------------------------ -------------------------------- -------- ------------------------------ --- --- ---
DEFAULT                        PASSWORD_LIFE_TIME               PASSWORD UNLIMITED                            NO  NO  NO


SYS@TRUINJM> alter profile default limit PASSWORD_LIFE_TIME 1;

Profile altered.


SQL> select * from dba_profiles where profile='DEFAULT' and RESOURCE_NAME='PASSWORD_LIFE_TIME';

PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT                          COM INH IMP
------------------------------ -------------------------------- -------- ------------------------------ --- --- ---
DEFAULT                        PASSWORD_LIFE_TIME               PASSWORD 1                              NO  NO  NO

 

(4) 프로파일 limit 값 변경 후 유저 상태 확인

col username for a30
col profile for a30
set line 200
set pages 1000
select username, account_status, lock_date, expiry_date, created, profile from dba_users;

USERNAME                       ACCOUNT_STATUS                   LOCK_DATE          EXPIRY_DATE        CREATED            PROFILE
------------------------------ -------------------------------- ------------------ ------------------ ------------------ ------------------------------
SYS                            OPEN                                                                   17-APR-19          DEFAULT
SYSTEM                         OPEN                                                                   17-APR-19          DEFAULT
TEST1                          OPEN                                                                   27-NOV-24          DEFAULT

45 rows selected.

 

(5) EXPIRY_DATE 는 만료되어 system 재접속 (일반 유저 test1 도 재접속 해봄)

- 접속은 되지만 곧 만료된다고 뜸

-- system 유저 정상 접속 후 테이블조회 가능
SYS@EJJM>conn system/manager0
ERROR:
ORA-28002: the password will expire within 7 days

Connected.

SYSTEM@EJJM>select count(*) from tab;

  COUNT(*)
----------
       151

----------------------------------------------------------------------------------

-- 일반유저도 가능
SYS@EJJM>conn test1/test1
ERROR:
ORA-28002: the password will expire within 7 days


Connected.
TEST1@EJJM>!date

 

(6) 한번 더 유저 상태 확인

- 재접속했던 SYSTEM, TEST1 계정은 OPEN → EXPIRED(GRACE) 상태로 변경됨

SYS@EJJM>select username, account_status, lock_date, expiry_date, created, profile from dba_users;

USERNAME                       ACCOUNT_STATUS                   LOCK_DATE          EXPIRY_DATE        CREATED            PROFILE
------------------------------ -------------------------------- ------------------ ------------------ ------------------ ------------------------------
SYS                            OPEN                                                18-APR-19          17-APR-19          DEFAULT
SYSTEM                         EXPIRED(GRACE)                                      11-FEB-25          17-APR-19          DEFAULT
TEST1                          EXPIRED(GRACE)                                      11-FEB-25          27-NOV-24          DEFAULT

45 rows selected.

 

(7) OS 날짜를 극단적으로 변경

[root@ejdb ~]# date -s '2025-09-05'
2025. 09. 05. (금) 00:00:00 KST
[root@ejdb ~]#

 

(8) 확인 (현재 OS 날짜 : 25/09/05 , SYSTEM, TEST1 계정 만료 날짜 : 25/02/11)

SYS@EJJM>col username for a30
col profile for a30
set line 200
set pages 1000
select username, account_status, lock_date, expiry_date, created, profile from dba_users;SYS@EJJM>SYS@EJJM>SYS@EJJM>SYS@EJJM>

USERNAME                       ACCOUNT_STATUS                   LOCK_DATE          EXPIRY_DATE        CREATED            PROFILE
------------------------------ -------------------------------- ------------------ ------------------ ------------------ ------------------------------
SYS                            OPEN                                                18-APR-19          17-APR-19          DEFAULT
SYSTEM                         EXPIRED(GRACE)                                      11-FEB-25          17-APR-19          DEFAULT
TEST1                          EXPIRED(GRACE)                                      11-FEB-25          27-NOV-24          DEFAULT

45 rows selected.

SYS@EJJM>conn test1/test1
ERROR:
ORA-28001: the password has expired


Changing password for test1
New password:

 

(9) test1 계정 재접속 후 EXPIRED 된 것을 확인

USERNAME                       ACCOUNT_STATUS                   LOCK_DATE          EXPIRY_DATE        CREATED            PROFILE
------------------------------ -------------------------------- ------------------ ------------------ ------------------ ------------------------------
SYS                            OPEN                                                18-APR-19          17-APR-19          DEFAULT
SYSTEM                         EXPIRED(GRACE)                                      11-FEB-25          17-APR-19          DEFAULT
MDDATA                         LOCKED                           30-AUG-24                             17-APR-19          DEFAULT
TEST1                          EXPIRED                                             11-FEB-25          27-NOV-24          DEFAULT
SYSBACKUP                      LOCKED                           30-AUG-24                             17-APR-19          DEFAULT


45 rows selected.

 

- 시스템도 동일하게 재접속 후 EXPRIED된 것 확인

SYS@EJJM>conn system/manager0
ERROR:
ORA-28001: the password has expired


Changing password for system
New password:  >>>>>>>>>>일부러 패스워드 안입력하고 끊고 나옴


select username, account_status, lock_date, expiry_date, created, profile from dba_users;SYS@EJJM>SYS@EJJM>SYS@EJJM>SYS@EJJM>

USERNAME                       ACCOUNT_STATUS                   LOCK_DATE          EXPIRY_DATE        CREATED            PROFILE
------------------------------ -------------------------------- ------------------ ------------------ ------------------ ------------------------------
SYS                            OPEN                                                18-APR-19          17-APR-19          DEFAULT
SYSTEM                         EXPIRED                                             11-FEB-25          17-APR-19          DEFAULT    >> 잠김
TEST1                          EXPIRED                                             11-FEB-25          27-NOV-24          DEFAULT


45 rows selected.

 

(10) TEST1 패스워드 재설정 후  OPEN 확인

Changing password for test1
New password:
Retype new password:
Password changed
Connected.

TEST1@EJJM>   >>> 접속해서 봐꿔줌

SYS@EJJM>col username for a30
col profile for a30
set line 200
set pages 1000
select username, account_status, lock_date, expiry_date, created, profile from dba_users;

TEST1                          OPEN                                                06-SEP-25          27-NOV-24          DEFAULT  >> 알아서 정상 OPEN 됨 & SYSTEM도 


45 rows selected.

 

(번외) system 계정 lock도 잘 걸림

SYS@TRUINJM>alter user system account lock;

User altered.

SYS@TRUINJM>select username,account_status  from dba_users;

USERNAME                       ACCOUNT_STATUS
------------------------------ --------------------------------
SYS                            OPEN
SYSTEM                         LOCKED
XS$NULL                        EXPIRED & LOCKED
OJVMSYS                        LOCKED
LBACSYS                        LOCKED
OUTLN                          LOCKED
SYS$UMF                        LOCKED
DBSNMP                         LOCKED
APPQOSSYS                      LOCKED
DBSFWUSER                      LOCKED
GGSYS                          LOCKED
ANONYMOUS                      EXPIRED & LOCKED
CTXSYS                         EXPIRED & LOCKED
DVSYS                          LOCKED
DVF                            LOCKED
GSMADMIN_INTERNAL              LOCKED
MDSYS                          LOCKED
OLAPSYS                        LOCKED
XDB                            LOCKED
WMSYS                          LOCKED
GSMCATUSER                     LOCKED
TESTUSER                       OPEN
MDDATA                         LOCKED
TEST1                          OPEN
SYSBACKUP                      LOCKED
REMOTE_SCHEDULER_AGENT         LOCKED
GSMUSER                        LOCKED
SYSRAC                         LOCKED
GSMROOTUSER                    LOCKED
SI_INFORMTN_SCHEMA             LOCKED
BLOB                           OPEN
AUDSYS                         LOCKED
DIP                            LOCKED
ORDPLUGINS                     LOCKED
SYSKM                          LOCKED
ORDDATA                        LOCKED
ORACLE_OCM                     LOCKED
ARKMGR                         OPEN
ARKMGR2                        OPEN
SCOTT                          OPEN
SYSDG                          LOCKED
ORDSYS                         LOCKED
TEST                           OPEN
OGG                            OPEN
KING                           LOCKED

45 rows selected.