Oracle ORA-28007 오류 원인과 해결 방법 완벽 가이드

ORA-28007
2026년 10월 03일 | DBMS Error 가이드

이 글에서 다루는 내용

ORA-28007 에러의 원인 분석, 해결 SQL, 예방 방법을 실무 관점에서 정리합니다.

ORA-28007 the password cannot be reused 는?

ORA-28007 에러는 Oracle 데이터베이스에서 사용자가 이전에 사용했던 비밀번호를 다시 사용하려고 할 때 발생하는 오류입니다. 이 에러는 Oracle의 프로파일(Profile) 설정 중 PASSWORD_REUSE_TIME 또는 PASSWORD_REUSE_MAX 파라미터에 의해 제어되며, 보안 정책의 일환으로 비밀번호 재사용을 방지하기 위해 설계된 기능입니다. 데이터베이스 보안 강화를 목적으로 DBA가 의도적으로 설정한 경우가 대부분이며, 사용자가 비밀번호를 변경할 때 과거 비밀번호 이력을 참조하여 재사용 여부를 확인합니다.


주요 발생 원인

  • PASSWORD_REUSE_MAX 설정으로 인한 재사용 제한

PASSWORD_REUSE_MAX는 동일한 비밀번호를 재사용하기 전에 반드시 다른 비밀번호를 몇 번 사용해야 하는지를 지정하는 파라미터입니다. 예를 들어 이 값이 5로 설정되어 있다면, 사용자는 이전에 사용한 비밀번호를 사용하기 위해 최소 5개의 서로 다른 비밀번호를 먼저 사용해야 합니다. 운영 환경에서 보안 규정 준수를 위해 이 값을 높게 설정하는 경우가 많아, 사용자들이 자주 접하게 되는 원인입니다.

  • PASSWORD_REUSE_TIME 설정으로 인한 기간 제한

PASSWORD_REUSE_TIME은 동일한 비밀번호를 재사용하기까지 경과해야 하는 최소 일수(일 단위)를 지정합니다. 예를 들어 이 값이 365로 설정된 경우, 사용자는 최소 1년이 지나기 전에는 이전 비밀번호를 재사용할 수 없습니다. 이 두 파라미터(PASSWORD_REUSE_MAX와 PASSWORD_REUSE_TIME)는 둘 다 설정되거나, 어느 한쪽만 설정된 경우에도 각각 독립적으로 제약이 적용됩니다.

  • 비밀번호 이력(Password History) 테이블 누적

Oracle은 SYS.USER_HISTORY$ 테이블에 사용자의 비밀번호 이력을 암호화된 형태로 저장합니다. 이 테이블에 이전 비밀번호 해시값이 누적되어 있으면, 사용자가 새로운 비밀번호를 설정하려 할 때마다 이 이력과 비교하여 동일 여부를 판단합니다. 잘못된 DBA 작업이나 데이터 마이그레이션 과정에서 이력 데이터가 비정상적으로 남아 있을 경우, 실제로는 다른 비밀번호임에도 오류가 발생하는 경우도 있습니다.


해결 방법

1. 현재 프로파일 설정 확인

먼저 해당 사용자에게 적용된 프로파일과 비밀번호 관련 설정을 확인합니다.

-- 사용자의 프로파일 확인
SELECT USERNAME, PROFILE
FROM DBA_USERS
WHERE USERNAME = 'TARGET_USER';

-- 프로파일의 비밀번호 관련 파라미터 확인
SELECT PROFILE, RESOURCE_NAME, LIMIT
FROM DBA_PROFILES
WHERE PROFILE = 'DEFAULT'
  AND RESOURCE_TYPE = 'PASSWORD'
ORDER BY RESOURCE_NAME;

2. PASSWORD_REUSE_MAX 및 PASSWORD_REUSE_TIME 값 조정

보안 정책 범위 내에서 재사용 제한 횟수 또는 기간을 조정합니다.

-- 비밀번호 재사용 허용 횟수를 3회로 조정
ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_MAX 3;

-- 비밀번호 재사용 가능 기간을 180일로 조정
ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_TIME 180;

-- 특정 사용자 전용 프로파일 생성 후 완화된 정책 적용
CREATE PROFILE APP_USER_PROFILE LIMIT
  PASSWORD_REUSE_MAX     5
  PASSWORD_REUSE_TIME    180
  PASSWORD_LIFE_TIME     90
  FAILED_LOGIN_ATTEMPTS  5
  PASSWORD_LOCK_TIME     1/24;

-- 사용자에게 새 프로파일 적용
ALTER USER TARGET_USER PROFILE APP_USER_PROFILE;

3. 비밀번호 재사용 제한을 임시로 해제 (긴급 조치)

운영 상황에서 긴급하게 비밀번호를 재설정해야 하는 경우, 일시적으로 제한을 해제할 수 있습니다. 단, 보안팀의 승인을 받은 후 진행하고 조치 후 원복하는 것을 권장합니다.

-- 비밀번호 재사용 제한 임시 해제 (UNLIMITED로 설정)
ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_MAX UNLIMITED;
ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_TIME UNLIMITED;

-- 비밀번호 변경 후 원복
ALTER USER TARGET_USER IDENTIFIED BY "NewSecurePassword@2024";

-- 원래 정책으로 복구
ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_MAX 10;
ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_TIME 365;

4. 비밀번호 이력 삭제 (DBA 권한 필요)

특수한 경우, DBA가 직접 비밀번호 이력을 삭제하여 재사용 제약을 해제할 수 있습니다. 이 작업은 반드시 변경 관리 절차를 준수한 후 수행해야 합니다.

-- 특정 사용자의 비밀번호 이력 확인
SELECT U.NAME, H.PASSWORD, H.PASSWORDX, H.TIME
FROM SYS.USER_HISTORY$ H, SYS.USER$ U
WHERE H.USER# = U.USER#
  AND U.NAME = 'TARGET_USER'
ORDER BY H.TIME DESC;

-- 특정 사용자의 비밀번호 이력 전체 삭제 (주의: DBA 전용)
DELETE FROM SYS.USER_HISTORY$
WHERE USER# = (SELECT USER# FROM SYS.USER$ WHERE NAME = 'TARGET_USER');

COMMIT;

예방 방법

  • 비밀번호 정책을 역할별로 세분화하여 프로파일 관리

모든 사용자에게 동일한 DEFAULT 프로파일을 적용하는 것은 유연성이 떨어지고 운영 이슈를 유발할 수 있습니다. 업무 특성에 따라 APP_USER, DBA_USER, BATCH_USER 등 별도의 프로파일을 생성하고 각각에 맞는 비밀번호 정책을 적용하는 것이 Best Practice입니다. 이렇게 하면 개별 사용자 유형에 따라 유연하게 정책을 적용하면서도 보안 수준을 유지할 수 있습니다.

“`sql

— 배치 계정용 완화된 프로파일 생성 예시

CREATE PROFILE BATCH_PROFILE LIMIT

PASSWORD_REUSE_MAX UNLIMITED

PASSWORD_REUSE_TIME UNLIMITED

PASSWORD_LIFE_TIME UNLIMITED

FAILED_LOGIN_ATTEMPTS 10;

“`

  • 정기적인 비밀번호 정책 감사 및 문서화

분기 또는 반기마다 현재 적용된 프로파일 설정을 감사하고 변경 이력을 문서화하는 절차를 수립해야 합니다. 특히 신규 사용자 생성 시 어떤 프로파일을 적용했는지 기록하고, 비밀번호 정책 변경 사항은 반드시 변경 관리 시스템에 등록하도록 내부 규정을 마련해야 합니다. 이를 통해 ORA-28007과 같은 에러 발생 시 신속하게 원인을 파악하고 조치할 수 있습니다.


관련 에러

  • ORA-28001: 비밀번호가 만료된 경우 발생 (PASSWORD_LIFE_TIME 초과)
  • ORA-28002: 비밀번호 만료가 임박했을 때 경고 메시지
  • ORA-28003: 비밀번호 복잡도 검증 함수(PASSWORD_VERIFY_FUNCTION)에 의해 거부된 경우
  • ORA-28011: 계정 만료로 인해 로그인이 불가능한 경우
  • ORA-28000: 계정이 잠긴 경우 (FAILED_LOGIN_ATTEMPTS 초과)

이 에러들은 모두 Oracle Profile의 비밀번호 관련 파라미터와 밀접하게 연관되어 있으므로, ORA-28007 발생 시 위 에러들도 함께 점검하는 것을 권장합니다.


DBMS 에러 코드 시리즈

주요 DBMS error code를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.

본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.

댓글 남기기