【Flashback】使用檢視快速獲得Flashback Query閃回查詢資料
關於閃回查詢的基本使用方法請參見文章《【Flashback】Flashback Query功能實踐》(http://space.itpub.net/519536/viewspace-587004)。
本文給出使用檢視協助我們快速構造閃回查詢內容,透過檢視可以方便的檢索“歷史上的資料”。
1.構造閃回查詢檢視需求描述
1)準備員工表和工資表
2)刪除工資表中僱傭年限在1994年之前的記錄
3)建立檢視可以查詢工資表刪除之前的記錄
2.準備環境
1)準備員工表和工資表
sec@ora10g> create table emp (id number,name varchar2(20), e_date date);
Table created.
sec@ora10g> create table salary (id number, salary number);
Table created.
emp表包含員工ID、員工名字和僱傭時間資訊;
salary表中包含員工ID和薪水資訊。
2)初始化資料
insert into emp values (1,'Secooler',to_date('1991-01-01','yyyy-mm-dd'));
insert into emp values (2,'Andy',to_date('1992-01-01','yyyy-mm-dd'));
insert into emp values (3,'HOU',to_date('2010-01-01','yyyy-mm-dd'));
insert into emp values (4,'Shengwen',to_date('2011-01-01','yyyy-mm-dd'));
commit;
insert into salary values (1,60000);
insert into salary values (2,50000);
insert into salary values (3,40000);
insert into salary values (4,30000);
commit;
3)獲取初始化資料內容
sec@ora10g> select * from emp;
ID NAME E_DATE
---------- ------------------------------ -----------------
1 Secooler 19910101 00:00:00
2 Andy 19920101 00:00:00
3 HOU 20100101 00:00:00
4 Shengwen 20110101 00:00:00
sec@ora10g> select * from salary;
ID SALARY
---------- ----------
1 60000
2 50000
3 40000
4 30000
3.為構造後續的閃回查詢查詢當前的時間和SCN號
1)查詢當前時間
sec@ora10g> select sysdate from dual;
SYSDATE
-----------------
20110809 21:34:11
2)查詢當前系統SCN號
sec@ora10g> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
3141326
4.刪除工資表中僱傭年限在1994年之前的記錄
sec@ora10g> delete from salary where id in ( select id from emp where e_date < to_date('1994','yyyy'));
2 rows deleted.
sec@ora10g> commit;
Commit complete.
sec@ora10g> select * from emp;
ID NAME E_DATE
---------- ------------------------------ -----------------
1 Secooler 19910101 00:00:00
2 Andy 19920101 00:00:00
3 HOU 20100101 00:00:00
4 Shengwen 20110101 00:00:00
sec@ora10g> select * from salary;
ID SALARY
---------- ----------
3 40000
4 30000
此時,在salary表中1994年之前的員工資訊已經被刪除,並且資料修改已經提交。
5.兩種方法建立檢視構造閃回查詢刪除之前的資料
1)第一種方法:使用時間戳來構造閃回查詢檢視
sec@ora10g> create view v_salary_timestamp as select * from salary as of timestamp to_timestamp('2011-08-09 21:34:11','YYYY-MM-DD HH24:MI:SS');
View created.
2)第二種方法:使用SCN構造閃回查詢檢視
sec@ora10g> create view v_salary_scn as select * from salary as of scn 3141326;
View created.
6.使用檢視獲取閃回查詢資料
sec@ora10g> select * from v_salary_timestamp;
ID SALARY
---------- ----------
1 60000
2 50000
3 40000
4 30000
sec@ora10g> select * from v_salary_scn;
ID SALARY
---------- ----------
1 60000
2 50000
3 40000
4 30000
到此,兩種構造檢視的方法都順利的獲得了閃回查詢的資料。順利的完成任務。
7.小結
Oracle的閃回查詢功能本身的能耐自不必多說。使用檢視將閃回查詢語句進行一次“封裝”後,我們便得到了另外一種直觀的便利。
Good luck.
secooler
11.08.09
-- The End --
本文給出使用檢視協助我們快速構造閃回查詢內容,透過檢視可以方便的檢索“歷史上的資料”。
1.構造閃回查詢檢視需求描述
1)準備員工表和工資表
2)刪除工資表中僱傭年限在1994年之前的記錄
3)建立檢視可以查詢工資表刪除之前的記錄
2.準備環境
1)準備員工表和工資表
sec@ora10g> create table emp (id number,name varchar2(20), e_date date);
Table created.
sec@ora10g> create table salary (id number, salary number);
Table created.
emp表包含員工ID、員工名字和僱傭時間資訊;
salary表中包含員工ID和薪水資訊。
2)初始化資料
insert into emp values (1,'Secooler',to_date('1991-01-01','yyyy-mm-dd'));
insert into emp values (2,'Andy',to_date('1992-01-01','yyyy-mm-dd'));
insert into emp values (3,'HOU',to_date('2010-01-01','yyyy-mm-dd'));
insert into emp values (4,'Shengwen',to_date('2011-01-01','yyyy-mm-dd'));
commit;
insert into salary values (1,60000);
insert into salary values (2,50000);
insert into salary values (3,40000);
insert into salary values (4,30000);
commit;
3)獲取初始化資料內容
sec@ora10g> select * from emp;
ID NAME E_DATE
---------- ------------------------------ -----------------
1 Secooler 19910101 00:00:00
2 Andy 19920101 00:00:00
3 HOU 20100101 00:00:00
4 Shengwen 20110101 00:00:00
sec@ora10g> select * from salary;
ID SALARY
---------- ----------
1 60000
2 50000
3 40000
4 30000
3.為構造後續的閃回查詢查詢當前的時間和SCN號
1)查詢當前時間
sec@ora10g> select sysdate from dual;
SYSDATE
-----------------
20110809 21:34:11
2)查詢當前系統SCN號
sec@ora10g> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
3141326
4.刪除工資表中僱傭年限在1994年之前的記錄
sec@ora10g> delete from salary where id in ( select id from emp where e_date < to_date('1994','yyyy'));
2 rows deleted.
sec@ora10g> commit;
Commit complete.
sec@ora10g> select * from emp;
ID NAME E_DATE
---------- ------------------------------ -----------------
1 Secooler 19910101 00:00:00
2 Andy 19920101 00:00:00
3 HOU 20100101 00:00:00
4 Shengwen 20110101 00:00:00
sec@ora10g> select * from salary;
ID SALARY
---------- ----------
3 40000
4 30000
此時,在salary表中1994年之前的員工資訊已經被刪除,並且資料修改已經提交。
5.兩種方法建立檢視構造閃回查詢刪除之前的資料
1)第一種方法:使用時間戳來構造閃回查詢檢視
sec@ora10g> create view v_salary_timestamp as select * from salary as of timestamp to_timestamp('2011-08-09 21:34:11','YYYY-MM-DD HH24:MI:SS');
View created.
2)第二種方法:使用SCN構造閃回查詢檢視
sec@ora10g> create view v_salary_scn as select * from salary as of scn 3141326;
View created.
6.使用檢視獲取閃回查詢資料
sec@ora10g> select * from v_salary_timestamp;
ID SALARY
---------- ----------
1 60000
2 50000
3 40000
4 30000
sec@ora10g> select * from v_salary_scn;
ID SALARY
---------- ----------
1 60000
2 50000
3 40000
4 30000
到此,兩種構造檢視的方法都順利的獲得了閃回查詢的資料。順利的完成任務。
7.小結
Oracle的閃回查詢功能本身的能耐自不必多說。使用檢視將閃回查詢語句進行一次“封裝”後,我們便得到了另外一種直觀的便利。
Good luck.
secooler
11.08.09
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-704539/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- flashback query閃回資料
- Oracle閃回技術--Flashback Version QueryOracle
- 【Flashback】Flashback Database閃回資料庫功能實驗Database資料庫
- ORACLE 閃回檢視v$flashback_database_log/statOracleDatabase
- 【Flashback】Flashback Drop閃回刪除功能實驗
- Flashback Query(轉)
- Oracle 12.2新特性: PDB級閃回資料庫(Flashback PDB)Oracle資料庫
- ORACLE Flashback Query偽列Oracle
- Flashback Drop閃回刪除功能實踐
- flashback實現資料快速復原
- 【FLASHBACK】Oracle閃回及回收站相關語句參考Oracle
- [20180724]Flashback query和子游標共享.txt
- 【FLASHBACK】Oracle flashback data archive 介紹OracleHive
- GeminiDB Cassandra介面新特性FLASHBACK釋出:任意時間點秒級閃回
- ABAP 從檢視獲得資料
- DM7閃回與閃回查詢
- Oracle 11G 閃回技術 閃回版本查詢和閃回事務查詢Oracle
- 2.6.2 Overview of Flashback PDB in a CDBView
- DM8 閃回查詢
- 檢視 Laravel 查詢資料語句Laravel
- 刪使用者刪表空間的操作還能flashback回來嗎?
- Android SQL資料庫查詢方法 query( )AndroidSQL資料庫
- Oracle 11G 閃回技術 使用Oracle閃回事務查詢Oracle
- Flashback Data Archive原理詳解Hive
- oracle 10g flashback databaseOracle 10gDatabase
- 資料查詢語句:DQL(Data Query Language)
- Oracle 備份恢復之 FlashbackOracle
- oracle資料庫sql查詢檢視第二次查詢很慢Oracle資料庫SQL
- DQL(Date Query Language)資料庫查詢語句資料庫
- 如何利用VoC資料獲得客戶需求的全景檢視?
- guarantee restore points-Flashback after RMAN restoreREST
- [20181002]DBMS_FLASHBACK與函式.txt函式
- 用flashback恢復儲存過程儲存過程
- [20180424]開啟表空flashback on.txt
- Oracle OCP(14):使用子查詢檢索資料Oracle
- 如何使用SQL查詢檢視,Postico使用技巧分享~SQL
- Query.js - 類SQL前端資料查詢類庫JSSQL前端
- (十二)資料庫查詢處理之Query Execution(1)資料庫
- 檢視查詢報錯