A. 什麼是oracle10g資料庫中的閃回技術
oracle10g中專門開辟了一個閃回區,初始大小是2G左右。這個區域的作用和windows中的回收站差不多,可以在段時間內快速恢復數據。
B. 如何開啟 oracle 閃回功能
一
首先查看是否開啟閃回:
sql> select flashback_on from V$database;
FLASHBACK_ON
------------------
NO
二
如果已經開啟了閃回,無須執行下面的操作。
cd /u01
mkdir flashback(生成閃回目錄)
SQL> alter system set db_recovery_file_dest_size=30G scope=both;
SQL> alter system set db_recovery_file_dest='/u01/flashback' scope=both;
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database flashback on;
SQL> alter database open;
三
再進行確認:
SQL> select flashback_on from V$database;
FLASHBACK_ON
------------------
YES
C. 高手指點oracle閃回表有哪些限制
用網路能搜大把出來吧。。。。
使用的限制和注意事項:
1. 使用閃回表語句恢復表到出現人為或應用錯誤事件之前的狀態。
2. 可以閃回到過去多長時間取決於系統中undo數據量的大小。
3. 並且oracle資料庫無法恢復通過DDL語句修改了結構的表。
4.oracle強烈建議設置UNDO_MANAGEMENT為AUTO(自動管理回滾數據)。另外,設置UNDO_RETENTION (回滾數據的保留時間)為一個合適的時間間隔。
5.你不能回滾flash back語句,然而你可以使用另外一個flash back語句並且指定一個當前時間之前的時間點。在聲明一個flash back語句之前先記錄下當前的SCN號。
另外如果要使用閃回表
1. 我們需要有在指定表上有flashback的許可權或者FLASHBACK ANYTABLE許可權才能閃回一個表到之前的時間點;
2.必須有對表的SELECT, INSERT, DELETE, andALTER object privileges一系列許可權;
3.除非是使用TO BEFORE DROP,對於分區表的閃回都應該開啟Row movement (alter table test_move enable row movement;)
一般用於分區表,某一行更新時,如果更新的是分區列,並且更新後的列值不屬於原來的這個分區,如果開啟了這個選項,就會把這行從這個分區中delete 掉,並加到更新後所屬的分區。相當於一個隱式的delete+insert,但是不會觸發insert/delete觸發器。如果沒有開啟這個選項,就會在更新時報錯。
4.恢復一個表到一個還原點,必須擁有SELECT ANY DICTIONARY orFLASHBACKANY TABLE system privilege or theSELECT_CATALOG_ROLE role。
D. oracle 系統表能閃回查詢嗎
一、時間查詢閃回
用戶store登錄,查詢customers表
select * from customers;
然後update customers set LAST_NAME=LAST_NAME || 's' ;
commit;
可以看到LAST_NAME被修改了,現在如何查看修改前的數據呢?
使用sqlplus store登錄,執行如下語句,就可以查看修改之前LAST_NAME 沒有加「s」
DBMS_FLASHBACK.ENABLE_AT_TIME() 該過程將資料庫狀態閃回到一個特定的時間值。
DBMS_FLASHBACK.ENABLE_AT_TIME(SYSDATE-10/1440 ) 也就是快閃記憶體到10分鍾之前。
現在執行任何查詢就將顯示10分鍾之前的狀態。但是在pl/sql中查詢的話 還是現在現在的狀態。
所以可以從這里查看之前數據,然後在pl/sql修改回原來的值。
禁用閃回 EXECUTE DBMS_FLASHBACK.DISABLE();
這些命令只能在sqlplus 中使用,在pl/sql中不能使用。
二、系統變更號查詢閃回
根據SCN進行閃回操作比根據時間進行要更精確,因為資料庫就是使用SCN來跟蹤資料庫的變化。
獲得當前SCN命令:
通過下面語句可以閃回到這個SCN的狀態
EXECUTE DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(:CURRENT_SCN);
禁用閃回操作
EXECUTE DBMS_FLASHBACK.DISABLE();
E. 求教Oracle11g中的閃回技術
1、Flashback Database(利用閃回日誌恢復)
Oracle Flashback Database特性允許通過SQL語句Flashback Database語句,讓資料庫前滾到當前的前一個時間點或者SCN,而不需要做時間點的恢復。閃回資料庫可以迅速將資料庫回到誤操作或人為錯誤的前一個時間點,如Word中的"撤消"操作,可以不利用備份就快速的實現基於時間點的恢復。Oracle通過創建新的Flashback Logs(閃回日誌),記錄資料庫的閃回操作。如果希望能閃回資料庫,需要設置如下參數:DB_RECOVER_FILE_DEST日誌的存放位置,DB_RECOVER_FILE_DEST_SIZE恢復區的大小。在創建資料庫的時候,Oracle將自動創建恢復區,但默認是關閉的,需要執行alter database flashback on命令。
例:執行Flashback Database命令格式。
SQL>flashback database to time to_timestamp(xxx);
SQL>flashback database to scn xxx
2、Flashback Table(利用UNDO保留信息恢復)
Oracle Flashback Table特性允許利用Flashback Table語句,確保閃回到表的前一個時間點。與Oracle 9i中的Flashback Query相似,利用回滾段信息來恢復一個或一些表到以前的一個時間點(一個快照)。要注意的是,Flashback Table不等於Flashback Query,Flashback Query僅僅是查詢以前的一個快照點而已,並不改變當前表的狀態,而Flashback Table將改變當前表及附屬對象一起回到以前的時間點。
語法:
flashback table tablename to timestamp xxx或
flashback table tablename to scn xxx
注意:如果需要閃回一個表,需要以下條件:
需要有flashback any table的系統許可權或者是該表的flashback對象許可權;
需要有該表的select,insert,delete,alter許可權;
必須保證該表row movement。
例:執行將test表閃回到2011年5月7日下午3點。
SQL>flashback table test to timestamp to_timestamp(』2011-05-07 15:00:00』,』yyyy-mm-dd hh24:mi:ss』);
3、Flashback Drop(利用回收站功能恢復)
註:由於目前的環境為了實現OGG的DDL同步,關閉了回收站功能,故這個功能不可用。
4、Flash Version Query(利用UNDO保留信息恢復)
Oracle Flashback Version Query特性,利用保存的回滾信息,可以看到特定的表在時間段內的任何修改,如電影的回放一樣,可以了解表在該期間的任何變化。Flashback version query一樣依賴於AUM,提供了一個查看行改變的功能,能找到所有已經提交了的行的記錄,分析出過去時間都執行了什麼操作。Flashback version query採用VERSIONS BETWEEN語句來進行查詢,常用的方法:
·VERSIONS_SCN - 系統改變號
·VERSIONS_TIMESTAMP - 時間
例如:在test表中,時間1插入一條記錄,時間2刪除了這條記錄,對於時間3執行select * from test當然查詢不到這條記錄,只能看到該表最後的提交記錄。這時如果利用Flash Table或者是Flash Query,只能看到過去的某一時間點的一個快照,而利用Flashback Version Query,能夠把時間1、時間2的操作給記錄下來,並詳細的查詢出對表進行的任何操作。
基於SCN的閃回查詢:
SQL> select count(*) from lm_mtrp_syn_channelinfo as of scn 708000000;
COUNT(*)
----------
21
基於時間段的閃回查詢:
SQL>select versions_starttime,versions_endtime, versions_xid,versions_operation,id
from test versions
between timestamp minvalue and maxvalue
order by versions_starttime;
5,Flashback Transaction Query(利用UNDO保留信息恢復)
Oracle Flashback Transaction Query特性確保檢查資料庫的任何改變在一個事務級別,可以利用此功能進行診斷問題、性能分析和審計事務。它其實是Flashback Version Query查詢的一個擴充,Flashback Version Query說明了可以審計一段時間內表的所有改變,但是也僅僅是能發現問題,對於錯誤的事務,沒有好的處理辦法。而Flashback Transaction Query提供了從FLASHBACK_TRANSACTION_QUERY視圖中獲得事務的歷史以及Undo_sql(回滾事務對應的sql語句),也就是說審計一個事務到底做了什麼,甚至可以回滾一個已經提交的事務。
例:Flashback Transaction Query的操作實例。
(1)在test表中刪除記錄,獲得事務的標識XID,然後提交。
SQL>delete from test where id=2;
SQL>select xid from v$transaction;
XID
----------------
04001200AE010000
SQL>commit;
在測試中方便起見,在事務沒有提交的時候,獲得事務的XID為04001F0035000000。實際情況下,不可能去跟蹤每個事務,想要獲得已提交事務的XID,就必須通過上面的Flashback Version Query。
(2)進行Flashback Transaction Query
SQL>select * from FLASHBACK_TRANSACTION_QUERY
where xid=』04001F0035000000』;
UNDO_SQL
insert into "FLASHTEST"."TEST"("ID") values (』2』);
注意:這個刪除語句對應的是1個Insert語句,如果想回滾這個事務,執行這個Insert語句即可。
可以看到,Flashback Transaction Query主要用於審計一個事務,並可以回滾一個已經提交的事務。如果確定出錯的事務是最後一個事務,我們利用Flashback Table或者Flashback Query就可以解決問題。但是,如果執行了一個錯誤的事務之後,又執行了一系列正確的事務,那麼上面的方法就無能為力,利用Flashback Transaction Query可以查看或回滾這個錯誤的事務。
另:ORACLE 11G還多了一個閃回數據歸檔的功能,即可將UNDO的信息進行歸檔,這個功能對於一些比較重要的表,
F. oracle 資料庫用什麼軟體來進行備份恢復和閃回
非常類似。但是給你個建議,在生產庫上,如果單純為了恢復一張表的數據,你flashback了整個資料庫的話,你就闖禍了!最後在其他機器上恢復,exp出來,然後imp到原庫里。
G. oracle 怎樣利用閃回功能恢復數據
1,只需要執行以下個腳本即可。
7,查看日誌信息,就可以了。
H. 請教ORACLE高手
1-開啟歸檔功能,使資料庫處於歸檔模式下
先關閉資料庫:shutdown immediate
啟動到mount狀態:startup mount
開啟歸檔功能:alter database archivelog;
打開資料庫:alter database open;
2-開啟閃回flashback功能(歸檔下才可開啟資料庫閃回)
查看flashback是否開啟:select name,flashback_on from v$database;
查看閃回恢復區及大小是否設置:show parameter db_recovery;
先設置閃回恢復區的大小:alter system set db_recovery_file_dest_size='2G';
再設置閃回恢復區路徑:alter system set db_recovery_file_dest='E:\oracle\proct\10.2.0\db_recovery_file_dest';
設置資料庫回退的時間,默認1440分鍾為一天時間:alter system set db_flashback_retention_target = 1440;
啟動到mount狀態:startup mount;
開啟flashback功能:alter database flashback on;
關閉flashback功能:alter database flashback off;
打開資料庫:alter database open;