Oracle10g中使用閃回技術(shù)詳解_第1頁
Oracle10g中使用閃回技術(shù)詳解_第2頁
Oracle10g中使用閃回技術(shù)詳解_第3頁
Oracle10g中使用閃回技術(shù)詳解_第4頁
Oracle10g中使用閃回技術(shù)詳解_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、oracle log中使用閃回技術(shù)在oraclelog中,可以在行、表和數(shù)據(jù)庫級別使用閃回技術(shù),具體分類如下:1、行級閃回可以使用行閃回技術(shù)撤銷對個別行的錯誤更改。有三種行級閃回技術(shù),他們?nèi)家蕾囉诖鎯?在撤銷表空i'可中的撤銷數(shù)據(jù)。(1)閃冋查詢:允許根據(jù)時間點或scn(system change number)查看舊的行數(shù)據(jù)??梢?查看更ih的數(shù)據(jù),并且,如果需要可以檢索它并撤銷錯誤的更改。(2)閃回版本查詢:允許查看相同行在一段時間內(nèi)的所有版本,以便可撤銷邏輯錯誤。它 還可以提供更改的審計歷史,允許比較當前數(shù)據(jù)與歷史數(shù)據(jù)而不用執(zhí)行dml活動。(3)閃回事務查詢:允許查看事務級所做

2、的更改。此技術(shù)幫助分析和審計事務,例如, 一個批作業(yè)執(zhí)行了兩次,你想確定哪些對象受到影響等。使用此技術(shù)可撤銷指定時間段內(nèi)某 個事務所做的更改。2、表級閃回(1)閃回表:復原一個表到某個時間點,或者到指定的scn而不用恢復數(shù)據(jù)文件。此 特性使用dml更改撤銷表中的更改。閃回表特性依賴于撤銷數(shù)據(jù)。(2)閃回刪除:允許倒退一條drop table語句的結(jié)果,而不用進行時間點恢復。閃回刪 除特性使用冋收站復原被刪除的表。3、數(shù)據(jù)庫級閃回閃冋數(shù)據(jù)庫特性允許復原整個數(shù)據(jù)庫到某個時間點,從而撤銷自該時間以來的所有更改。閃 回數(shù)據(jù)庫主要利用閃回tl志檢索數(shù)據(jù)塊的更舊的版本,它也依賴歸檔重做日志完全地恢復數(shù) 據(jù)

3、庫,不用復原數(shù)據(jù)文件和執(zhí)行傳統(tǒng)的介質(zhì)恢復。閃回和傳統(tǒng)的恢復技術(shù)對比與傳統(tǒng)恢復技術(shù)不同,閃回技術(shù)的主要目的不是從介質(zhì)丟失屮恢復,而是從人為錯誤屮恢復。 例如:用八可能錯誤的刪除了某個表或者錯誤的更改了某個表的數(shù)據(jù)。這時候你想撤銷你剛 才的操作。傳統(tǒng)上,從人為錯誤中恢復數(shù)據(jù)唯一的辦法就是采用用戶管理的備份和恢復技術(shù)。先復原數(shù) 據(jù)庫文件然后利用所有重做fi志文件前滾的過程需要長時間的停機。而閃冋技術(shù)提供了從邏輯錯誤屮恢復的更有效和更快的方法,多數(shù)情況下,在用這種技術(shù)進 行恢復吋數(shù)據(jù)庫仍然聯(lián)機并對用戶可用。此外,閃回技術(shù)允許選擇性地復原某些對象。使用 傳統(tǒng)的技術(shù),從某種意義上說某有選擇,只能恢復整個數(shù)

4、據(jù)庫。閃回刪除-flashback tableoracle flashback table特性允許利用flashback table語句,確保閃冋到表的前一個時間點。 與oracle 9i中的flashback query相似,利用回滾段信息來恢復一個或一些表到以前的一個 時間點(一個快照)。要注意的是,flashback table 不等于 flashback query, flashback query 僅僅是查詢以前的一個快照點而己,并不改變當前表的狀態(tài),而flashback table將改變當前 表及附屬對象一起回到以前的時間點語法:flashback table tablename

5、to timestamp xxx 或flashback table table name to sen xxx注意:如果需要閃回一個表,需要以下條件:需要有flashback any table的系統(tǒng)權(quán)限或者是該表的flashback対象權(quán)限;需要有該表的 select,insert,delete,alter 權(quán)限;必須保證該表row movement,否則提示因為未啟用行移動功能,不能閃回表。這時 alter table test enable row movement,即可保證表 row movement 例:執(zhí)行將test表閃回到2008年12月25日下午19點。sql>flash

6、back table test to timestamp to_times(amp('20()8 12-25 19:52:0()tyyyymm-dd hh24:mi:ss,);閃回刪除-flashback drop閃回刪除特性提供了恢復被意外刪除的表(或索引)而不丟失最近事務的一種手段。在 oracle 10g中,在刪除一個表時,oracle并不立即丟棄它。而是把它放在冋收站中列出該表 以及其依賴的對象,并保留盡可能長的時間。如果你很快意識到自己犯了錯誤,可以簡單的 使用一些命令即可找回被你刪除的表。sql> conn rocky/rocky已連接。sql> select

7、* from emp;eidnamesex idaabbb 11sql> drop table emp;表已刪除。sql> select * from emp; select * from emp*第1行出現(xiàn)錯誤:ora-00942:表或視圖不存在sql> flashback table emp to before drop;閃回完成。sql> select * from emp;eidnamesex idaabbb 11sql>這樣就可對誤刪除表進行恢復;閃回如何工作?在oraclelog z前,執(zhí)行drop table命令將導致表以及其所有依賴對象立即被刪除,

8、并 且表段中所有相關(guān)的空間都被釋放回數(shù)據(jù)庫。在oraclelog中,表及其依賴對象不會被立即刪除,而是被重命名了,他們?nèi)匀槐A粼谠?置,oracle將根據(jù)空間緊迫情況盡可能長的保留它們。在oraclelo屮,有一個冋收站的概 念:回收站是一個邏輯容器(一個數(shù)據(jù)字典表,它保存被刪除的表的相關(guān)信息,如它們的新 名字和原來的名字等)信息。sql> desc recyclebin;通過上述命令可以看到回收站的系統(tǒng)字段如果想查看回收站中的內(nèi)容可以使用sql> select object_name,droptime,dropsen,purge_object from recyclebin;o

9、bject.namedroptimedropscn purge_objectbin$ugr+dcx2r i kk6imz2weqoq=$0 2007-08-10:21:33:43545676254660在oraclelog release 2版本屮,可以使用recyclebin初始化參數(shù)關(guān)閉閃回刪除功能。默 認是,此參數(shù)設(shè)置為on,表示所有刪除的表都要進入回收站,可以利用閃回刪除特性恢復 它們。通過設(shè)置此參數(shù)的值為off,關(guān)閉閃回刪除特性,表在被刪除后不進入回收站。 如果需要真正的刪除掉一張表,那就需要清空回收站。u用戶使用purge命令(drop table purge

10、)從回收站中永久刪除對象uoracle迫于空間壓力(如果oracle在表空間中沒有足夠的可用空間創(chuàng)建新對彖或不能為現(xiàn)有對象擴展更過空i'可吋)自動刪除回收站中的對象。如果需要真正刪除表sql> drop table emp purge;表已刪除。sql> select object_name,droptime,dropsen,purge_object from recyclebin;object_namedroptimedropscnpurge_object這樣就找不到表了。我們在刪除的同時,也從冋收站情況了它。什么是回收站?回收站是一個邏輯結(jié)構(gòu),一個名為recyclebi

11、n的數(shù)據(jù)字典。你可以通過 user.recyclebin視圖,查看自己在回收站中當前登記的內(nèi)容?;蛘咄ㄟ^dba_recyclebin視圖也可以查看回收站中的內(nèi)容sql> select owner9original_name,object_name,ts_name,droptime from dba_recyclebin;ownerobject nameoriginal_namets namebonussalgradescottbin$ftnagvfjs6k7olxgnemsfg=$0 usersscottbin$mytqyz98sn6oi6iampa4la=$0 users可以看到,當一

12、個表被移動到回收站,oracle給他指派一個系統(tǒng)生成的名字,此名字通常有 30個字符長。如果你相在冋收站屮查詢一個對象,則必須使用用其系統(tǒng)生成的名字,擴在 雙引號中:sql> select * from nbin$ftnagvfjs6k7olxgnemsfg=$0h;mlm2n1abcdefabcdef defgdbbeaxyzhyk xyzabc hykdddd hykddddsql>注意:冋收站屮的對象只能進行查詢,任何的dml操作將不起作用?;謴捅粍h除的表只要回收站屮列出被刪除的表,就可以使用命令恢復它。flashback table table_name to before

13、 drop在恢復z后,oracle將把它們從回收站中刪除。永久刪除表在刪除表示使用命令還可以使用purge table或者purge index命令從回收站中永久除去以前刪除的表或 索引??梢允褂胮urge tablespace命令從回收站中刪除作為相應表空間成分的所有對象,如:purge tablespace users user scott還有:清除整個回收站:purge recyclebin除回收站中的單個表:purge table test_drop上述命令將從users表空間中刪除單一用戶scott的所有對象(以及存在于其他表空間中的 所有依賴對象)。必須的權(quán)限為使用 flashba

14、ck table table_name to before drop 命令取冋一個表,你必須 擁有它或者在具有此表的刪除權(quán)限(drop tablespace或者drop any table)。為使 用purge命令,需要類似的權(quán)限。為了查詢冋收站屮的對象,必須具有select權(quán)限和 flashback 權(quán)限。閃回數(shù)據(jù)庫閃回數(shù)據(jù)庫的條件1、數(shù)據(jù)庫日志系統(tǒng)必須在歸檔模式下。2、如果丟失了一個數(shù)據(jù)文件,或者由于某種原因不能使用特定的數(shù)據(jù)文件,則不能使用 閃回數(shù)據(jù)庫進行恢復。3、如果已經(jīng)在想閃冋的時間范圍內(nèi)復原或重建了一個控制文件,則不能使用閃冋數(shù)據(jù)庫 特性。4、不能閃回一個數(shù)據(jù)庫到resetlogs

15、操作之前。5、不能閃回在被閃回表操作覆蓋的時間范圍內(nèi)縮短或刪除的數(shù)據(jù)文件。在oraclelog +,閃回數(shù)據(jù)庫功能恢復數(shù)據(jù)文件但不需要備份的數(shù)據(jù)文件,他只能使用部分 歸檔重做h志信息。閃回數(shù)據(jù)庫操作將數(shù)據(jù)庫的所有數(shù)據(jù)文件倒退到以前的某個特定的時間 點。oracle flashback database(閃回數(shù)據(jù)庫)特性允許通過sql語句flashback database語句,讓 數(shù)據(jù)庫前滾到當前的前一個時間點或者scn,而不需要做時間點的恢復。閃回數(shù)據(jù)庫可以 迅速將數(shù)據(jù)庫回到誤操作或人為錯誤的前一個時間點,如word中的”撤消“操作,可以不利 用備份就快速的實現(xiàn)基于時間點的恢復。oracle

16、通過創(chuàng)建新的flashback logs (閃回日志), 記錄數(shù)據(jù)庫的閃回操作。如果希望能閃回數(shù)據(jù)庫,需要設(shè)置如下參數(shù): db_recover_file_dest 日志的存放位置,db_recover_file_dest_size 恢復區(qū)的 大小。在創(chuàng)建數(shù)據(jù)庫的時候,oracle將自動創(chuàng)建恢復區(qū),但默認是關(guān)閉的,需要執(zhí)行alter database flashback on 命令。例:執(zhí)行flashback database命令格式。sql>flashback database to time to_timestamp(xxx);sql>flashback database to

17、sen xxxflash version queiyoracle flashback version query特性,利用保存的冋滾信息,可以看到特定的表在時間段內(nèi) 的任何修改,如電影的冋放一樣,可以了解表在該期間的任何變化。flashback version query 一樣依賴于aum,提供了一個查看行改變的功能,能找到所有已經(jīng)提交了的行的記錄,分 析出過去吋i'可都執(zhí)行了什么操作。flashback version query采用versions between語句 來進行查詢,常用的方法:versions_scn系統(tǒng)改變號versions_timestamp -時間例如:在te

18、st表中,時間1插入一條記錄,時間2刪除了這條記錄,對于時間3執(zhí)行select * from test當然查詢不到這條記錄,只能看到該表最后的提交記錄。這時如果利用flash table 或者是flash query,只能看到過去的某一時間點的一個快照,而利用flashback version query,能夠把吋間1、吋i'可2的操作給記錄下來,并詳細的查詢出對表進行的任何操作。sql>select versions_starttime,versions_endtime, versions_x id, versions_operation from test versionsb

19、etween timestamp minvalue and maxvalueorder hy versions_starttime;在上述查詢中,列versions_starttime> versions_endtime、versions_xid、versions_operation 是偽歹!j,還有一些偽 列,如versions_startscn和versions_endscn顯示了該時刻的系統(tǒng)更改號。列versions_xid顯 示了更改該行的事務標識符。當然,除了分析以上所有的變更之外,可以根據(jù)需要指定時間段,如顯示在2008-12-25時 間在15:30到16:30之間test表

20、的所有變更。sql>select id from testversions between timestamp to_date(42008-l2-2515:30:00','yyyy-mm-dd hh24:mi:ss,) and to_date(42008-12-25 16:30:00','yyyymmdd hh24:mi:ss')flashback transaction queryoracle flashback transactionquery特性確保檢查數(shù)據(jù)庫的任何改變在一個事務級別,可以利用此功能進行診斷問題、性 能分析和審計事務。它其實是

21、flashback versionquery 查詢的一個擴充,flashback versionquery說明了可以審計一段吋間內(nèi)表的所有改變,但是也僅僅是能發(fā)現(xiàn)問題,對于錯誤的事 務,沒有好的處理辦法。而flashback transactionquery提供了從flashback_transaction_query視圖中獲得事務的歷史以及 undo_sql (回滾事務對應的sql語句),也就是說審計一個事務到底做了什么,甚至可以回 滾一個已經(jīng)提交的事務。例:flashback transaction query 的操作實例。(1)在test表中刪除記錄,獲得事務的標識xid,然后提交。sql>delete from test wh

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論