반응형
ORA-28000: the account is locked 은 사용자가 로그인 시 계정이 잠겨 접속이 차단된 상태임을 의미함.
계정 잠금 원인, 해제 방법, SYS 접속 방법, 예방 조치까지 순서대로 정리함.
1) 잠금 원인 파악
계정 상태 확인
SELECT username, account_status, lock_date, expiry_date
FROM dba_users
WHERE username = 'TARGET_USER';
프로파일 확인
SELECT username, profile
FROM dba_users
WHERE username = 'TARGET_USER';
SELECT *
FROM dba_profiles
WHERE profile = '사용중인_PROFILE_NAME'
AND resource_name = 'FAILED_LOGIN_ATTEMPTS';
최근 로그인 실패 확인
SELECT username, logoff_time, returncode, os_user, machine, program, timestamp
FROM dba_audit_session
WHERE username = 'TARGET_USER'
ORDER BY timestamp DESC;
현재 연결 확인
SELECT sid, serial#, username, osuser, machine, program, status
FROM v$session
WHERE username = 'TARGET_USER';외부에서 잘못된 패스워드 반복 사용 여부 확인
- WAS, 배치 스크립트, cron, DB link 등 점검 필요함.
2) 계정 잠금 해제
계정 잠금 해제(패스워드 유지)
ALTER USER target_user ACCOUNT UNLOCK;
계정 잠금 해제 + 패스워드 변경(권장)
ALTER USER target_user IDENTIFIED BY "NewP@ssw0rd!" ACCOUNT UNLOCK;
프로파일 임시 변경(테스트용)
ALTER PROFILE your_profile LIMIT FAILED_LOGIN_ATTEMPTS 10;
잠금 원인 제거
잘못된 자격증명 사용 사례 수정 필수임.
3) 추가 점검 쿼리
- 실패 로그인 횟수 확인
SELECT username, count(*) attempts
FROM dba_audit_session
WHERE username = 'TARGET_USER'
AND returncode != 0
AND timestamp > sysdate - 7
GROUP BY username;프로파일 잠금 시간 확인
SELECT *
FROM dba_profiles
WHERE resource_name IN ('FAILED_LOGIN_ATTEMPTS','PASSWORD_LOCK_TIME')
AND profile = '사용중인_PROFILE_NAME';
4) Oracle 21c SYS 접속 방법
A. 로컬 OS 인증
$ su - oracle
$ sqlplus / as sysdba
- OS 사용자 인증으로 SYSDBA 접속 가능함.
B. 원격 접속 (패스워드 방식)
sqlplus sys@pdb_name as sysdba
Enter password: <sys_password>
- 패스워드 파일(orapwd)과 REMOTE_LOGIN_PASSWORDFILE 확인 필요함.
C. 21c 주의 사항
- REMOTE_OS_AUTHENT 파라미터 desupported 됨
- 패스워드 파일 마이그레이션 시 대/소문자 민감성 확인 필요함
5) SYS 계정 문제 시
- OS에서 직접 접속 → sqlplus / as sysdba
- 비밀번호 파일 확인 및 REMOTE_LOGIN_PASSWORDFILE 확인
- DB 인스턴스 상태 확인 후 필요 시 startup/shutdown 수행
6) 재발 방지
- 자격증명 중앙화 → 배포 자동화 적용
- 실패 로그인 모니터링 → 일정 횟수 이상 알람
- 프로파일/정책 점검 → FAILED_LOGIN_ATTEMPTS, PASSWORD_LOCK_TIME
- 주기적 비밀번호 회전 및 Vault 같은 키 관리 사용
- 감사 활성화 → 누가 언제 실패했는지 추적 가능
7) 실전 체크리스트
- 계정 상태 확인: SELECT username, account_status FROM dba_users;
- 잠금 해제: ALTER USER <user> ACCOUNT UNLOCK;
- 패스워드 변경 후 잠금 해제: ALTER USER <user> IDENTIFIED BY <newpass> ACCOUNT UNLOCK;
- 실패 원인 추적: dba_audit_session, v$session, cron/배치 스크립트 확인
- SYS 접속: 로컬 → sqlplus / as sysdba, 원격 → sqlplus sys@pdb as sysdba
반응형
'DB' 카테고리의 다른 글
| [Oracle] Oracle 시퀀스 재설정 방법 (0) | 2025.12.17 |
|---|---|
| [Oracle] 특정 컬럼 암호화 하는 방법 (0) | 2025.09.30 |
| [Oracle] 특정 컬럼을 사용하는 테이블 조회 (0) | 2025.09.24 |
| [Oracle] Oracle 파티션 생성 쿼리 (6) | 2025.08.25 |
| [Oracle] 테이블 파티션 자동으로 생성 (0) | 2025.06.13 |