2026년 10월 20일 | DBMS Error 가이드
이 글에서 다루는 내용
ORA-65212 에러의 원인 분석, 해결 SQL, 예방 방법을 실무 관점에서 정리합니다.
ORA-65212 cannot flashback a PDB 는?
ORA-65212 에러는 Oracle Multitenant 환경에서 PDB(Pluggable Database)에 대해 Flashback 작업을 수행하려 할 때 발생하는 에러입니다. 이 에러는 CDB(Container Database) 또는 PDB 레벨에서 Flashback을 위한 필수 설정이 누락되어 있거나, 현재 PDB 상태가 Flashback 작업을 허용하지 않는 경우에 나타납니다. 특히 Oracle 12c 이후 Multitenant 아키텍처에서 PDB 단위의 Flashback은 CDB 레벨의 설정과 밀접하게 연관되어 있어, 잘못된 구성 상태에서 해당 에러가 빈번하게 발생합니다.
주요 발생 원인
- CDB 레벨에서 Flashback Database가 비활성화된 경우
PDB의 Flashback 기능은 CDB 레벨의 Flashback Database 설정에 종속됩니다. CDB에서 FLASHBACK DATABASE 옵션이 활성화되어 있지 않으면, PDB 단위로 Flashback을 수행하는 것이 불가능하며 ORA-65212 에러가 발생합니다. 이는 PDB의 Flashback 작업이 CDB의 Redo Log와 Flash Recovery Area를 공유하기 때문입니다.
- PDB가 올바른 상태(OPEN)가 아닌 경우 또는 OPEN RESETLOGS 없이 Flashback 시도
PDB를 Flashback 하려면 해당 PDB가 적절한 상태에 있어야 합니다. PDB를 Flashback SCN 또는 Restore Point로 되돌린 후, OPEN RESETLOGS 명령 없이 곧바로 Flashback을 재시도하거나, PDB가 MOUNTED 상태가 아닌 경우에도 에러가 발생합니다. Flashback 작업 순서와 PDB의 상태 관리를 철저히 해야 합니다.
- Restore Point(복원 지점)가 존재하지 않거나 만료된 경우
PDB 단위의 Flashback은 CDB 레벨 또는 PDB 레벨에서 생성된 Restore Point를 기준으로 동작합니다. 해당 Restore Point가 존재하지 않거나, Flash Recovery Area 공간 부족으로 인해 Restore Point가 만료(expire)된 경우 Flashback이 불가능하여 ORA-65212 에러가 발생합니다. Restore Point 관리와 Flash Recovery Area 용량 모니터링이 필수적입니다.
해결 방법
원인 1: CDB 레벨 Flashback 활성화
먼저 CDB의 Flashback 활성화 여부를 확인하고, 비활성화 상태라면 활성화합니다.
-- CDB$ROOT에 접속하여 Flashback 상태 확인
CONNECT / AS SYSDBA
-- CDB Flashback 상태 확인
SELECT NAME, DB_UNIQUE_NAME, FLASHBACK_ON
FROM V$DATABASE;
-- Flashback이 NO인 경우, DB를 MOUNT 상태로 전환 후 활성화
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE FLASHBACK ON;
ALTER DATABASE OPEN;
-- Flash Recovery Area 설정 확인 (Flashback 활성화 전 필수)
SHOW PARAMETER DB_RECOVERY_FILE_DEST;
SHOW PARAMETER DB_RECOVERY_FILE_DEST_SIZE;
-- Flash Recovery Area 설정 (미설정 시)
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '/u01/app/oracle/fast_recovery_area' SCOPE=BOTH;
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 50G SCOPE=BOTH;
원인 2: PDB를 올바른 상태로 전환 후 Flashback 수행
PDB Flashback 작업은 반드시 순서를 지켜야 합니다.
-- 현재 PDB 상태 확인
SELECT CON_ID, NAME, OPEN_MODE, RESTRICTED
FROM V$PDBS;
-- PDB를 CLOSE 후 MOUNT 상태로 전환
ALTER PLUGGABLE DATABASE pdb_name CLOSE IMMEDIATE;
-- PDB Restore Point 목록 확인
SELECT NAME, SCN, TIME, CON_ID, GUARANTEE_FLASHBACK_DATABASE
FROM V$RESTORE_POINT
WHERE CON_ID = (SELECT CON_ID FROM V$PDBS WHERE NAME = 'PDB_NAME');
-- SCN 기준으로 PDB Flashback 수행
FLASHBACK PLUGGABLE DATABASE pdb_name TO SCN 12345678;
-- Restore Point 기준으로 PDB Flashback 수행
FLASHBACK PLUGGABLE DATABASE pdb_name TO RESTORE POINT pdb_restore_point_name;
-- Flashback 후 반드시 OPEN RESETLOGS로 오픈
ALTER PLUGGABLE DATABASE pdb_name OPEN RESETLOGS;
-- PDB 상태 재확인
SELECT CON_ID, NAME, OPEN_MODE
FROM V$PDBS
WHERE NAME = 'PDB_NAME';
원인 3: Restore Point 생성 및 확인
-- CDB 레벨에서 PDB용 Guaranteed Restore Point 생성
-- (CDB$ROOT에서 수행)
ALTER SESSION SET CONTAINER = CDB$ROOT;
CREATE RESTORE POINT before_change_rp
FOR PLUGGABLE DATABASE pdb_name GUARANTEE FLASHBACK DATABASE;
-- PDB 내부에서 Restore Point 생성
ALTER SESSION SET CONTAINER = pdb_name;
CREATE RESTORE POINT pdb_local_rp GUARANTEE FLASHBACK DATABASE;
-- Restore Point 존재 여부 확인
SELECT NAME, SCN, TIME, GUARANTEE_FLASHBACK_DATABASE, CON_ID
FROM V$RESTORE_POINT
ORDER BY TIME DESC;
-- 만료된 Restore Point 정리 후 재생성
DROP RESTORE POINT old_restore_point_name;
CREATE RESTORE POINT new_restore_point_name GUARANTEE FLASHBACK DATABASE;
-- Flash Recovery Area 사용 현황 확인 (공간 부족 시 Restore Point 만료 원인)
SELECT * FROM V$RECOVERY_FILE_DEST;
SELECT FILE_TYPE, PERCENT_SPACE_USED, PERCENT_SPACE_RECLAIMABLE, NUMBER_OF_FILES
FROM V$FLASH_RECOVERY_AREA_USAGE;
예방 방법
- Guaranteed Restore Point 사전 생성 및 정기적 관리
중요한 작업(업그레이드, 마이그레이션, 대규모 DML 등) 전에는 반드시 GUARANTEE FLASHBACK DATABASE 옵션이 포함된 Restore Point를 사전에 생성하는 절차를 표준화하세요. Guaranteed Restore Point는 Flash Recovery Area 공간이 부족하더라도 자동으로 삭제되지 않기 때문에 Flashback 가용성을 보장할 수 있습니다. 단, 불필요한 Guaranteed Restore Point는 Flash Recovery Area를 점유하므로 작업 완료 후 즉시 삭제하는 습관을 갖는 것이 중요합니다.
“`sql
— 작업 전 Restore Point 생성 예시 (표준 절차로 등록 권장)
CREATE RESTORE POINT pre_upgrade_rp FOR PLUGGABLE DATABASE pdb_prod
GUARANTEE FLASHBACK DATABASE;
“`
- CDB Flashback 활성화 상태 및 Flash Recovery Area 용량 모니터링 자동화
CDB의 Flashback 활성화 여부와 Flash Recovery Area의 사용량을 정기적으로 모니터링하는 스크립트를 스케줄러(DBMS_SCHEDULER 또는 OS cron)에 등록하여 자동화하세요. Flash Recovery Area가 85% 이상 사용되는 경우 알림을 받을 수 있도록 임계값 기반 모니터링을 구성하면 Restore Point 만료로 인한 Flashback 실패를 사전에 방지할 수 있습니다.
“`sql
— Flash Recovery Area 사용률 모니터링 쿼리 (85% 초과 시 점검 필요)
SELECT NAME,
ROUND(SPACE_LIMIT / 1024 / 1024 / 1024, 2) AS LIMIT_GB,
ROUND(SPACE_USED / 1024 / 1024 / 1024, 2) AS USED_GB,
ROUND((SPACE_USED / SPACE_LIMIT) * 100, 2) AS USED_PCT
FROM V$RECOVERY_FILE_DEST
WHERE (SPACE_USED / SPACE_LIMIT) * 100 > 85;
“`
관련 에러
- ORA-38706: Flashback Database 로깅을 활성화할 수 없을 때 발생하며, Flash Recovery Area 미설정이나 ARCHIVELOG 모드가 아닌 경우에 나타납니다.
- ORA-38729: Flashback Database를 위한 충분한 복구 데이터가 없을 때 발생합니다. Flashback retention 설정이 너무 짧거나 Flashback log가 부족한 경우입니다.
- ORA-65040: CDB가 아닌 일반 Non-CDB 환경에서 CDB/PDB 전용 명령어를 수행하려 할 때 발생합니다.
- ORA-01152: 데이터파일이 오래된 백업에서 복구되지 않아 Flashback이 불가능한 경우 함께 발생할 수 있습니다.
- ORA-38760: DB_FLASHBACK_RETENTION_TARGET 설정 범위를 초과하는 시점으로 Flashback 시도 시 발생합니다.
주요 DBMS error code를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.
본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.