728x90
# 복구와 FLASHBACK
l 복구와 flashback의 차이는?
- 복구(recover)는 백업 받았던 파일을 복원해서 최신파일로 만들어주는 과정
- flashback은 현 시점에서 과거로 되돌리기 위한 작업을 수행하는 것 과거로 되돌리기 위해서 그 동안 했던 DML 작업들을 반대로 수행
- flashback은 복구보다 빠르다
- flashback의 기능 총 정리
- flashback database
– database 전체를 과거로 되돌리는 기능
- 이 기능을 쓰려면 2가지가 설정 되야 한다
- 이 기능을 쓰려면 2가지가 설정 되야 한다
1) 아카이브 모드
2) flashback database 기능이 활성화 되야 한다
SQL> select flashback_on from v$database; FLASHBACK_ON ------------------ NO SQL> shutdown immediate SQL> startup mount SQL> alter database flashback on; SQL> alter database open; SQL> select flashback_on from v$database; FLASHBACK_ON ------------------ YES |
# 주의할 사항 – flashback 을 활성화 시키면 flashback log가 flash recovery area에 생성 되는데 그 데이터가 점점 많아져서 flash recovery area 영역을 full 시킬 수 있다
3) SQL> select systimestamp from dual;
# 현재 시간확인
SQL> select systimestamp from dual; SYSTIMESTAMP --------------------------------------------------------------------------- 22-JUL-14 04.39.59.992546 PM +09:00 |
4) SQL> select current_scn from v$database;
# 현재 scn 번호 확인(commit할 때 몇번째 commit을 하고 있는지 알리는 번호를 scn 번호라 한다)
SQL> select current_scn from v$database; CURRENT_SCN ----------- 1306862 |
5) SQL> drop user scott cascade;
# 유저가 drop 되기 전으로 flashback database 수행
6) SQL> shutdown immediate
SQL> startup mount
7) flashback database to scn 번호
# 두가지 경우 가능 : flashback database to timestamp to_timestamp('22-JUL-14 04.39.59','DD-MON-RR HH24:MI:SS');
8) SQL> alter database open resetlogs;
9) SQL> connect scott/tiger
10) 참고함수
# timestamp를 scn으로 바꾸는 query
select timestamp_to_scn('22-JUL-14 04.39.59' from dual;
# scn을 timestamp로 바꾸는 query
select scn_to_timestamp('1306862') from dual
- flashback table
- table을 과거로 되돌리는 기능
SQL> connect scott/tiger
SQL> select systimestamp from dual;
SQL> select current_scn from v$database;
SQL> delete from emp;
SQL> commit;
1) alter table emp enable row movement;
# emp 테이블이 flashback이 가능한 상태로 활성화 시키는 명령어
2) flashback table emp to timestamp (systimestamp – interval '5' minute);
# 현재 시간에서 emp 테이블을 5분전으로 돌려라
SQL> connect scott/tiger SQL> select systimestamp from dual; SYSTIMESTAMP --------------------------------------------------------------------------- 22-JUL-14 05.19.03.423761 PM +09:00 SQL> select current_scn from v$database; CURRENT_SCN ----------- 1308264 SQL> delete from emp; SQL> commit; SQL> alter table emp enable row movement; SQL> flashback table emp to timestamp (systimestamp - interval '5' minute); SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- ------------------- ---------- ---------- ---------- 7839 KING PRESIDENT 1981/11/17:00:00:00 5000 10 7698 BLAKE MANAGER 7839 1981/05/01:00:00:00 2850 30 7782 CLARK MANAGER 7839 1981/05/09:00:00:00 2450 10 7566 JONES MANAGER 7839 1981/04/01:00:00:00 2975 20 ……………………………………………………… |
마지막문제. 프로시저를 생성하는데 테이블명과 분을 입력하면 해당 분으로 테이블을 과거로 되돌리는 프로시저를 생성하시오
SQL> exec flash_table('EMP’,5);
CREATE OR REPLACE PROCEDURE flash_table
(p_table VARCHAR2,
p_min number)
IS
BEGIN
EXECUTE IMMEDIATE
'alter table '||p_table|| ' enable row movement';
EXECUTE IMMEDIATE
'flashback table '||p_table||' to timestamp (systimestamp - interval '''|| p_min ||''' minute)';
END;
/
'빅데이터과정 > WORKSHOP 2 ' 카테고리의 다른 글
#29_140723_WSHOP2_FLASHBACK ARCHIVE (0) | 2014.07.23 |
---|---|
#29_140723_WSHOP2_FLASHBACK QUERY (0) | 2014.07.23 |
#28_140722_WSHOP2_EXPORT/IMPORT (0) | 2014.07.22 |
#28_140722_WSHOP2_RESTORE POINT (0) | 2014.07.22 |
#28_140722_WSHOP2_DATAFILE OPEN 복구 (0) | 2014.07.22 |