Oracle 비밀번호 유효 기간을 무기한으로 변경하기

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>

제목과 URL을 복사했습니다