2026년 10월 04일 | DBMS Error 가이드
이 글에서 다루는 내용
ORA-28017 에러의 원인 분석, 해결 SQL, 예방 방법을 실무 관점에서 정리합니다.
ORA-28017 the password is in the password file in the old format 는?
ORA-28017 에러는 Oracle 데이터베이스의 패스워드 파일(password file)이 구버전 형식으로 저장되어 있을 때 발생하는 오류입니다. 주로 Oracle 12c 이상의 버전으로 데이터베이스를 업그레이드하거나 마이그레이션하는 과정에서, 기존의 구형 패스워드 파일이 새로운 형식과 호환되지 않아 발생합니다. 이 에러는 SYSDBA, SYSOPER, SYSBACKUP 등의 관리 권한으로 데이터베이스에 접속하거나 패스워드를 변경하려 할 때 트리거될 수 있습니다.
주요 발생 원인
1. Oracle 데이터베이스 업그레이드 후 패스워드 파일 미갱신
Oracle 11g 또는 그 이전 버전에서 12c, 19c, 21c 등의 최신 버전으로 업그레이드를 진행한 후, 기존 패스워드 파일을 새 형식으로 재생성하지 않은 경우 이 에러가 발생합니다. Oracle 12c부터는 패스워드 파일의 내부 구조 및 형식이 변경되었기 때문에, 구버전의 파일은 더 이상 정상적으로 인식되지 않을 수 있습니다. 업그레이드 체크리스트에서 패스워드 파일 재생성 항목이 누락되는 경우가 실무에서 매우 흔하게 발생합니다.
2. orapwd 유틸리티를 이용한 잘못된 패스워드 파일 생성
orapwd 유틸리티를 사용할 때 FORMAT 파라미터를 명시하지 않거나 구버전 포맷(legacy)으로 지정하여 패스워드 파일을 생성한 경우, 신버전 Oracle 인스턴스와 호환되지 않아 ORA-28017이 발생할 수 있습니다. Oracle 12.2 이후부터는 기본 포맷이 12 또는 12.2로 변경되었기 때문에, 명시적인 포맷 지정이 중요합니다. 특히 RAC(Real Application Clusters) 환경이나 Data Guard 환경에서 이 문제가 더 빈번하게 발생합니다.
3. 멀티 테넌트(CDB/PDB) 환경에서의 패스워드 파일 불일치
Oracle 12c 이후 도입된 멀티 테넌트 아키텍처(CDB/PDB 구조)에서는 패스워드 파일의 형식이 단일 인스턴스와 다른 요건을 가집니다. CDB 환경에서 PDB를 생성하거나 언플러그/플러그 작업을 수행할 때, 구버전 형식의 패스워드 파일이 존재하면 이 에러가 발생할 수 있습니다. 이 경우 패스워드 파일의 포맷 버전과 Oracle 인스턴스의 버전이 서로 맞지 않아 인증 과정에서 충돌이 발생합니다.
해결 방법
1단계: 현재 패스워드 파일 형식 및 위치 확인
먼저 현재 사용 중인 패스워드 파일의 위치와 형식을 확인합니다.
-- 패스워드 파일 위치 및 상태 확인
SELECT * FROM V$PASSWORDFILE_INFO;
-- SYS 및 관리 권한 사용자 확인
SELECT USERNAME, SYSDBA, SYSOPER, SYSASM, SYSBACKUP, SYSDG, SYSKM
FROM V$PWFILE_USERS;
운영체제 레벨에서 패스워드 파일의 실제 경로를 확인합니다.
-- spfile/pfile에서 패스워드 파일 관련 파라미터 확인
SHOW PARAMETER db_name;
SHOW PARAMETER remote_login_passwordfile;
2단계: 기존 패스워드 파일 백업 및 삭제
기존 패스워드 파일을 삭제하기 전에 반드시 백업을 수행합니다. 패스워드 파일의 기본 위치는 $ORACLE_HOME/dbs/ (Linux) 또는 %ORACLE_HOME%\database\ (Windows)입니다.
-- 현재 SYSDBA 권한을 가진 사용자 목록 사전 기록
SELECT USERNAME FROM V$PWFILE_USERS WHERE SYSDBA = 'TRUE';
OS 레벨 백업 (Linux/Unix 기준):
# 기존 패스워드 파일 백업
cp $ORACLE_HOME/dbs/orapw<ORACLE_SID> $ORACLE_HOME/dbs/orapw<ORACLE_SID>.bak
# 기존 패스워드 파일 삭제
rm $ORACLE_HOME/dbs/orapw<ORACLE_SID>
3단계: 새 포맷으로 패스워드 파일 재생성
Oracle 12.2 이상에서는 반드시 FORMAT=12.2 또는 현재 버전에 맞는 포맷을 지정합니다.
# Oracle 12.2 이상에서 새 포맷으로 패스워드 파일 생성
orapwd FILE=$ORACLE_HOME/dbs/orapw<ORACLE_SID> \
PASSWORD=<SYS_PASSWORD> \
FORMAT=12.2 \
FORCE=Y
# Oracle 19c 이상에서의 패스워드 파일 생성 예시
orapwd FILE=$ORACLE_HOME/dbs/orapwORCL \
PASSWORD=Oracle_1234 \
FORMAT=12.2 \
ENTRIES=10 \
FORCE=Y
4단계: 재생성 후 검증
패스워드 파일 재생성 후, 정상적으로 적용되었는지 확인합니다.
-- 데이터베이스 재기동 후 패스워드 파일 정보 확인
CONNECT / AS SYSDBA
SELECT * FROM V$PASSWORDFILE_INFO;
-- SYSDBA 권한 사용자 재확인
SELECT USERNAME, SYSDBA, SYSOPER, SYSBACKUP
FROM V$PWFILE_USERS
ORDER BY USERNAME;
-- 기존에 SYSDBA 권한이 있던 사용자에게 권한 재부여
GRANT SYSDBA TO <USERNAME>;
GRANT SYSOPER TO <USERNAME>;
RAC 환경에서의 추가 조치
RAC 환경에서는 모든 노드에 패스워드 파일을 동기화해야 합니다.
# RAC 환경 - ASM 디스크 그룹에 패스워드 파일 생성
orapwd FILE='+DATA/orapwORCL' \
PASSWORD=Oracle_1234 \
FORMAT=12.2 \
DBUNIQUENAME=ORCL
# 각 노드에 패스워드 파일 복사 (ASM 미사용 시)
scp $ORACLE_HOME/dbs/orapwORCL oracle@node2:$ORACLE_HOME/dbs/
-- RAC에서 패스워드 파일 위치 확인
SELECT INST_ID, FILENAME FROM GV$PASSWORDFILE_INFO;
예방 방법
1. 업그레이드 전 사전 체크리스트에 패스워드 파일 재생성 항목 필수 포함
데이터베이스 업그레이드를 수행할 때마다 반드시 업그레이드 후 작업(Post-Upgrade Task) 목록에 패스워드 파일 재생성을 포함시켜야 합니다. Oracle의 공식 업그레이드 가이드(Database Upgrade Guide)를 참고하여 각 버전별 호환 포맷을 사전에 파악하고, 이를 표준 운영 절차(SOP)에 반영하는 것이 중요합니다. 또한 정기적인 패스워드 파일 감사를 통해 현재 사용 중인 파일 형식이 Oracle 버전과 일치하는지 주기적으로 검증하세요.
-- 정기 점검 쿼리: 패스워드 파일 포맷 및 버전 확인
SELECT VERSION, CON_ID FROM V$PASSWORDFILE_INFO;
2. orapwd 명령어 실행 시 FORMAT 파라미터 명시 의무화
조직 내 DBA 운영 표준에 orapwd 명령어 실행 시 FORMAT 파라미터를 반드시 명시하도록 규정화해야 합니다. 스크립트화된 자동화 작업에서도 포맷 버전을 하드코딩하지 않고, 데이터베이스 버전에 따라 동적으로 결정되도록 설계하면 더욱 안전합니다. 특히 Data Guard 스탠바이 구성이나 RAC 클러스터 추가 시에도 동일한 포맷으로 패스워드 파일을 생성하는 절차를 표준화하세요.
관련 에러
- ORA-01017:
invalid username/password; logon denied— 패스워드 파일 재생성 후 패스워드 불일치로 함께 발생할 수 있습니다. - ORA-28000:
the account is locked— 잘못된 패스워드 입력 반복 시 계정이 잠기며 발생하며, ORA-28017 해결 과정에서 연관되어 나타날 수 있습니다. - ORA-28009:
connection as SYS should be as SYSDBA or SYSOPER— 패스워드 파일 문제와 함께 SYS 연결 방식 오류로 발생합니다. - ORA-12547:
TNS: lost contact— 패스워드 파일 손상으로 인한 인증 실패와 연관될 수 있습니다.
주요 DBMS error code를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.
본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.