亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Oracle查看表操作歷史記錄并恢復數(shù)據(jù)的方法

 更新時間:2023年08月10日 09:28:23   作者:凌霄玉階非所愿  
Oracle是一種廣泛應用于企業(yè)級數(shù)據(jù)庫系統(tǒng)的軟件,但在操作過程中可能會發(fā)生誤刪除數(shù)據(jù)的情況,這時就需要進行數(shù)據(jù)恢復操作,這篇文章主要給大家介紹了關于Oracle查看表操作歷史記錄并恢復數(shù)據(jù)的相關資料,需要的朋友可以參考下

一、查找表操作記錄

1.首先查找表操作的歷史記錄
select * from v$sqlarea a where a.SQL_TEXT like '%表名%';
2.從上面的記錄中找到update語句對應的sql_id
select * from v$sqltext a,v$sqlarea b where a.SQL_ID=b.SQL_ID and b.SQL_ID in('cq53826tk4u3c','afftnrfhu5utk') order by b.LAST_ACTIVE_TIME desc;
3.從上面的記錄中找到最新的sql操作記錄,然后找到用戶名和主機
select * from sys.v_$session l,sys.v_$sql s where s.SQL_ID='cq53826tk4u3c' and l.USERNAME is not null;

二、恢復數(shù)據(jù)

//1.根據(jù)時間恢復
//示例:
select * from t_noentryquery;
delete from t_noentryquery where fid=7369;
//查詢當前電腦時間:
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')from dual;
//查詢刪除之前數(shù)據(jù):
select * from t_noentryquery as of timestamp to_timestamp('2018-04-12 09:12:11','yyyy-mm-dd hh24:mi:ss');
//恢復數(shù)據(jù):
flashback table t_noentryquery to timestamp to_timestamp('2018-04-12 09:12:11','yyyy-mm-dd hh24:mi:ss');
//注意:若出現(xiàn)報錯:ORA-08189:未啟用行移動功能,不能閃回表;
//則:
alter table t_noentryquery enable row movement;  //開啟行移動功能
alter table t_noentryquery disable row movement; //關閉行移動功能

附:oracle查詢表最近更改的數(shù)據(jù)

查看一張最近被更改的記錄,可以查回滾段,下面是一個例子:

   create table test(id number,name varchar2(10),gender varchar2(5));
   insert into test values(1,'宋春風','男');
   insert into test values(2,'葉民','男');
   insert into test values(3,'白冰','男');
   insert into test values(4,'方巍森','男');
   insert into test values(5,'孫書禎','男');
   insert into test values(6,'史波','男');
   commit;

利用下面的SQL可以查詢最近更改的數(shù)據(jù)。

   SELECT *
   FROM TEST VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE WHERE 
   VERSIONS_STARTTIME IS NOT NULL ORDER BY VERSIONS_STARTTIME DESC;

修改幾條數(shù)據(jù)和接下來的查詢做對比。

   UPDATE TEST SET GENDER='女' WHERE NAME='孫書禎';
   UPDATE TEST SET GENDER='女' WHERE NAME='史波';
   commit;

再次查詢,被修改的數(shù)據(jù)就可以看到被修改和修改前的數(shù)據(jù)。

總結:VERSIONS_STARTTIME是數(shù)據(jù)被修改的起始時間,VERSIONS_ENDTIME是數(shù)據(jù)被修改后新數(shù)據(jù)的有效時間,也就是VERSIONS_STARTTIME和VERSIONS_ENDTIME時間段內(nèi),這條數(shù)據(jù)再沒被修改過,如果VERSIONS_ENDTIME為空,就說明這條記錄從VERSIONS_STARTTIME時間起再沒被修改過。VERSIONS_OPERATION是修改狀態(tài),I代表INSERT,U代表UPDATE,D代表DELETE。此時

如果想回滾INSERT的數(shù)據(jù),只需要DELETE反向操作即可,如果想回滾UPDATE操作,將數(shù)據(jù)反向UPDATE回去即可。

注:此SQL只能查詢到回滾段內(nèi)的信息,超出回滾段范圍這個SQL就無能為力了,需要借助LOGMGR工具挖掘日志了。

總結 

到此這篇關于Oracle查看表操作歷史記錄并恢復數(shù)據(jù)的文章就介紹到這了,更多相關Oracle查看表操作歷史記錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論