티스토리 뷰
반응형
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유저 정보 확인하기
SELECT USERNAME,
ACCOUNT_STATUS,
TO_CHAR(LOCK_DATE,'YYYY.MM.DD HH24:MI') LOCK_DATE
FROM DBA_USERS
WHERE USERNAME = '계정';
2. ACCOUNT_STATUS컬럼을 확인한다.
- OPEN : 정상
- LOCKED(TIMED) : 패스워드 설정 횟수 이상 잘못입력하여 잠김
- EXPIRED & LOCKED : 패스워드 기간이 만료되어 잠김
...
접속 시 오류난 유저의 ACCOUNT_STATUS컬럼을 보면 LOCKED(TIMED)으로 되어 있을 것 이다.
C:\> sqlplus "/as sysdba" --system계정으로 로그인
...
SQL> select * from dba_users; --DB유저 정보 확인하기
SELECT USERNAME,
ACCOUNT_STATUS,
TO_CHAR(LOCK_DATE,'YYYY.MM.DD HH24:MI') LOCK_DATE
FROM DBA_USERS
WHERE USERNAME = '계정';
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. 패스워드 변경
ALTER USER SYSTEM IDENTIFIED BY ****;
C:\> sqlplus "/as sysdab" --system계정으로 로그인
...
SQL> alter user 유저명 account unlock; --LOCK걸린 유저 UNLOCK하기
2. LOCK되었던 유저로 로그인을 확인한다.
3. 패스워드 변경
ALTER USER SYSTEM IDENTIFIED BY ****;
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이 되는지 확인할 수 있다.
반응형
'Database' 카테고리의 다른 글
[ORACLE]테이블의 컬럼을 변경한 유저를 아는 방법 (0) | 2012.03.14 |
---|---|
[ORACLE]다른 DB User 에게 자신의 테이블을 볼수 있도록 select 권한주기 (0) | 2012.03.13 |
[Oracle] 디비링크 등록 및 사용 (0) | 2012.03.13 |
[Oracle] Random Sampling(랜덤샘플링) (0) | 2012.03.13 |
[MSSQL]insert row 스크립트 생성 SP (0) | 2012.03.07 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 윈도우
- 테이블
- select
- Oracle
- java
- delete
- 리눅스
- 설정
- Linux
- 파일
- Toad
- sql
- DB
- Shell
- 백업
- 데이터
- mssql
- tomcat
- 서버
- DATABASE
- IP
- apache
- eclipse
- 자동차
- server
- 오라클
- table
- Windows
- MySQL
- user
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함