오류 내용
다음은 ORA-28002가 발생한 로그인 결과 화면 입니다.
C:\>sqlplus scott/tiger@192.168.127.130/orcl
SQL*Plus: Release 12.2.0.1.0 Production on Mon Mar 1 13:14:58 2021
Copyright (c) 1982, 2016, Oracle. All rights reserved.
ERROR:
ORA-28002: the password will expire within 7 days
Last Successful login time: Sat Jan 30 2021 15:49:03 +09:00
Connected to:
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
SQL>
참고로 한글 메시지는 다음과 같습니다.
C:\>set nls_lang=KOREAN_KOREA.KO16MSWIN949
C:\>sqlplus scott/tiger@192.168.127.130/orcl
SQL*Plus: Release 12.2.0.1.0 Production on 금 10월 15 18:10:48 2021
Copyright (c) 1982, 2016, Oracle. All rights reserved.
ERROR:
ORA-28002: 4 일안에 비밀번호가 만기될 것입니다
마지막 성공한 로그인 시간: 화 10월 12 2021 02:18:10 +09:00
다음에 접속됨:
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
SQL>
Oracle 일반 사용자로 로그인을 했을 때 이와 같이 ORA-28002가 발생 했다면 사용자의 profile DEFAULT와 관련된 PASSWORD_LIFE_TIME (비밀번호 유효 기간) 과 PASSWORD_GRACE_TIME (비밀번호 만료 유예 기간)의 설정을 알아야 합니다.
다음 SQL문으로 로그인한 사용자 자신의 상태를 출력합니다. ACCOUNT_STATUS항목에 출력 된 EXPIRED(GRACE)는 비밀 번호는 만료되었지만 오늘 2021/03/01 부터 만료일 2021/03/08까지 아직은 유예 기간으로 ORA-28002 메시지를 표시하면서 로그인 할 수 있다는 상태를 의미합니다..
COLUMN username FORMAT A6;
COLUMN account_status FORMAT A15;
COLUMN lock_date FORMAT A12;
COLUMN expiry_date FORMAT A12;
select username , account_status , sysdate as today , expiry_date
from user_users;
USERNA ACCOUNT_STATUS TODAY EXPIRY_DATE
------ --------------- ---------- ------------
SCOTT EXPIRED(GRACE) 2021/03/01 2021/03/08
이 유예 기간이 끝나기 전에 사용자 자신의 비밀번호를 변경 하거나 DBA권한을 가진 관리자로 로그인해 비밀번호 유효 기간을 무기한으로 변경 해야 합니다.
사용자 자신의 비밀번호를 변경은 다음 글을 참조하십시오

비밀번호 유효 기간을 무기한으로 변경은 다음 글을 참조하십시오

사용자 프로파일 확인
사용자 프로파일 확인을 위해서는다음과 같이 dba권한을 가진 사용자로 로그인 해야 합니다.
sqlplus sys/manager@192.168.127.130/orcl as sysdba
다음 SQL문으로 사용자가 속한 profile을 확인 할 수 있습니다.
COLUMN username FORMAT A8;
COLUMN profile FORMAT A8;
select username, profile from dba_users where lower(username) = 'scott';
USERNAME PROFILE
-------- --------
SCOTT DEFAULT
다음과 같이 Oracle12c에서는 PASSWORD_LIFE_TIME (비밀번호 유효 기간)의 profile DEFAULT값은 180 일로 설정되어 있습니다. 즉 6개월마다 비밀번호를 변경하지 않으면 안됩니다.
COLUMN profile FORMAT A16;
COLUMN resource_type FORMAT A13;
COLUMN limit FORMAT A6;
SELECT profile,resource_type,limit
FROM dba_profiles
WHERE resource_name='PASSWORD_LIFE_TIME';
PROFILE RESOURCE_TYPE LIMIT
---------------- ------------- ------
DEFAULT PASSWORD 180
ORA_STIG_PROFILE PASSWORD 60
SQL>
다음 SQL문으로 PASSWORD_GRACE_TIME (비밀번호 만료 유예 기간)의 profile DEFAULT값을 확인 할 수 있습니다. (기본 7 일)
COLUMN profile FORMAT A16;
COLUMN resource_type FORMAT A13;
COLUMN limit FORMAT A6;
SELECT profile,resource_type,limit
FROM dba_profiles
WHERE resource_name='PASSWORD_GRACE_TIME';
PROFILE RESOURCE_TYPE LIMIT
---------------- ------------- ------
DEFAULT PASSWORD 7
ORA_STIG_PROFILE PASSWORD 5
유예 기간도 지나버린 경우
그렇다면 PASSWORD_LIFE_TIME (비밀번호 유효 기간) 도 PASSWORD_GRACE_TIME (비밀번호 만료 유예 기간) 도 지나버린 다면 어떻게 될까요? ORA-28001: the password has expired 발생합니다. ORA-28001대해서는 다음 글에서 상세히 설명하였습니다.
