Development/Error

[Error] ORACLE 계정이 Lock 걸렸을 때 원인과 해결 방법 완벽 가이드

은스타 2020. 4. 8. 06:16
반응형

Oracle 계정이 Lock 걸렸을 때 원인과 해결 방법 완벽 가이드

Oracle 데이터베이스를 사용하다 보면 갑자기 계정이 잠기는 문제를 마주치게 될 수 있습니다. "ORA-28000: 계정이 잠겼습니다"라는 오류 메시지가 나타나면 당황스럽고 업무에 차질이 생기게 됩니다. 이 글에서는 Oracle 계정이 Lock 걸리는 다양한 원인과 문제를 해결하는 방법을 자세히 알아보겠습니다.


목차

  1. Oracle 계정 Lock의 주요 원인
  2. 계정 잠금 상태 확인하기
  3. 관리자 권한으로 계정 잠금 해제하기
  4. 비밀번호 만료 문제 해결하기
  5. 비밀번호 정책 확인 및 설정하기
  6. 자주 발생하는 문제 해결 사례
  7. 계정 잠금 예방 방법

Oracle 계정 Lock의 주요 원인

Oracle 데이터베이스 계정이 잠기는 데는 몇 가지 주요 원인이 있습니다:

1. 비밀번호 오류 횟수 초과

가장 흔한 원인은 로그인 시도 중 비밀번호를 여러 번 잘못 입력한 경우입니다. Oracle은 기본적으로 10회 연속 로그인 실패 시 자동으로 계정을 잠급니다.

2. 비밀번호 만료

Oracle 데이터베이스는 보안을 위해 비밀번호에 만료 기간을 설정할 수 있습니다. 기본값은 180일이며, 이 기간이 지나면 계정이 잠길 수 있습니다.

3. DBA에 의한 수동 잠금

데이터베이스 관리자(DBA)가 보안상의 이유나 계정 관리를 위해 수동으로 계정을 잠글 수 있습니다.

4. 프로파일 설정

Oracle은 프로파일을 통해 리소스 제한과 비밀번호 정책을 관리합니다. 해당 계정의 프로파일 설정에 따라 자동으로 계정이 잠길 수 있습니다.

5. 장기간 미사용

일정 기간 동안 계정을 사용하지 않으면 자동으로 잠기도록 설정된 경우가 있습니다.

계정 잠금 상태 확인하기

계정이 실제로 잠겼는지 확인하려면 다음 쿼리를 사용하세요:

-- 계정의 잠금 상태 확인하기
SELECT username, account_status, lock_date, expiry_date 
FROM dba_users 
WHERE username = 'USER_NAME';

-- 또는 모든 잠긴 계정 확인하기
SELECT username, account_status, lock_date, expiry_date 
FROM dba_users 
WHERE account_status LIKE '%LOCKED%';

여기서 account_status 열의 값이 다음과 같이 나타날 수 있습니다:

  • OPEN: 계정이 정상적으로 열려 있음
  • LOCKED: 계정이 잠겨 있음
  • EXPIRED: 비밀번호가 만료됨
  • EXPIRED & LOCKED: 비밀번호가 만료되고 계정이 잠김

관리자 권한으로 계정 잠금 해제하기

계정 잠금을 해제하려면 SYS나 SYSTEM 같은 관리자 권한으로 로그인한 후 다음 명령어를 실행합니다:

1. 기본적인 계정 잠금 해제

-- 계정 잠금 해제하기
ALTER USER username ACCOUNT UNLOCK;

2. 비밀번호 재설정과 함께 잠금 해제

-- 비밀번호를 변경하면서 계정 잠금 해제하기
ALTER USER username IDENTIFIED BY new_password ACCOUNT UNLOCK;

3. SQL*Plus를 사용한 잠금 해제

$ sqlplus / as sysdba
SQL> ALTER USER username ACCOUNT UNLOCK;

비밀번호 만료 문제 해결하기

비밀번호 만료로 인해 계정이 잠긴 경우 다음과 같이 해결할 수 있습니다:

1. 비밀번호 변경하기

-- 관리자가 사용자의 비밀번호 변경
ALTER USER username IDENTIFIED BY new_password;

2. 비밀번호 만료 기간 설정 확인 및 변경

-- 사용자의 프로파일 확인
SELECT username, profile FROM dba_users WHERE username = 'USER_NAME';

-- 해당 프로파일의 비밀번호 수명 확인
SELECT profile, resource_name, limit 
FROM dba_profiles 
WHERE profile = 'PROFILE_NAME' 
AND resource_name = 'PASSWORD_LIFE_TIME';

-- 비밀번호 만료 기간 변경 (예: 무제한으로 설정)
ALTER PROFILE profile_name LIMIT PASSWORD_LIFE_TIME UNLIMITED;

-- 또는 특정 일수로 설정 (예: 365일)
ALTER PROFILE profile_name LIMIT PASSWORD_LIFE_TIME 365;

3. 비밀번호 만료 없이 계정 설정

특정 계정에 대해 비밀번호 만료 없이 설정하려면:

-- 사용자 프로파일 변경
ALTER USER username PROFILE DEFAULT;

-- 또는 비밀번호 만료 없는 프로파일 생성 후 적용
CREATE PROFILE no_expire_profile LIMIT PASSWORD_LIFE_TIME UNLIMITED;
ALTER USER username PROFILE no_expire_profile;

비밀번호 정책 확인 및 설정하기

Oracle의 비밀번호 정책을 확인하고 조정하여 계정 잠금 문제를 관리할 수 있습니다:

1. 현재 비밀번호 정책 확인

-- 비밀번호 정책 확인
SELECT profile, resource_name, limit
FROM dba_profiles
WHERE resource_name IN (
    'FAILED_LOGIN_ATTEMPTS',
    'PASSWORD_LOCK_TIME',
    'PASSWORD_LIFE_TIME',
    'PASSWORD_GRACE_TIME'
)
ORDER BY profile, resource_name;

2. 로그인 실패 시도 횟수 변경

-- 로그인 실패 허용 횟수를 7회로 변경
ALTER PROFILE profile_name LIMIT FAILED_LOGIN_ATTEMPTS 7;

3. 계정 자동 잠금 해제 시간 설정

-- 잠금 후 1일(1440분) 후 자동 해제 설정
ALTER PROFILE profile_name LIMIT PASSWORD_LOCK_TIME 1440;

-- 또는 무제한 잠금 설정 (수동으로만 해제 가능)
ALTER PROFILE profile_name LIMIT PASSWORD_LOCK_TIME UNLIMITED;

자주 발생하는 문제 해결 사례

1. ORA-28000: 계정이 잠겼습니다

ORA-28000: THE ACCOUNT IS LOCKED

이 오류는 계정이 잠겼음을 의미합니다. 관리자 권한으로 다음 명령을 실행하세요:

ALTER USER username ACCOUNT UNLOCK;

2. ORA-28001: 비밀번호가 만료되었습니다

ORA-28001: THE PASSWORD HAS EXPIRED

이 오류는 비밀번호가 만료되었음을 의미합니다. 관리자나 사용자가 비밀번호를 변경해야 합니다:

-- 관리자 실행
ALTER USER username IDENTIFIED BY new_password;

-- 또는 사용자가 직접 비밀번호 변경
-- 사용자는 만료된 비밀번호로 로그인한 후 비밀번호 변경 창에서 변경 가능

3. ORA-01017: 사용자명/비밀번호가 부적합합니다

ORA-01017: INVALID USERNAME/PASSWORD; LOGON DENIED

이 오류는 잘못된 비밀번호를 입력했음을 의미합니다. 반복적으로 발생하면 계정이 잠길 수 있으므로 주의하세요.

4. SQL Developer에서 계정 연결 실패

SQL Developer에서 계정 연결이 실패하는 경우:

  1. 연결 정보를 다시 확인합니다 (호스트, 포트, 서비스명)
  2. TNS 설정이 올바른지 확인합니다
  3. 방화벽 설정을 확인합니다
  4. 데이터베이스가 실행 중인지 확인합니다

계정 잠금 예방 방법

1. 비밀번호 관리 최적화

-- 비밀번호 복잡성 요구사항 설정
ALTER PROFILE profile_name LIMIT 
    PASSWORD_VERIFY_FUNCTION verify_function_name;

-- 비밀번호 만료 기간을 적절히 설정
ALTER PROFILE profile_name LIMIT PASSWORD_LIFE_TIME 90;

-- 비밀번호 변경 알림 기간 설정
ALTER PROFILE profile_name LIMIT PASSWORD_GRACE_TIME 7;

2. 연결 풀(Connection Pool) 사용

애플리케이션에서 Oracle 데이터베이스에 연결할 때 연결 풀을 사용하면 인증 실패로 인한 계정 잠금을 방지할 수 있습니다.

3. 주기적인 모니터링

-- 로그인 실패 모니터링
SELECT username, timestamp, action_name 
FROM dba_audit_trail 
WHERE action_name = 'LOGON' 
AND returncode <> 0 
ORDER BY timestamp DESC;

-- 잠긴 계정 정기적 확인
SELECT username, account_status, lock_date 
FROM dba_users 
WHERE account_status LIKE '%LOCKED%';

4. 권한 분리

중요한 작업을 위한 관리자 계정과 일상적인 작업을 위한 일반 계정을 분리하여 사용하면 계정 잠금 위험을 줄일 수 있습니다.

결론

Oracle 데이터베이스 계정이 잠기는 상황은 비밀번호 오류나 정책 설정, 비밀번호 만료 등 다양한 이유로 발생할 수 있습니다. 이 글에서 설명한 방법들을 사용하여 계정 잠금 상태를 확인하고 해결할 수 있습니다.
또한 적절한 비밀번호 관리 정책과 주기적인 모니터링을 통해 계정 잠금 문제를 예방할 수 있습니다. 비밀번호 복잡성 요구사항, 만료 정책, 로그인 실패 허용 횟수 등을 적절히 조정하여 보안과 사용성의 균형을 맞추는 것이 중요합니다.
문제 해결에 어려움이 있거나 복잡한 환경에서는 Oracle 데이터베이스 관리자(DBA)에게 도움을 요청하는 것이 좋습니다.


구글 핵심 키워드

  • Oracle 계정 Lock 해제 방법
  • ORA-28000 계정 잠김 해결
  • Oracle 비밀번호 만료 원인
  • Oracle 계정 상태 확인 쿼리
  • 오라클 DB 계정 잠금 해제
  • 데이터베이스 계정 ACCOUNT UNLOCK
  • Oracle 계정 잠금 예방
  • 오라클 비밀번호 정책 설정
  • Oracle failed login attempts
  • 데이터베이스 계정 관리 방법
반응형