왜인지 비밀번호도 틀리지 않았고, 로컬 계정임에도 자꾸 Oracle 계정이 잠긴다.

지속적으로 이런 일이 일어날 것 같아서, 계정이 잠겼을 때 해제하는 법을 기록하여 복기하고자 한다.

1. SYSTEM 계정 접속

sqlplus "/as sysdba"

 

CMD에 위 명령어를 입력하여 SYSTEM 계정으로 Oracle에 접속한다.
디렉터리 위치는 상관없는 듯하다.

 

명령어를 입력하면 위 사진처럼 Oracle 접속이 가능하다.

2. 계정 상태 조회

SELECT USERNAME, ACCOUNT_STATUS, LOCK_DATE FROM DBA_USERS;

 

해당 명령어를 통해 내가 확인하고 싶은 계정의 상태를 확인할 수 있다.
특정 계정만 확인하고 싶다면, WHERE절을 추가해 주면 된다.

3. 계정 잠금 해제

ALTER USER {USERNAME} ACCOUNT UNLOCK;

 

잠금을 해제하고 싶은 계정을 다음과 같이 풀어준다.

잠금 빈도 줄이기

SELECT RESOURCE_NAME, LIMIT
FROM DBA_PROFILES
WHERE PROFILE = 'DEFAULT';

 

위 SQL문으로 계정 잠금이 발생하는 원인을 확인할 수 있다.

 

보통 Oracle 계정 잠금이 발생하는 주된 이유는 다음과 같다고 한다

1. 비밀번호 오류

사용자가 지정된 횟수 이상으로 잘못된 비밀번호를 입력하면 계정이 잠길 수 있다.
이 경우, 위 튜플 중 FAILED_LOGIN_ATTEMPTS 설정에 따라 계정이 잠긴다.
비밀번호 오류 횟수가 FAILED_LOGIN_ATTEMPTS에 설정된 LIMIT 이상을 넘으면
PASSWORD_LOCK_TIME에 지정된 일수만큼 계정이 잠긴다.

2. 비밀번호가 만료되었을 때

PASSWORD_LIFE_TIME 설정에 따라 주기적 비밀번호 변경을 강제하기 위해 계정이 잠길 수 있다.
비밀번호 만료 기간을 늦추고 싶거나, 앞당기고 싶을 때 해당 튜플의 LIMIT 값을 변경해 주면 된다.

3. 계정을 오래 사용하지 않았을 때

오랫동안 사용하지 않은 계정 또한 잠길 수 있다.
INACTIVE_ACCOUNT_TIME에 표기된 일수만큼 계정에 접속하지 않았을 경우,
계정이 자동으로 잠기는 일이 발생한다.

 

언급된 주된 이유 중 자신의 계정이 왜 잠겼는지 파악하고,
LIMIT 속성값을 변경하거나 계정을 갱신하는 방법으로 문제를 해결할 수 있다.

(필자는 왜 잠겼는지 도대체가 모르겟음,)

유영웅