oracle查詢一天前、幾天前、幾小時前、一小時前的數(shù)據(jù)以及恢復(fù)誤刪的數(shù)據(jù)
一.oracle查詢一天前、幾天前、幾小時前、一小時前的數(shù)據(jù)
語法:
SELECT * FROM <table_name> AS OF TIMESTAMP (SYSDATE-<interval>);
例:
1.您想查詢用戶表(USER_INFO)一小時前的數(shù)據(jù)
--一小時是一天的1/24 ,故<interval>參數(shù)為1/24,如果想查四小時前的數(shù)據(jù),<interval>參數(shù)可以是4/24或1/6 SELECT * FROM USER_INFO AS OF TIMESTAMP (SYSDATE-1/24);
2.您想查詢用戶表(USER_INFO)一天前的數(shù)據(jù)
SELECT * FROM USER_INFO AS OF TIMESTAMP (SYSDATE-1);
3…您想查詢用戶表(USER_INFO)三天前的數(shù)據(jù)
SELECT * FROM USER_INFO AS OF TIMESTAMP (SYSDATE-3);
二.恢復(fù)誤刪的數(shù)據(jù)
恢復(fù)誤刪的數(shù)據(jù)基于前面能否查詢到歷史數(shù)據(jù),假設(shè)能夠查到一天前的數(shù)據(jù),就可通過下面語句恢復(fù)被刪除的數(shù)據(jù) (如果您覺得步驟不直觀的話請您直接看例子吧)
步驟:
1.創(chuàng)建臨時表并把誤刪的數(shù)據(jù)暫時存到臨時表中
CREATE TABLE TABNAME_TEMP AS SELECT * FROM TABNAME AS OF TIMESTAMP (SYSDATE-<interval>);
2.把臨時表的數(shù)據(jù)插入原表(被您誤刪數(shù)據(jù)的表)中
-- SELECT * FROM TABNAME_TEMP 語句 可以帶where條件,看您需要插入所有數(shù)據(jù)還是選擇性插入 INSERT INTO TABNAME SELECT * FROM TABNAME_TEMP ;
3.刪除臨時表 (防止臨時表占用數(shù)據(jù)庫空間)
DROP TABLE TABNAME_TEMP;--注意這里刪除的是臨時表,您剛剛創(chuàng)建的表,別刪錯了。
例:恢復(fù)一天前誤刪除的用戶(用戶 “Tom”,“Jerry”)
CREATE TABLE USER_INFO_TEMP AS SELECT * FROM USER_INFO AS OF TIMESTAMP (SYSDATE-1); INSERT INTO USER_INFO SELECT * FROM USER_INFO_TEMP where username in ('Tom','Jerry'); DROP TABLE USER_INFO_TEMP;
需要注意的是:誤刪的數(shù)據(jù)不一定能查詢到,也不一定能找回,故在操作數(shù)據(jù)庫時盡量小心操作。
例:在更新數(shù)據(jù)庫表時一定帶上where條件;刪除數(shù)據(jù)之前先備份數(shù)據(jù)(尤其是生產(chǎn)環(huán)境或測試環(huán)境您不熟悉的表)
附:Oracle 查詢某個時間之內(nèi)的數(shù)據(jù)
//一月之內(nèi) SELECT * FROM ESS.E_LOG WHERE E_LOG."ETime" BETWEEN sysdate-interval '7' month AND SYSDATE; SELECT * FROM ESS.E_LOG WHERE to_char(E_LOG."ETime",'yyyy-mm-dd hh24:mi:ss') between to_char(sysdate-225,'yyyy-mm-dd hh24:mi:ss') and to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'); //一周之內(nèi) select * from ESS.E_LOG where E_LOG."ETime" > sysdate - interval '7' day; //一年之內(nèi) select count(*) from ESS.E_LOG WHERE E_LOG."ETime" BETWEEN sysdate-interval '1' year AND SYSDATE; //sysdate獲取的時間是Oracle數(shù)據(jù)庫系統(tǒng)時間 select sysdate from dual;
總結(jié)
到此這篇關(guān)于oracle查詢一天前、幾天前、幾小時前、一小時前的數(shù)據(jù)以及恢復(fù)誤刪的數(shù)據(jù)的文章就介紹到這了,更多相關(guān)oracle查詢某段時間之前的數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
oracle導(dǎo)入導(dǎo)出某個schema數(shù)據(jù)的步驟
這篇文章主要介紹了oracle導(dǎo)入導(dǎo)出某個schema數(shù)據(jù)的步驟,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09oracle 9i使用閃回查詢恢復(fù)數(shù)據(jù)庫誤刪問題
本篇文章給大家介紹在oracle 9i中使用閃回查詢恢復(fù)數(shù)據(jù)庫誤刪問題,涉及到數(shù)據(jù)庫增刪改查的基本操作,對oracle數(shù)據(jù)庫閃回查詢感興趣的朋友可以一起學(xué)習(xí)下本篇文章2015-10-10Oracle ASM數(shù)據(jù)庫故障數(shù)據(jù)恢復(fù)解決方案
這篇文章主要介紹了Oracle ASM數(shù)據(jù)庫故障數(shù)據(jù)恢復(fù)解決方案,需要的朋友可以參考下2017-04-04PowerDesigner15.1連接oracle11g逆向生成ER圖
這篇文章主要為大家詳細(xì)介紹了PowerDesigner15.1連接oracle11g逆向生成ER圖的相關(guān)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08