PASSWORD_LIFE_TIME을 무기한으로 설정하기
다음과 같은 에러 발생으로 매번 패스워드를 변경 하고 싶지 않는다면 profile DEFAULT를 사용하는 모든 사용자의 비밀번호 유효 기간을 무기한으로 변경 할 수 있습니다.
ORA-28001: the password has expired
ORA-28002: the password will expire within 7 days
다음 SQL문은 dba권한을 가진 사용자로 로그인 하여 profile DEFAULT를 사용하는 사용자의 비밀번호 유효 기간을 무기한으로 변경 합니다.
C:\> sqlplus sys/manager@192.168.127.130/orcl as sysdba
SQL> alter profile DEFAULT limit PASSWORD_LIFE_TIME unlimited;
Profile altered.
다음 SQL문으로 PASSWORD_LIFE_TIME (비밀번호 유효 기간)이 무기한으로 변경된 것을 확인 할 수 있습니다.
SQL> COLUMN profile FORMAT A16
COLUMN resource_type FORMAT A13
COLUMN limit FORMAT A10
SELECT profile,resource_type,limit FROM dba_profiles WHERE resource_name='PASSWORD_LIFE_TIME';
PROFILE RESOURCE_TYPE LIMIT
---------------- ------------- ----------
DEFAULT PASSWORD UNLIMITED
SQL>
그렇지만 유효 기간을 UNLIMITED으로 변경 한 것 만으로 바로 ORA-28002 에러가 사라지는 것은 아닙니다. 아직 다음 SQL문처럼 아직도 ORA-28002 에러가 발생하는 것을 확인 할 수 있습니다.
C:\> sqlplus scott/tiger@192.168.127.130/orcl
SQL*Plus: Release 12.2.0.1.0 Production on Mon Mar 1 17:48:07 2021
Copyright (c) 1982, 2016, Oracle. All rights reserved.
ERROR:
ORA-28002: the password will expire within 7 days
Last Successful login time: Mon Mar 01 2021 17:29:34 +09:00
Connected to:
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
SQL> alter session set nls_date_format = 'YYYY/MM/DD';
Session altered.
SQL> 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
SQL>
일단 발생한 에러는 다음과 같이 비밀번호 변경 SQL문을 실행하여 UNLIMITED로 변경된 profile DEFAULT값이 덩달아 EXPIRY_DATE에 재 설정 되도록 해야 합니다.
C:\>sqlplus sys/manager@192.168.127.130/orcl as sysdba
SQL> alter user scott identified by tiger;
User altered.
다음 SQL문으로 덩달아 재 설정 된 EXPIRY_DATE가 NULL (미 설정, UNLIMITED)임을 확인할 수 있습니다.
C:\> sqlplus scott/tiger@192.168.127.130/orcl
SQL> alter session set nls_date_format = 'YYYY/MM/DD';
Session altered.
SQL> 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 OPEN 2021/03/01
SQL>
기본 설정으로 돌아가기
Oracle을 설치 했을 때의 기본 설정으로 돌아가고 싶다면 다음과 같이 PASSWORD_LIFE_TIME (비밀번호 유효 기간)의 profile DEFAULT값을 180일로 재 설정하십시오.
C:\> sqlplus sys/manager@192.168.127.130/orcl as sysdba
SQL> alter profile DEFAULT limit PASSWORD_LIFE_TIME 180;
Profile altered.
SQL>
다음 SQL문으로 유효 기간이 기본 설정으로 돌아갔는지 확인 할 수 있습니다.
C:\> sqlplus scott/tiger@192.168.127.130/orcl
SQL> alter session set nls_date_format = 'YYYY/MM/DD';
Session altered.
SQL> 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 OPEN 2021/03/01 2021/08/28
SQL>