Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 오라클
- Oracel
- 실기
- sklearn
- level 1
- seaborn
- oracle
- 빅데이터 분석 기사
- Python
- SQL
- R
- 프로그래머스
- Numpy
- matplotlib
- 코딩테스트
- 튜닝
- 카카오
- 데이터 분석
- 머신러닝
- 알고리즘
- python3
- pandas
- 실습
- Kaggle
- level 2
- 파이썬
- 빅분기
Archives
- Today
- Total
라일락 꽃이 피는 날
[Oracle] 데이터 삭제 본문
728x90
delete | truncate | drop | |
데이터 | 삭제 | 삭제 | 삭제 |
저장공간 | 유지 | 삭제 | 삭제 |
저장구조 | 유지 | 유지 | 삭제 |
취소여부 (rollback) | 가능 | 불가능 | 불가능 |
플래쉬백 여부 | 가능 | 불가능 | 가능 |
예제 1. SCOTT 의 데이터 삭제
delete from emp
where ename = 'SCOTT';
예제 2. emp 테이블 비우기
truncate table emp;
truncate를 하면 rollback 도 안 되고 과거의 데이터도 확인할 수 없다.
이 경우에는 백업 받은 것으로 복구할 수 밖에 없다.
예제 3. emp 테이블 삭제
drop table emp;
drop 과 truncate 의 차이는 truncate 는 테이블의 구조를 남겨둔다.
테이블의 구조를 남겨두면 나중에 데이터를 새로 입력할 때, 테이블을 생성하지 않아도 된다.
그리고 데이터를 모두 삭제 할거면 delete 보다는 truncate 가 속도가 훨씬 빠르다.
drop 은 완전히 삭제 하는 거라서, 이 테이블이 정말 필요 없을 때 수행해야 한다.
데이터를 잘못 삭제했을 때 복구 방법
1-0. 복구할 수 있는 시간 확인
select name, value
from v$parameter
where name='undo_retention';
900초 = 15분
1-1. 데이터 삭제 전 시간으로 가서 테이블 확인
select *
from emp as of timestamp to_timestamp('2022/06/03:11:05:00',
'RRRR/MM/DD:HH24:MI:SS');
복구할 수 있는 골든 타임은 15분이므로 15분 안에 조치를 해야 한다.
일단, 위의 시간의 EMP 테이블 데이터를 백업한다.
1-2. 데이터 삭제 전 테이블 백업
create table emp_backup
as
select *
from emp as of timestamp to_timestamp('2022/06/03:11:05:00',
'RRRR/MM/DD:HH24:MI:SS');
1-3. 백업 테이블의 데이터를 입력
insert into emp
select *
from emp_backup;
commit;
2-1. 오라클 휴지통 확인
show recyclebin;
2-2. 테이블을 휴지통에서 복원
flashback table emp to before drop;
728x90
'프로그래밍 > Oracle' 카테고리의 다른 글
[Oracle] 데이터 입력/수정/삭제 한 번에 하기 (Merge) (0) | 2022.06.03 |
---|---|
[Oracle] 데이터 저장 및 취소 (0) | 2022.06.03 |
[Oracle] 데이터 입력/수정 (0) | 2022.06.03 |
[Oracle] having/from/select 절의 서브 쿼리 (0) | 2022.06.02 |
[Oracle] exists 를 활용한 서브 쿼리 (0) | 2022.06.02 |