반응형
토드로 DB접속시 한번 비번을 잘못 입력한 상태로 무의식적으로 재접속을 몇번 누르니...그만 계정이 잠겨버렸다.
ORA-28000 : the account is locked 라는 메시지로 검색을 해보니 아래와 같이 상세한 설명이 되어 있다.
출처상에는 11g로 되어 있으나 사용하는 DB가 10g인데 문제없이 적용이 가능했다.
[퍼온글입니다.]
출처 : http://www.happytomorrow.net/116
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)으로 되어 있을 것 이다.
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되었던 유저로 로그인을 확인한다.
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이 되는지 확인할 수 있다.
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이 되는지 확인할 수 있다.
반응형
'리스토리의 IT's > DBMS' 카테고리의 다른 글
ORA-01031: 권한이 불충분합니다. (0) | 2013.05.10 |
---|---|
SQL Developer 백스페이스 안될때 (2) | 2013.05.09 |