티스토리 뷰



오라클 데이터베이스를 무료로 사용할 수 있는 개발자 버전 XE를 사용하다보면 갑자기 아래와 같은 메시지를 뿌리면서 접속이 않되는 경우가 있습니다.

ORA-28001: the password has expired

Cause: The user’s account has expired and the password needs to be changed


이유는 비밀번호의 유효 기간이 실제로 만료되어서 발생하는 현상으로 보안을 위해서 사용자가 주기적으로 비밀번호를 바꾸도록 유도하기 위한 장치입니다. PASSWORD_LIFE_TIME 변수를 통해서 비밀번호 유효 기간을 시스템레벨로 관리하는데 오라클 10g 버전 까지는 기본값이 무제한 이었지만 11g부터는 아래의 그림과 같이 기본값이 180일로 설정되어 있습니다. 


PASSWORD_LIFE_TIME값을 조회하려면 위의 그림과 같이 "SELECT resource_name,limit FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';" 질의를 사용하면 됩니다.

비밀번호 유효기간 제한을 없애려면 아래와 같은 질의를 관리자로 로그인해서 수행하면 됩니다.

alter profile default limit password_life_time unlimited;


이미 비밀번호 유효기간이 지난 아이디의 제한을 해제하려면 관리자로 로그인해서 비밀번호를 아래와 같은 질의로 재설정해야 합니다.

ALTER USER SYSTEM IDENTIFIED BY SYSPASS;

아이디에 락(Lock)이 걸린 상태라면 아래의 질의로 해결할 수 있습니다.

ALTER USER SYSTEM ACCOUNT UNLOCK;


락이 걸려있거나 비밀번호 유효기간이 지난 아이디를 조회하는 방법은 다음의 질의를 사용합니다.

select username, account_status from dba_users where ACCOUNT_STATUS LIKE '%EXPIRED%';


질의 결과를 보면 비밀번호 유효기간 만료와 락이 모두 걸려있는 것을 확인할 수 있습니다.


위에서 언급한 여러 질의를 사용하려면 관리자로 로그인해야 하는데 윈도우 버전 오라클 XE에서는 일단 프로그램메뉴에서 "Run SQL Command Line"를 선택합니다.

SQL*Plus가 가동되면 "connect / as SYSDBA"로 관리자 로그인을 할 수 있습니다.




댓글
댓글쓰기 폼