where 절 없이 작성하면 절 대 안 됨
- 취소여부 - 가능 rollback
- 플래쉬백 여부 - 가능
- 휴지통에 없다.
- undo segment 라는 공간에 들어가기 때문에 flashback table 로 복구해야한다.
delete from 테이블 명
where 지울 데이터 조건
예제 80 스캇의데이터 지우기
delete from emp
where ename = 'SCOTT';
문제 390 월급이 3000 이상인 사원들을 지우기
delete from emp
where sal >=3000;
모르고 delete → commit 한 자료 복구 방법
delete from emp; —————> 테이블을 모두 지움
commit; —————→ 다 저장되버림
rollback; ——————> 롤백 안됨
select * from emp; —————> 데이터 검색 안됨
예전시간 데이터를 확인하는 방법
- Flashback query 문
- 타임머신타고 과거로,,, (골든 타임 15분 안에 조치를 해야합니다)
- as of timestamp 를 쓴 후 to_timestamp식을 쓴다
- 예전 자료를 볼 수 있음 —> 아직 복구는 아님
- 복구할 수 있는 시간을 확인 하는 방법—> 900초 (기본 설정값 )
-
select name, value from v$parameter where name = 'undo_retention';
- 기본 시간설정도 바꿀 수 있다. (단 데이터 용량을 좀 잡아먹음)
- emp 테이블을 flashback 이 가능한 상태로 변경합니다.
-
alter table emp enable row movement;
- 특정시간으로 emp 테이블 복구하기
-
flashback table emp to timestamp to_timestamp('2021/11/17:15:24:00', 'RRRR/MM/DD:HH24:MI:SS'); commit;
이 명령어가 수행 한 순간 insert into 가 일어난 것이고
마지막 commit 해주어야 완료된다.
문제 391 사원테이블의 월급을 전부 0으로 변경 commit
update emp
set sal = 0 ;
commit;
문제 392 위에 지운 월급을 다시 복구하시오. COMMIT
-
alter table emp enable row movement;
-
flashback table emp to timestamp to_timestamp ('2021/11/17:16:01:00','RRRR/MM/DD:HH24:MI:SS');
- SELECT * FROM EMP; → 일단 확인
- COMMIT ; → 저장
'Oracle > SQL' 카테고리의 다른 글
SQL [DML문] Drop - 수행되면서 암시적으로 commit (0) | 2021.11.28 |
---|---|
SQL [DML문] Truncate 데이터 삭제 복구불가 (0) | 2021.11.28 |
SQL [DML문] Update 데이터 수정 (0) | 2021.11.28 |
SQL [DML문] Insert 데이터 입력 (0) | 2021.11.28 |
SQL Sub Query Select 절 = Scalar 서브쿼리 (0) | 2021.11.28 |