반응형

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) 재발 방지

  1. 자격증명 중앙화 → 배포 자동화 적용
  2. 실패 로그인 모니터링 → 일정 횟수 이상 알람
  3. 프로파일/정책 점검 → FAILED_LOGIN_ATTEMPTS, PASSWORD_LOCK_TIME
  4. 주기적 비밀번호 회전 및 Vault 같은 키 관리 사용
  5. 감사 활성화 → 누가 언제 실패했는지 추적 가능

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
반응형