본문 바로가기
2.1.데이터베이스(ORACLE)/3.ORACLE 오류

[ORACLE] 패스워드 정책, ORA-28000 : the account is locked

by 벅스쭌 2012. 3. 2.
OS : Windows XP
프로그램 및 버전 : Oralce11g

※ 주의사항 : 없음

1. 증상
오라클 특정 유저 패스워드 변경 후 처음에는 로그인이 잘 되었는데 어느순간 부터 ORA-28000 : the account is locked 오류 발생

2. 원인
특정 유저 패스워드 변경 후 수시로 DB에 접속하는 프로그램에서 변경된 패스워드를 반영하지 않았음. 프로그램에서 계속 잘못된 패스워드로 접속을 시도하였고 오라클 설정에 따라 자동으로 특정 유저가 LOCK됨.



3. 해결방법

1) USER 패스워드 만료 상태 확인하기
1. system계정으로 로그인 하여 다음을 입력 한다.
C:\> sqlplus "/as sysdba" --system계정으로 로그인
...
SQL> select * from dba_users; --DB유저 정보 확인하기

2. ACCOUNT_STATUS컬럼을 확인한다.
- OPEN : 정상
- LOCKED(TIMED) : 패스워드 설정 횟수 이상 잘못입력하여 잠김
- EXPIRED & LOCKED : 패스워드 기간이 만료되어 잠김
...
접속 시 오류난 유저의 ACCOUNT_STATUS컬럼을 보면 LOCKED(TIMED)으로 되어 있을 것 이다.

2) LOCK걸린 유저 UNLOCK하기
1. system계정으로 로그인 하여 다음을 입력 한다.
C:\> sqlplus "/as sysdab" --system계정으로 로그인
...
SQL> alter user 유저명 account unlock; --LOCK걸린 유저 UNLOCK하기

2. LOCK되었던 유저로 로그인을 확인한다.


3. 결과
우리가 은행에서 현금 인출할 때 비밀번호를 3번이상 잘못 입력하면 은행에 가서 풀어야 하는 것처럼 오라클도 이러한 기능을 제공을 하는 것 같다.
보안상 좋은 기능이지만 어찌보면 굉장히 위험한 기능인 것 같다. 외부에서 누군가가 악한 마음을 갖고 잘못된 패스워드로
계속 접근을 시도해서 유저를 LOCK시켜 버린다면... 에효... 물론 이에 대한 해결방안이 있겠지만... 나중에 찾아봐야겠다.

4. 추가로 알아보기
그럼 과연 몇번 패스워드 입력을 실패하면 LOCK이 걸릴까? 한번 알아보았음.

1) 패스워드 LOCK횟수 확인하기
1. system계정으로 로그인 하여 다음을 입력 한다.
C:\> sqlplus "/as sysdab" --system계정으로 로그인
...
SQL> SELECT U.USERNAME,P.PROFILE, P.RESOURCE_NAME, P.LIMIT
FROM DBA_USERS U, DBA_PROFILES P WHERE P.PROFILE=U.PROFILE
AND RESOURCE_NAME='FAILED_LOGIN_ATTEMPTS';
...

2. 위 sql문을 입력 하면 계정별로 몇번의 패스워드 실패시 LOCK이 되는지 확인할 수 있다.
반응형