oracle查詢一天前、幾天前、幾小時(shí)前、一小時(shí)前的數(shù)據(jù)以及恢復(fù)誤刪的數(shù)據(jù)
一.oracle查詢一天前、幾天前、幾小時(shí)前、一小時(shí)前的數(shù)據(jù)
語法:
SELECT * FROM <table_name> AS OF TIMESTAMP (SYSDATE-<interval>);
例:
1.您想查詢用戶表(USER_INFO)一小時(shí)前的數(shù)據(jù)
--一小時(shí)是一天的1/24 ,故<interval>參數(shù)為1/24,如果想查四小時(shí)前的數(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í)表并把誤刪的數(shù)據(jù)暫時(shí)存到臨時(shí)表中
CREATE TABLE TABNAME_TEMP AS SELECT * FROM TABNAME AS OF TIMESTAMP (SYSDATE-<interval>);
2.把臨時(shí)表的數(shù)據(jù)插入原表(被您誤刪數(shù)據(jù)的表)中
-- SELECT * FROM TABNAME_TEMP 語句 可以帶where條件,看您需要插入所有數(shù)據(jù)還是選擇性插入 INSERT INTO TABNAME SELECT * FROM TABNAME_TEMP ;
3.刪除臨時(shí)表 (防止臨時(shí)表占用數(shù)據(jù)庫空間)
DROP TABLE TABNAME_TEMP;--注意這里刪除的是臨時(shí)表,您剛剛創(chuàng)建的表,別刪錯(cuò)了。
例:恢復(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í)盡量小心操作。
例:在更新數(shù)據(jù)庫表時(shí)一定帶上where條件;刪除數(shù)據(jù)之前先備份數(shù)據(jù)(尤其是生產(chǎn)環(huán)境或測試環(huán)境您不熟悉的表)
附:Oracle 查詢某個(gè)時(shí)間之內(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獲取的時(shí)間是Oracle數(shù)據(jù)庫系統(tǒng)時(shí)間 select sysdate from dual;
總結(jié)
到此這篇關(guān)于oracle查詢一天前、幾天前、幾小時(shí)前、一小時(shí)前的數(shù)據(jù)以及恢復(fù)誤刪的數(shù)據(jù)的文章就介紹到這了,更多相關(guān)oracle查詢某段時(shí)間之前的數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
oracle導(dǎo)入導(dǎo)出某個(gè)schema數(shù)據(jù)的步驟
這篇文章主要介紹了oracle導(dǎo)入導(dǎo)出某個(gè)schema數(shù)據(jù)的步驟,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下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-04Oracle中pivot函數(shù)圖文實(shí)例詳解
pivot操作是一種數(shù)據(jù)處理方法,可以將一個(gè)表中的行數(shù)據(jù)轉(zhuǎn)換為列數(shù)據(jù),這種轉(zhuǎn)換對于表格數(shù)據(jù)的分析和展示非常有用,下面這篇文章主要給大家介紹了關(guān)于Oracle中pivot函數(shù)的相關(guān)資料,需要的朋友可以參考下2023-05-05PowerDesigner15.1連接oracle11g逆向生成ER圖
這篇文章主要為大家詳細(xì)介紹了PowerDesigner15.1連接oracle11g逆向生成ER圖的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08