您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Oracle Study中數據恢復神器Flashback怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Flashback:
Flashback 技術是以Undo segment中的內容為基礎的, 因此受限于UNDO_RETENTON參數。要使用flashback 的特性,必須啟用自動撤銷管理表空間。
在Oracle 11g里又出了一個新特性:Oracle Flashback Data Archive. FDA通過將變化數據另外存儲到創建的閃回歸檔區(Flashback Archive)中,以和undo區別開來,這樣就可以為閃回歸檔區單獨設置存儲策略,使之可以閃回到指定時間之前的舊數據而不影響undo策略。
在Oracle 10g中, Flash back家族分為以下成員: Flashback Database, Flashback Drop,Flashback Query(分Flashback Query,Flashback Version Query, Flashback Transaction Query 三種) 和Flashback Table。
用戶誤操作數據恢復:
對于用戶誤操作產生的數據丟失,傳統上都采用備份(邏輯備份)或物理備份(不完全恢復)來恢復數據;如果有邏輯備份,恢復相對較容易,如果沒有邏輯備份,通過物理備份進行不完全恢復,需要付出很大的成本才能恢復數據;而從Oracle 9i以來,Oracle推出了Flashback得工具,可以通過此工具快速恢復因用戶誤操作而丟失的數據。
對于DML操作,Flashback可以通過Undo block來恢復用戶產生的誤操作。
1、Flashback query 特性flashback可以通過undo block查詢過去時間點或scn的數據 2、Flashback version query 特性可以得到特定的表在某一個時間段內的任何修改記錄 3、Flashback transaction query 特性可以限制用戶在某一個事務級別上檢查數據庫的修改操作,適用于診斷問題、分析性能、審計事務。 4、Flashback table 特性允許oracle通過flashback table語句,將表回滾到前一個時間點或者scn上。
一、Flashback Query
Flashback 是ORACLE 自9i 就開始提供的一項特性,在9i 中利用oracle 查詢多版本一致的特點,實現從回滾段中讀取表一定時間內操作過的數據,可用來進行數據比對,或者修正意外提交造成的錯誤數據,該項特性也被稱為Flashback Query。
正如前言中所提,Flashback Query 是利用多版本讀一致性的特性從UNDO 表空間讀取操作前的記錄數據!
什么是多版本讀一致性
Oracle 采用了一種非常優秀的設計,通過undo 數據來確保寫不堵塞讀,簡單的講,不同的事務在寫數據時,會將數據的前映像寫入undo 表空間,這樣如果同時有其它事務查詢該表數據,則可以通過undo 表空間中數據的前映像來構造所需的完整記錄集,而不需要等待寫入的事務提交或回滾。
flashback query 有多種方式構建查詢記錄集,記錄集的選擇范圍可以基于時間或基于scn,甚至可以同時查詢出記錄在undo 表空間中不同事務時的前映象。用法與標準查詢非常類似,要通過flashback query 查詢undo 中的撤銷數據,最簡單的方式只需要在標準查詢語句的表名后面跟上as of timestamp(基于時間)或as of scn(基于scn)即可。as of timestamp|scn 的語法是自9iR2 后才開始提供支持。
案例分析:
1、基于時間點(As of Timestamp)
利用在undo tablespace 里已經被提交的undo block(未被覆蓋),可以通過查詢的方式將表里面的記錄回到過去某個時間點。
1、構建測試環境 07:01:37 SQL> conn scott/tiger Connected. 07:01:41 SQL> select * from test; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 14 rows selected. 2、DML誤操作 07:01:45 SQL> delete from test ; 14 rows deleted. 07:01:59 SQL> commit; Commit complete. 07:02:03 SQL> select * from test; no rows selected 07:02:05 SQL> insert into test select * from emp where rownum <3; 2 rows created. 07:02:35 SQL> select * from test; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 07:02:37 SQL> commit; Commit complete. 2、利用logminer工具查找誤操作的時間點(挖掘current redo或archive log) 07:03:03 SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- 1 1 0 52428800 1 YES UNUSED 0 2 1 1 52428800 1 NO CURRENT 1261015 17-AUG-11 3 1 0 52428800 1 YES UNUSED 0 07:03:20 SQL> col member for a50 07:03:23 SQL> select group#,member from v$logfile GROUP# MEMBER ---------- -------------------------------------------------- 3 /u01/app/oracle/oradata/prod/redo03.log 2 /u01/app/oracle/oradata/prod/redo02.log 1 /u01/app/oracle/oradata/prod/redo01.log 11:19:31 SQL> conn /as sysdba Connected. 11:19:35 SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- 1 1 12 52428800 2 YES INACTIVE 823116 29-SEP-11 2 1 14 52428800 2 NO CURRENT 828692 29-SEP-11 3 2 9 52428800 2 YES INACTIVE 824371 29-SEP-11 4 2 11 52428800 2 NO CURRENT 828868 29-SEP-11 5 1 13 52428800 2 YES INACTIVE 828670 29-SEP-11 6 2 10 52428800 2 YES INACTIVE 828817 29-SEP-11 6 rows selected. 11:19:41 SQL> col member for a50 11:19:57 SQL> select group# ,member from v$logfile; GROUP# MEMBER ---------- -------------------------------------------------- 2 +DG1/prod/onlinelog/group_2.262.762877491 2 +RECOVERY/prod/onlinelog/group_2.258.762877501 1 +DG1/prod/onlinelog/group_1.261.762877473 1 +RECOVERY/prod/onlinelog/group_1.257.762877479 3 +DG1/prod/onlinelog/group_3.266.762877849 3 +RECOVERY/prod/onlinelog/group_3.259.762877855 4 +DG1/prod/onlinelog/group_4.267.762877859 4 +RECOVERY/prod/onlinelog/group_4.260.762877867 6 +DG1/prod/onlinelog/group_6.272.763037401 6 +RECOVERY/prod/onlinelog/group_6.262.763037407 5 +DG1/prod/onlinelog/group_5.271.763037441 GROUP# MEMBER ---------- -------------------------------------------------- 5 +RECOVERY/prod/onlinelog/group_5.261.763037613 12 rows selected. 啟動數據庫附加日志: 11:19:58 SQL>Alter database add supplemental log data; 分析current redolog: 11:20:07 SQL> execute dbms_logmnr.add_logfile(logfilename=>'+DG1/prod/onlinelog/group_2.262.762877491',options=>dbms_logmnr.new); PL/SQL procedure successfully completed. 11:20:57 SQL> alter session set nls_date_format='yyyy-mm-dd'; Session altered. 11:21:32 SQL> execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog); PL/SQL procedure successfully completed. 07:05:21 SQL> execute dbms_logmnr.end_logmnr; PL/SQL procedure successfully completed. 查看DML操作的時間點: 11:23:11 SQL> select username,scn,timestamp,sql_redo from v$logmnr_contents where seg_name='EMP1'; USERNAME SCN TIMESTAMP SQL_REDO ------------------------------ ---------- ---------- -------------------------------------------------- 830293 2011-09-29 delete from "SCOTT"."EMP1" where "EMPNO" = '7369' and "ENAME" = 'SMITH' and "JOB" = 'CLERK' and "MGR " = '7902' and "HIREDATE" = TO_DATE('1980-12-17', 'yyyy-mm-dd') and "SAL" = '800' and "COMM" IS NULL and "DEPTNO" = '20' and ROWID = 'AAAM01AAEAAAAGEA AA'; 3、flashback query基于時間點的查詢 07:08:42 SQL> conn scott/tiger Connected. 07:08:48 SQL> select * from test as of timestamp to_timestamp('2011-08-17 07:01:59','yyyy-mm-dd hh34:mi:ss'); EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 14 rows selected. 將查詢到的數據寫入到表中: 07:08:50 SQL> insert into test (select * from test as of timestamp to_timestamp('2011-08-17 07:01:59','yyyy-mm-dd hh34:mi:ss')); 14 rows created. 07:09:10 SQL> select * from test; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 16 rows selected. ---至此,數據恢復完成!
2、基于SCN(As of SCN)
---對于事務的scn亦可以通過logminer對日志分析得到!
07:09:13 SQL> conn /as sysdba Connected. 07:10:28 SQL> 07:10:28 SQL> select current_scn from v$database; CURRENT_SCN ----------- 1263945 07:10:39 SQL> conn scott/tiger Connected. 07:13:44 SQL> delete from test; 16 rows deleted. 07:13:51 SQL> commit; Commit complete. 07:13:56 SQL> select * from test as of scn 1263945 ; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 16 rows selected.
Oracle 事務timestamp和scn關系:
每隔5 分鐘,系統產生一次系統時間標記與scn 的匹配并存入sys.smon_scn_time 表,該表中記錄了最近1440個系統時間標記與scn 的匹配記錄,由于該表只維護了最近的1440 條記錄,因此如果使用as of timestamp 的方式則只能flashback 最近5 天內的數據(假設系統是在持續不斷運行并無中斷或關機重啟之類操作的話)。
注意理解系統時間標記與scn 的每5 分鐘匹配一次這句話,舉個例子,比如scn:339988,339989 分別匹配08-05-3013:52:00 和2008-13:57:00,則當你通過as of timestamp 查詢08-05-30 13:52:00 或08-05-30 13:56:59 這段時間點
內的時間時,oracle 都會將其匹配為scn:339988 到undo 表空間中查找,也就說在這個時間內,不管你指定的時間點是什么,查詢返回的都將是08-05-30 13:52:00 這個時刻的數據。
查看SCN 和 timestamp 之間的對應關系:
select scn,to_char(time_dp,'yyyy-mm-dd hh34:mi:ss')from sys.smon_scn_time;
15:49:45 SYS@ test3 >select scn,to_char(time_dp,'yyyy-mm-dd hh34:mi:ss')from sys.smon_scn_time order by 2 desc; SCN TO_CHAR(TIME_DP,'YY ---------- ------------------- 623337 2015-01-13 07:45:26 623229 2015-01-13 07:40:13 623128 2015-01-13 07:35:28 623009 2015-01-13 07:30:12 622906 2015-01-13 07:25:24 622799 2015-01-13 07:20:11 622695 2015-01-13 07:15:12 622580 2015-01-13 07:10:24 622474 2015-01-13 07:05:11 622390 2015-01-13 07:01:17 622161 2015-01-13 06:56:04 622063 2015-01-13 06:51:20 621954 2015-01-13 06:46:04 621855 2015-01-13 06:41:19
二、Flashback version query
相對于Flashback Query只能看到某一點的對象狀態,Oracle 10g引入的Flashback Version Query可以看到過去某個時間段內,記錄如何變化的。根據這個變化的歷史,可以決斷數據是在什么時間點發生了錯誤。
Oracle10g可以通過Flashback Version Query允許對不同時間段內數據表的不同版本進行查詢,查詢可以反映不同時間段內數據表的變更。
Oracle Flashback Version Query特性,利用保存的回滾信息,可以看到特定的表在時間段內的任何修改,如電影的回放一樣,可以了解表在該期間的任何變化。Flashback version query一樣依賴于AUM,提供了一個查看行改變的功能,能找到所有已經提交了的行的記錄,分析出過去時間都執行了什么操作。Flashback version query采用VERSIONS BETWEEN語句來進行查詢,常用的方法:
·VERSIONS_SCN – 系統改變號
·VERSIONS_TIMESTAMP – 時間
#查看表EMP1的操作歷史
col versions_xid format a16 heading 'XID' col versions_startscn format 99999999 heading 'Vsn|Start|SCN' col versions_endscn format 99999999 heading 'Vsn|End|SCN' col versions_operation format a12 heading 'Operation' select versions_xid, versions_startscn, versions_endscn, decode( versions_operation, 'I', 'Insert', 'U', 'Update', 'D', 'Delete', 'Original') "operation", empno, enamefrom emp1 versions between scn minvalue and maxvalue;
注意結果主從下向上看。Original代表最開始的數據。
3 相關的偽列
1) ORA_ROWSCN記錄最后一次被修改時的SCN, 這里的修改是指"被提交的修改",如果沒有提交,那么這個偽列不會發生變化。ORA_ROWSCN 缺省是數據塊級別的,也就是一個數據塊內的所有記錄都是一個ORA_ROWSCN. 數據塊內的任意一條記錄被修改,這個數據塊內的所有記錄ORA_ROWSCN都會同時改變。通過在建表時使用關鍵字rowdependencies, 可以改變這咱缺省行為。使用這個關鍵字后,每條記錄都有自己的ORA_ROWSCN.
創建表時,如果沒有使用rowdependencies關鍵字,則ORA_ROWSCN使用的是數據塊頭的SCN,因此在一個數據塊內所有記錄的ORA_ROWSCN都一樣。如果使用了rowdependencies關鍵字,則每個記錄都有自己的ORA_ROWSCN。這個值來自于ITL或dscn字段。 2)VERSIONS_STARTSCN表示這行記錄獲得的值是在哪個SCN獲得的,如果為NULL,則表明這一行的值早于versions between scn MINVALUE and MAXVALUE中的MINVALUE。
3) VERSIONS_STARTTIME同上
4) VERSIONS_ENDSCN這行記錄的這個值是到哪個SCN過期的。
5) VERSIONS_TIME同上
6) VERSIONS_XID導致事務修改的事務號
7) VERSIONS_OPERATION修改類型U: updateI: insertD: delete
兩個函數:SCN_TO_TIMESTAMP(current_scn)
select current_scn,scn_to_timestamp(current_scn) curr_time from v$database;
TIMESTAMP_TO_SCN('yyyy-mm-dd hh34:mi:ss1')
Notes要使用Flashback Version Query, 用戶首先要有對象的Select, flashback權限,對表執行過DDL語句之后,就只能查看DDL語句之后的版本,也就是說Flashback Version Query 不會跨越DDL操作。
案例分析:
12:50:06 SYS@ test1 >conn scott/tiger Connected. 12:50:14 SCOTT@ test1 >create table emp1 as select * from emp; Table created. 12:50:32 SCOTT@ test1 >insert into emp1 select * from emp where empno=7788; 1 row created. 12:51:53 SCOTT@ test1 >commit; Commit complete. 12:51:56 SCOTT@ test1 >update emp1 set sal=9000 where empno=7369; 1 row updated. 12:52:10 SCOTT@ test1 >commit; Commit complete. 12:52:11 SCOTT@ test1 >delete from emp where empno=7788; 1 row deleted. 12:52:23 SCOTT@ test1 >rollback; Rollback complete. col versions_xid format a16 heading 'XID' col versions_startscn format 99999999 heading 'Vsn|Start|SCN' col versions_endscn format 99999999 heading 'Vsn|End|SCN' col versions_operation format a12 heading 'Operation' select versions_xid, versions_startscn, versions_endscn, decode( versions_operation, 'I', 'Insert', 'U', 'Update', 'D', 'Delete', 'Original') "operation", empno, ename from emp1 versions between scn minvalue and maxvalue; Elapsed: 00:00:00.03 12:53:12 SCOTT@ test1 >select versions_xid, versions_startscn, versions_endscn, 12:54:33 2 decode( versions_operation, 'I', 'Insert', 'U', 'Update', 'D', 'Delete', 'Original') "operation", 12:54:33 3 empno, ename 12:54:33 4 from emp1 12:54:33 5 versions between scn minvalue and maxvalue; Vsn Vsn Start End XID SCN SCN operation EMPNO ENAME ---------------- --------- --------- -------------------------------- ---------- ---------- 08001F007D260000 11966074 Update 7369 SMITH 11966074 Original 7369 SMITH Original 7499 ALLEN Original 7521 WARD Original 7566 JONES Original 7654 MARTIN Original 7698 BLAKE Original 7782 CLARK Original 7788 SCOTT Original 7839 KING Original 7844 TURNER Original 7876 ADAMS Original 7900 JAMES Original 7902 FORD Original 7934 MILLER Vsn Vsn Start End XID SCN SCN operation EMPNO ENAME ---------------- --------- --------- -------------------------------- ---------- ---------- 0A0020006B260000 11966067 Insert 7788 SCOTT 16 rows selected.
三、Flashback transaction query
Flashback Transaction Query 與Flashback Version Query類似,也是使用UNDO信息來實現,利用這個功能可以查看某個事務執行的所有變化。使用這個功能,需要訪問Flashback_transaction_query視圖
Oracle Flashback Transaction Query特性確保檢查數據庫的任何改變在一個事務級別,可以利用此功能進行診斷問題、性能分析和審計事務。它其實是Flashback Version Query查詢的一個擴充,Flashback Version Query說明了可以審計一段時間內表的所有改變,但是也僅僅是能發現問題,對于錯誤的事務,沒有好的處理辦法。而Flashback Transaction Query提供了從FLASHBACK_TRANSACTION_QUERY視圖中獲得事務的歷史以及Undo_sql(回滾事務對應的sql語句),也就是說審計一個事務到底做了什么,甚至可以回滾一個已經提交的事務。
select xid, operation, commit_scn, undo_sql from flashback_transaction_query where xid in(select versions_xid from emp1 versions between scn minvalue and maxvalue);
案例分析:
在使用flashback transaction query之前需要啟動Oracle附加日志(supplemental redo log) 啟動數據庫附加日志: 13:04:58 SQL>Alter database add supplemental log data; 13:06:14 SYS@ test1 >col undo_sql for a50 13:07:17 SYS@ test1 >select xid, operation, commit_scn, undo_sql 2 from flashback_transaction_query 3 where xid in( 4 select versions_xid 5 from scott.emp1 6* versions between scn minvalue and maxvalue) XID OPERATION COMMIT_SCN UNDO_SQL ---------------- -------------------------------- ---------- -------------------------------------------------- 0A0020006B260000 INSERT 11966067 delete from "SCOTT"."EMP1" where ROWID = 'AAAEgIAA JAAAAC3AAA'; 0A0020006B260000 BEGIN 11966067 08001F007D260000 UPDATE 11966074 update "SCOTT"."EMP1" set "SAL" = '800' where ROWI D = 'AAAEgIAAJAAAACzAAA'; 08001F007D260000 BEGIN 11966074 案例2: 13:08:40 SYS@ test1 >conn scott/tiger Connected. 14:03:14 SCOTT@ test1 >insert into emp1 select * from emp where rownum=1; 1 row created. 14:03:30 SCOTT@ test1 >commit; Commit complete. 14:03:45 SCOTT@ test1 >update emp set sal=9000 where empno=7788; 1 row updated. 14:03:55 SCOTT@ test1 >commit; Commit complete. 14:03:57 SCOTT@ test1 >delete from emp where empno=7369; 0 rows deleted. 14:04:08 SCOTT@ test1 >commit; Commit complete. 14:08:10 SYS@ test1 >col undo_sql for a50 14:08:24 SYS@ test1 >select xid, operation, commit_scn, undo_sql 2 from flashback_transaction_query 3 where xid in( 4 select versions_xid 5 from scott.emp1 6 versions between timestamp 7 to_timestamp('2015-01-14 14:00:00','yyyy-mm-dd hh34:mi:ss') 8* and to_timestamp('2015-01-14 14:05:00','yyyy-mm-dd hh34:mi:ss')) XID OPERATION COMMIT_SCN UNDO_SQL ---------------- -------------------------------- ---------- -------------------------------------------------- 04001B0028260000 INSERT 11985210 delete from "SCOTT"."EMP1" where ROWID = 'AAAEgIAA JAAAAC1AAA'; 04001B0028260000 BEGIN 11985210
關于“Oracle Study中數據恢復神器Flashback怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。