SQL

[SQL] Oracle Flashback Query ์ •๋ฆฌ

2025. 10. 14. 16:01
๐Ÿ“Œ ์ฐธ๊ณ ์‚ฌํ•ญ
  • ์ตœ์†Œ Oracle 9i ๋ฒ„์ „ ์ด์ƒ๋ถ€ํ„ฐ ์‚ฌ์šฉ๊ฐ€๋Šฅ
  • MySQL / MariaDB์€ innoDB์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ ์žˆ์Œ
  • SQL Server๋Š” ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ ์žˆ์Œ

1. ์‚ฌ์šฉ๋ฐฉ๋ฒ•

--2025๋…„ 10์›” 17์ผ 09์‹œ ๋ฐ์ดํ„ฐ ์กฐํšŒ
SELECT *
FROM table_name
AS OF TIMESTAMP (TO_DATE('2025-10-17 09:00:00', 'YYYY-MM-DD HH24:MI:SS'))
...

 

2. Flashback Table

Oracle 10g ๋ถ€ํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Flashback Table ๊ธฐ๋Šฅ์ด ์žˆ๋Š”๋ฐ

Flashback Query๋Š” ํŠน์ • ์‹œ์ ์—์„œ์˜ ๋ฐ์ดํ„ฐ ์ƒํƒœ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด์ง€๋งŒ

Flashback Table ๊ธฐ๋Šฅ์€ ํ…Œ์ด๋ธ” ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์ „ ์‹œ์ ์œผ๋กœ ๋ณต๊ตฌํ•˜๋Š” ๊ธฐ๋Šฅ

--2025๋…„ 10์›” 17์ผ 09์‹œ ์‹œ์  ์ƒํƒœ๋กœ ๋ณต๊ตฌ
FLASHBACK TABLE ํ…Œ์ด๋ธ”๋ช… TO TIMESTAMP (TO_DATE('2025-10-17 09:00:00', 'YYYY-MM-DD HH24:MI:SS'));

 

3. Flashback Drop

์‚ฌ์šฉ์ž๊ฐ€ DROP TABLE ๋ช…๋ น์„ ํ†ตํ•ด ์‚ญ์ œํ•œ ํ…Œ์ด๋ธ”์„ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ

FLASHBACK TABLE ํ…Œ์ด๋ธ”๋ช… TO BEFORE DROP;

๐Ÿ“Œ ์ฃผ์˜ ์‚ฌํ•ญ

1. Undo ๋ฐ์ดํ„ฐ์™€ Redo ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ์ด์ „์ƒํƒœ๋ฅผ ๋ณต๊ตฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ €์žฅ๊ณต๊ฐ„ ์š”๊ตฌ๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜์žˆ์Œ

2. Undo ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณด์กด๋œ ๊ธฐ๊ฐ„ ๋™์•ˆ์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ UNDO_RETENTION ํŒŒ๋ผ๋ฏธํ„ฐ์— ์˜ํ•ด ์„ค์ •๋œ ๊ธฐ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๋ณต๊ตฌ ํ• ์ˆ˜ ์—†์Œ

 

4. Flashback Table ๊ธฐ๋Šฅ ํ™œ์„ฑํ™” ๋ฐฉ๋ฒ•

1. Row Movement ํ™œ์„ฑํ™”

-- ํ•ด๋‹น ํ…Œ์ด๋ธ” ๊ธฐ๋Šฅ ํ™œ์„ฑํ™”
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ENABLE ROW MOVEMENT;

 

2. UNDO_RETENTION ์„ค์ •

-- 7200์ดˆ(2์‹œ๊ฐ„) ๋ณด์กด ์„ค์ •
ALTER SYSTEM SET UNDO_RETENTION = 7200;

 

3. Undo Tablespace ํฌ๊ธฐ ํ™•์ธ

SELECT TABLESPACE_NAME, BYTES/1024/1024 AS SIZE_MB 
FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค๋ช…';