메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
편집 요약 없음
 
(같은 사용자의 중간 판 5개는 보이지 않습니다)
3번째 줄: 3번째 줄:


===플래쉬백 항목별 원리===
===플래쉬백 항목별 원리===
::<source>
:::<source>
Flashback 기술별 근본 원리 차이
Flashback 기술별 근본 원리 차이
├── Flashback Query / Flashback Table
├── Flashback Query / Flashback Table
17번째 줄: 17번째 줄:
     └── 별도 아카이브 테이블스페이스 → 설정한 정책대로 (년 단위도 가능)
     └── 별도 아카이브 테이블스페이스 → 설정한 정책대로 (년 단위도 가능)
</source>
</source>
----
=== 복구 가능한 시간을 확인 하는법 ===
:::# UNDO_RETENTION 파라미터 확인 (1차 판단 기준)
::::<source lang=sql>
-- 현재 설정된 목표 보존 시간(초) 확인
SHOW PARAMETER UNDO_RETENTION;
SELECT name, value
FROM v$parameter
WHERE name = 'undo_retention';
-- 예: 900 (초) = 15분
</source>
:::* 중요: 이 값은 "목표(target)"일 뿐, 보장(guarantee)이 아닙니다. 실제로는 UNDO 테이블스페이스 공간이 부족하면 이 값보다 짧게 유지될 수 있습니다.
----
=== Guarantee 여부 확인 (매우 중요) ===
:::<source lang=sql>
SELECT tablespace_name, retention, contents, status
  FROM dba_tablespaces
WHERE tablespace_name = (
    SELECT UPPER(value) FROM v$parameter WHERE name = 'undo_tablespace'
);
</source>
:::*RETENTION 컬럼 값:
- GUARANTEE    → UNDO_RETENTION 시간을 반드시 보장 (DML 실패 위험 감수)
- NOGUARANTEE  → 공간 부족 시 오래된 UNDO 우선 재사용 (기본값)
-- GUARANTEE로 변경 (운영 영향 주의: 공간부족 시 트랜잭션 실패 가능)
ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;
=== 실제 확보된 UNDO 보존 이력 확인 (핵심) ===
파라미터 설정값이 아니라 실제로 시스템이 유지해온 이력을 확인하는 것이 훨씬 정확합니다.
<source lang=sql>
-- ============================================
-- V$UNDOSTAT: 10분 단위로 실제 통계 기록 (최대 4일치 보관)
-- ============================================
SELECT
    TO_CHAR(begin_time, 'YYYY-MM-DD HH24:MI:SS') AS begin_time,
    TO_CHAR(end_time,  'YYYY-MM-DD HH24:MI:SS') AS end_time,
    undoblks,
    txncount,
    maxquerylen,          -- 이 구간 중 실행된 최장 쿼리 길이(초)
    maxqueryid,
    tuned_undoretention    -- 시스템이 실제로 튜닝한 보존시간(초)
FROM v$undostat
ORDER BY end_time DESC;
</source>
=== 실질적으로 가장 중요한 지표: 전체 데이터의 최고(最古) 시점 ===
<source lang=sql>
-- v$undostat에 기록된 가장 오래된 시점 = 통계상 조회 가능한 하한선의 근사치
SELECT MIN(begin_time) AS oldest_stat_time,
      SYSDATE - MIN(begin_time) AS "간격(일 단위 소수)",
      (SYSDATE - MIN(begin_time)) * 24 AS "약 몇 시간 전까지"
FROM v$undostat;
</source>
* 주의: 이건 "통계가 기록된 범위"일 뿐이며, 실제 UNDO 데이터가 남아있는지는 별도 확인이 필요합니다 (아래 4번 참고).

2026년 9월 8일 (화) 11:21 기준 최신판

FLASHBACK

플래쉬백 개요

플래쉬백 항목별 원리

Flashback 기술별 근본 원리 차이
├── Flashback Query / Flashback Table
│   └── UNDO 세그먼트 기반 → UNDO_RETENTION + UNDO 공간에 의존
│
├── Flashback Drop (Recycle Bin)
│   └── 시간 무관, 공간 압박 시 자동 purge → "몇 시간"이라는 개념 자체가 없음
│
├── Flashback Database
│   └── Flashback Log 기반 (별도 로그) → DB_FLASHBACK_RETENTION_TARGET
│
└── Flashback Data Archive (FDA)
    └── 별도 아카이브 테이블스페이스 → 설정한 정책대로 (년 단위도 가능)

복구 가능한 시간을 확인 하는법

  1. UNDO_RETENTION 파라미터 확인 (1차 판단 기준)
-- 현재 설정된 목표 보존 시간(초) 확인
SHOW PARAMETER UNDO_RETENTION;

SELECT name, value 
FROM v$parameter 
WHERE name = 'undo_retention';
-- 예: 900 (초) = 15분
  • 중요: 이 값은 "목표(target)"일 뿐, 보장(guarantee)이 아닙니다. 실제로는 UNDO 테이블스페이스 공간이 부족하면 이 값보다 짧게 유지될 수 있습니다.



Guarantee 여부 확인 (매우 중요)

SELECT tablespace_name, retention, contents, status
  FROM dba_tablespaces
 WHERE tablespace_name = (
    SELECT UPPER(value) FROM v$parameter WHERE name = 'undo_tablespace'
);
  • RETENTION 컬럼 값:

- GUARANTEE → UNDO_RETENTION 시간을 반드시 보장 (DML 실패 위험 감수) - NOGUARANTEE → 공간 부족 시 오래된 UNDO 우선 재사용 (기본값)

-- GUARANTEE로 변경 (운영 영향 주의: 공간부족 시 트랜잭션 실패 가능) ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;

실제 확보된 UNDO 보존 이력 확인 (핵심)

파라미터 설정값이 아니라 실제로 시스템이 유지해온 이력을 확인하는 것이 훨씬 정확합니다.

-- ============================================
-- V$UNDOSTAT: 10분 단위로 실제 통계 기록 (최대 4일치 보관)
-- ============================================
SELECT 
    TO_CHAR(begin_time, 'YYYY-MM-DD HH24:MI:SS') AS begin_time,
    TO_CHAR(end_time,   'YYYY-MM-DD HH24:MI:SS') AS end_time,
    undoblks,
    txncount,
    maxquerylen,           -- 이 구간 중 실행된 최장 쿼리 길이(초)
    maxqueryid,
    tuned_undoretention    -- 시스템이 실제로 튜닝한 보존시간(초)
FROM v$undostat
ORDER BY end_time DESC;

실질적으로 가장 중요한 지표: 전체 데이터의 최고(最古) 시점

-- v$undostat에 기록된 가장 오래된 시점 = 통계상 조회 가능한 하한선의 근사치
SELECT MIN(begin_time) AS oldest_stat_time,
       SYSDATE - MIN(begin_time) AS "간격(일 단위 소수)",
       (SYSDATE - MIN(begin_time)) * 24 AS "약 몇 시간 전까지"
FROM v$undostat;
  • 주의: 이건 "통계가 기록된 범위"일 뿐이며, 실제 UNDO 데이터가 남아있는지는 별도 확인이 필요합니다 (아래 4번 참고).