oracle 10g查詢已刪除資料的兩種方式

2021-09-01 19:40:55 字數 3387 閱讀 2137

oracle 10g已刪除資料查詢的兩種方式

(1)as of timestamp 

eg.   www.2cto.com  

sql**  

select * from t_table as of timestamp(sysdate-1/24)  

where ...  

注意,不能給表起別名 

(2)as of scn 

sql**  

sql>select dbms_flashback.get_system_change_number from dual;  

get_system_change_number  

------------------------  

1859181  

--如果不知道確切的scn,嘗試小些的  

sql>select count(*) from t_table as of scn 1800000;  

sql>insert into t_table select * from t_table as of scn 1800000;  

www.2cto.com  

------------------------------------------- 

以下是轉的  引用

***基於時間的查詢(as of timestamp) 

應用flashback query查詢過去的資料 

flashback query這一特性,最常被應用的就是修復誤操作的資料了。注意,這並不是說flashback query能夠恢復資料。flashback query本身不會恢復任何操作或修改,也不能告訴你做過什麼操作或修改,實際上flashback query特性實際應用時,是基於標準select的擴充套件,借助該特性能夠讓使用者查詢到指定時間點的表中的記錄,相當於擁有了看到過去的能力,至於恢復,select的結果都出來了,難道還不懂如何執行insert table select或create table as select嗎? 

11.1.1.1 基於時間的查詢(as of timestamp) 

以前面建立的flash_tbl表為例,先來刪除幾條記錄並提交: 

jsspre> delete flash_tbl where id<10; 

9 rows deleted. 

jsspre> commit; 

commit complete. 

jsspre> select * from flash_tbl; 

id    vl 

---------- -- 

10    k 

11    l 

12    m 

13    n 

14    o 

15    p 

16    q 

17    r 

18    s 

19    t 

20    u 

11   rows selected.   www.2cto.com  

這個時候flash_tb1表中id<10的記錄均已被刪除,假設過了一會兒使用者發現刪除操作執行有誤,仍需找回那些被誤刪的記錄該怎麼辦呢?通過備份恢復嗎,如果是在8i或之前版本,恐怕是需要這樣,自9i之後,使用flashback query的特性,我們可以很輕鬆地恢復記錄(注意並不是任何情況下都可以恢復喲,後面會講到制約flashback query的一些因素,這裡假設的都是在理想條件下)。 

現在就演示應用flashback query,首先是找到它,假設當前距離刪除資料有5分鐘左右的時間,執行select查詢語句,並附加as of子句,例如: 

jsspre> select * from flash_tbl as of timestamp sysdate-5/1440; 

id   vl 

---------- -- 

1    a 

2    b 

3    c 

4    d 

5    e 

6    f 

7    g 

8    h 

9    i 

10   k 

11   l 

12   m 

13   n 

14   o 

15   p 

16   q 

17   r 

18   s 

19   t 

20   u 

20      rows selected. 

jsspre> 

提 示   www.2cto.com  

sysdate-5/1440是啥意思,1440又是怎麼來的? 

首先60(分)×24=1440,這樣就計算出一天擁有多少分鐘,sysdate是

系統函式,用來取得當前的系統時間(以天為單位),sysdate-5/1440,得出的就是距當前時間5分鐘前的記錄了。後面示例中需要計算之前的某個時段時,均是使用這一方法。 

你看,我們通過增加as of timestamp的語法,查詢到的資料就是5分鐘之前的,基於這一結果,可以輕易並且快速地將記錄恢復: 

jsspre> insert into flash_tbl 

2  select * from flash_tbl as of timestamp sysdate-5/1440 

3  where id<10; 

9 rows created. 

jsspre> commit; 

commit complete. 

成功插入9條記錄,查詢表中當前的記錄: 

jsspre> select * from flash_tbl; 

id   vl 

---------- -- 

10   k 

11   l 

12   m 

13   n 

14   o 

15   p 

16   q 

17   r 

18   s   www.2cto.com  

19   t 

20   u 

1    a 

2    b 

3    c 

4    d 

5    e 

6    f 

7    g 

8    h 

9    i 

20 rows selected. 

資料已被成功恢復。 

如上述示例中所示,as of timestamp方式的使用非常方便,但是在某些情況下,我們建議使用as of scn的方式執行flashback query。如需要對多個相互有主外來鍵約束的表進行恢復時,如果使用as of timestamp的方式,可能會由於時間點不統一的緣故造成資料選擇或插入失敗,通過as of scn方式則能夠確保記錄處理的時間點一致。

摘自紅黑聯盟

oracle 10g已刪除資料查詢的兩種方式

oracle 10g已刪除資料查詢的兩種方式 1 as of timestamp eg.sql select from t table as of timestamp sysdate 1 24 where 注意,不能給表起別名 2 as of scn sql sql select dbms flas...

oracle10g 解除安裝

1 oracle 10g解除安裝軟體環境 1 windows xp oracle 10g2 oracle 安裝路徑為 d oracle 實現方法 1 開始 設定 控制面板 管理工具 服務停止所有 oracle 服務 2 開始 程式 oracle oradb 10g home1 oracle inst...

Oracle10g解除安裝

一 軟體解除安裝 1 windows xp oracle 10g 2 oracle安裝路徑為 d oracle 1 如果資料庫配置了自動儲存管理 asm 應該先刪除聚集同步服務css cluster synchronization services 刪除css服務的方法是在dos命令列中執行如下命令...