****************************************************************************
날짜 : 2008년 4월 16일 수요일
제목 : Flashback Serise ③ Flashback version query
기능 : 임의의 과거시점에 저장하고 있던 로우데이터(Commit되었던 데이터)의 사용
****************************************************************************
※ 이 과정은 hr 사용자로 테스트를 합니다
hr 계정이 잠기신 분들은 lock을 해제해 주세요
또한 오라클에서 제공하는 sample이 있어야 합니다(설치시 체크)
SQL> ALTER USER hr ACCOUNT UNLOCK;
※ 참고서적 : Oracle 10g 서브 노트
※ 테스트 환경 : Oracle 11g
개요
1. Test Data 확인
2. department_id 120에 대한 manager_id 컬럼 값 = 194 로 갱신
3. department_id, manager_id 컬럼에 대한 10분전부터 1분전까지 변경된 로우데이터 출력
날짜 : 2008년 4월 16일 수요일
제목 : Flashback Serise ③ Flashback version query
기능 : 임의의 과거시점에 저장하고 있던 로우데이터(Commit되었던 데이터)의 사용
****************************************************************************
※ 이 과정은 hr 사용자로 테스트를 합니다
hr 계정이 잠기신 분들은 lock을 해제해 주세요
또한 오라클에서 제공하는 sample이 있어야 합니다(설치시 체크)
SQL> ALTER USER hr ACCOUNT UNLOCK;
※ 참고서적 : Oracle 10g 서브 노트
※ 테스트 환경 : Oracle 11g
개요
임의의 과거 시점에 저장하고 있던 로우 데이터(Commit 되었던 데이터)를
versions between timestamp
or
versions between scn
절을 사용하여 쿼리할 수 있는 기능
효과
- 지금까지 임의의 정보가 어떤 과정을 통해 변경되어져 왔는지를 확인할 수 있다
한계
- 이미 Commit 되어진 데이터에 국한된다
Commit되지 않은 데이터는 쿼리할 수 없다
versions between timestamp
or
versions between scn
절을 사용하여 쿼리할 수 있는 기능
효과
- 지금까지 임의의 정보가 어떤 과정을 통해 변경되어져 왔는지를 확인할 수 있다
한계
- 이미 Commit 되어진 데이터에 국한된다
Commit되지 않은 데이터는 쿼리할 수 없다
1. Test Data 확인
SQL> connect hr/hr password
SQL> select * from departments;
DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID
-------------------------- --------------------------------- --------------------- ----------------------
10 Administration 200 1700
.
.
.
120 Treasury 1700
.
.
.
현재 department_id 120에 대한 manager_id 컬럼값 = Null
SQL> select * from departments;
DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID
-------------------------- --------------------------------- --------------------- ----------------------
10 Administration 200 1700
.
.
.
120 Treasury 1700
.
.
.
현재 department_id 120에 대한 manager_id 컬럼값 = Null
2. department_id 120에 대한 manager_id 컬럼 값 = 194 로 갱신
SQL> update departments set manager_id=194
2 where department_id=120;
SQL> select * from departments; 를 통해 update 확인
2 where department_id=120;
SQL> select * from departments; 를 통해 update 확인
3. department_id, manager_id 컬럼에 대한 10분전부터 1분전까지 변경된 로우데이터 출력
SQL> select department_id, manager_id from departments
2 versions between timestamp
3 systimestamp - interval '10' minute and systimestamp - interval'1' minute
4 where department_id=120;
DEPARTMENT_ID MANAGER_ID
--------------------------- ---------------------
120
2 versions between timestamp
3 systimestamp - interval '10' minute and systimestamp - interval'1' minute
4 where department_id=120;
DEPARTMENT_ID MANAGER_ID
--------------------------- ---------------------
120
이올린에 북마크하기