數(shù)據(jù)回滾:基于時間的查詢(AS OF TIMESTAMP) .

轉(zhuǎn):blog.csdn.net/zhouwubin123/article/details/6617837

1.應(yīng)用Flashback Query查詢過去的數(shù)據(jù)

Flashback Query這一特性,最常被應(yīng)用的就是修復(fù)誤操作的數(shù)據(jù)了。注意,這并不是說Flashback

Query能夠恢復(fù)數(shù)據(jù)。Flashback Query本身不會恢復(fù)任何操作或修改,也不能告訴你做過什么操作或修改,實際上Flashback

Query特性實際應(yīng)用時,是基于標(biāo)準SELECT的擴展,借助該特性能夠讓用戶查詢到指定時間點的表中的記錄,相當(dāng)于擁有了看到過去的能力,至于恢復(fù),SELECT的結(jié)果都出來了,難道還不懂如何執(zhí)行INSERT

TABLE SELECT或CREATE TABLE AS SELECT嗎?

1.1基于時間的查詢(AS OF TIMESTAMP)

以前面創(chuàng)建的FLASH_TBL表為例,先來刪除幾條記錄并提交:

這個時候FLASH_TB1表中ID<10的記錄均已被刪除,假設(shè)過了一會兒用戶發(fā)現(xiàn)刪除操作執(zhí)行有誤,仍需找回那些被誤刪的記錄該怎么辦呢?通過備份恢復(fù)嗎,如果是在8i或之前版本,恐怕是需要這樣,自9i之后,使用Flashback

Query的特性,我們可以很輕松地恢復(fù)記錄(注意并不是任何情況下都可以恢復(fù)喲,后面會講到制約Flashback

Query的一些因素,這里假設(shè)的都是在理想條件下)。

現(xiàn)在就演示應(yīng)用Flashback Query,首先是找到它,假設(shè)當(dāng)前距離刪除數(shù)據(jù)有5分鐘左右的時間,執(zhí)行SELECT查詢語句,并附加AS OF子句,例如:

提 示

SYSDATE-5/1440是啥意思,1440又是怎么來的?

首先60(分)×24=1440,這樣就計算出一天擁有多少分鐘,SYSDATE是系統(tǒng)函數(shù),用來取得當(dāng)前的系統(tǒng)時間(以天為單位),SYSDATE-5/1440,得出的就是距當(dāng)前時間5分鐘前的記錄了。后面示例中需要計算之前的某個時段時,均是使用這一方法。

你看,我們通過增加AS OF TIMESTAMP的語法,查詢到的數(shù)據(jù)就是5分鐘之前的,基于這一結(jié)果,可以輕易并且快速地將記錄恢復(fù):

JSSPRE> INSERT INTO FLASH_TBL??? SELECT * FROM FLASH_TBL AS OF TIMESTAMP

SYSDATE-5/1440??? 3? WHERE ID<10;

9 rows created.

JSSPRE> COMMIT;

Commit complete. 成功插入9條記錄,查詢表中當(dāng)前的記錄:

如上述示例中所示,AS OF TIMESTAMP方式的使用非常方便,但是在某些情況下,我們建議使用AS OF SCN的方式執(zhí)行Flashback Query。如需要對多個相互有主外鍵約束的表進行恢復(fù)時,如果使用AS OF TIMESTAMP的方式,可能會由于時間點不統(tǒng)一的緣故造成數(shù)據(jù)選擇或插入失敗,通過AS OF SCN方式則能夠確保記錄處理的時間點一致。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容