欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、查找表操作記錄

1.首先查找表操作的歷史記錄
select * from v$sqlarea a where a.SQL_TEXT like '%表名%';
2.從上面的記錄中找到update語句對應(yīng)的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操作記錄,然后找到用戶名和主機(jī)
select * from sys.v_$session l,sys.v_$sql s where s.SQL_ID='cq53826tk4u3c' and l.USERNAME is not null;

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

//1.根據(jù)時(shí)間恢復(fù)
//示例:
select * from t_noentryquery;
delete from t_noentryquery where fid=7369;
//查詢當(dāng)前電腦時(shí)間:
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');
//恢復(fù)數(shù)據(jù):
flashback table t_noentryquery to timestamp to_timestamp('2018-04-12 09:12:11','yyyy-mm-dd hh24:mi:ss');
//注意:若出現(xiàn)報(bào)錯(cuò):ORA-08189:未啟用行移動(dòng)功能,不能閃回表;
//則:
alter table t_noentryquery enable row movement;  //開啟行移動(dòng)功能
alter table t_noentryquery disable row movement; //關(guān)閉行移動(dòng)功能

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

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

   create table test(id number,name varchar2(10),gender varchar2(5));
   insert into test values(1,'宋春風(fēng)','男');
   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ù)。

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

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

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

總結(jié) 

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

相關(guān)文章

最新評論