[SQL] 데이터 삭제 - DELETE, TRUNCATE, DROP

·2025년 7월 9일
0

SQL

목록 보기
95/126

예제 답

delete from emp
 where ename='SCOTT';

문제1. EMP 테이블을 모두 DELETE 하고 COMMIT 하시오

delete from emp;

commit;

문제2. 타임머신을 타고 EMP 테이블이 지워지기전이 5분 전으로 되돌리시오

alter table emp enable row movement;

-- 현재 시간 확인
-- 25/07/09 14:26:41
select systimestamp from dual;

-- emp 테이블을 10분 전으로 되돌림
flashback table emp to timestamp
to_timestamp('2025/07/09 14:16:41', 'RRRR/MM/DD HH24:MI:SS');

-- 복구됨
select * from emp;

문제3. dept 테이블을 모두 delete 하고 commit 하시오

delete from dept;

commit;

문제4. dept 테이블을 복구하세요

alter table dept enable row movement;

-- 25/07/09 14:44:21
select systimestamp from dual;

flashback table dept to timestamp
to_timestamp('2025/07/09 14:39:21', 'RRRR/MM/DD HH24:MI:SS');

-- 복구됨
select * from dept;

문제6. flashback 을 할 수 있는 골든 타임을 확인하시오

-- 900(900초 = 15분)
select name, value
 from v$parameter
 where name ='undo_retention';

💡 15분이 기본값

문제7. 위의 복구 가능한 시간을 1시간으로 변경하시오

alter  system set undo_retention=3600;

select name, value
 from v$parameter
 where name='undo_retention';
 
-- 3600(3600초 = 1시간)

💡 대용량 테이블을 delete로 지우면 db 성능이 느려짐


문제1. emp 테이블을 truncate 로 지우시오

truncate  table  emp; 

select * from emp;

rollback;

select * from emp;

alter table emp enable row movement;

select systimestamp from dual;  -- 25/07/09 15:11:19

flashback table emp to timestamp
to_timestamp('2025/07/09 15:01:19', 'RRRR/MM/DD HH24:MI:SS');

ㄴ @demo 돌려서 복구하기

💡 truncaterollback도 안되고 flashback도 안되기 때문에 조심히 수행해야함


문제2. emp 테이블을 drop 하시오

drop table emp;

문제3. 지금 drop 한 emp 테이블이 휴지통에 있는지 확인하시오

show recyclebin;

문제4. 휴지통 속에 있는 emp 테이블을 복구하시오

flashback table emp to before drop;

select * from emp;

문제5. makert_2017 을 drop 하시오

drop  table  market_2017;

문제6. 휴지통 속에 market_2017 이 있는지 확인하고 복구하시오

-- 휴지통에 있는 market_2017 테이블 확인
show recyclebin;

-- market_2017 테이블 복구
flashback table market_2017 to before drop;

-- 복구됨
select * from market_2017;

0개의 댓글