閃回查詢
(1).查詢閃回
例如:
1)在刪除員工smith記錄後,希望查詢到刪除該行記錄前的值,則可以查詢emp在'2007-02-11 23:34:05'時的資料,查詢方法如下:
select * from emp as of timestamp to_timestamp('2007-02-11 23:34:05','yyyy-mm-dd hh24:mi:ss') where ename='SMITH';
2)查詢目前時間
alter session set nls_date_format='yyyy-mm-dd hh24:mi;ss'; select sysdate from dual;
delete from emp;
commit;
- select * from emp as of timestamp to_timestamp('2007-02-11 23:34:05','yyyy-mm-dd hh24:mi:ss');
可以將閃回的資料重新插入到表中:
insert into empbak (select * from empbak as of timestamp to_timestamp('2007-02-11 23:34:05','yyyy-mm-dd hh24:mi:ss'));
(2).表閃回
表閃回要求使用者必須要有flash any table許可權,首先,必須對錶進行下以下操作:
alter table empbak enable row movement;
執行閃回操作
flashback table emp to timestamp to_timestamp('2007-02-11 23:34:05','yyyy-mm-dd hh24:mi:ss');
註:如果表結構發生改變就沒有辦法閃回。
(3).刪除閃回
刪除閃回為刪除oracle10g中的資料庫實體提供了一個安全機制,當用刪除一個表時,oracle10g 會將該表放到資源回收筒中,資源回收筒中的對象一真會保留,直到使用者決定永久刪除它們或出現資料表空間的空間不足時才會被刪除。資源回收筒是一個虛擬容器,用於儲存所有被刪除的對象。資料字典user_tables中的列dropped表示被刪除的表.查詢方法如下:
select table_name,dropped from user_tables;
也可以使用show命令顯示資源回收筒資訊
sql>show recyclebin
或查詢資料字典user_recyclebin獲得資源回收筒資訊
SQL> select object_name,original_name,type,droptime from user_recyclebin;
例如;恢複被刪除的表emp.
SQL>flashback table emp to before drop;
如果不知道原表名,可以直接使用資源回收筒中的名稱進行閃回。
SQL>flashback table "Bin$DSbdfd4rdfdfdfegdfsf==$0" to before drop;
在回收的同時可以修改表名:
SQL>flashback table "Bin$DSbdfd4rdfdfdfegdfsf==$0" to before drop rename to emp1;
真正刪除某一個表,而不進入資源回收筒,可以在刪除表時增加purge選項.如將emp表徹底刪除.
SQL>drop table emp purge;
也可以通過刪除recyclebin地區來永久性刪除表 ,原始刪除表
drop table emp cascade constraints
SQL>purge table emp;
刪除目前使用者的資源回收筒
SQL>purge recyclebin;
刪除全體使用者在資源回收筒的資料.
SQL>purge dba_recyclebin
(4).資料庫閃回
使用資料庫閃回功能,可以使資料庫回到過去某一狀態, 文法如下:
SQL>alter database flashback on
SQL>flashback database to scn 46963;
SQL>flashback database to timestamp to_timestamp('2007-2-12 12:00:00','yyyy-mm-dd hh24:mi:ss');
表中資料刪除 閃回 。,,,,,1、運行 ------cmd--------2、C:\Documents and Settings\Administrator>sqlplus 斷行符號3、請輸入使用者名稱:fw/fw@oradb22 (閃回資料庫使用者名稱/密碼@資料庫)4、
SQL> alter table pr_project enable row movement; (更改表的屬性 。)5、
SQL> flashback table pr_project to timestamp to_timestamp('2008-11-07 11:20:00','yyyy-mm-dd hh24:mi:ss'); 閃回例子: http://blog.csdn.net/zftang/article/details/6388520