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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

5、to timestamp xxx 或flashback table table name to sen xxx注意:如果需要閃回一個(gè)表,需要以下條件:需要有flashback any table的系統(tǒng)權(quán)限或者是該表的flashback対象權(quán)限;需要有該表的 select,insert,delete,alter 權(quán)限;必須保證該表row movement,否則提示因?yàn)槲磫⒂眯幸苿?dòng)功能,不能閃回表。這時(shí) alter table test enable row movement,即可保證表 row movement 例:執(zhí)行將test表閃回到2008年12月25日下午19點(diǎn)。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閃回刪除特性提供了恢復(fù)被意外刪除的表(或索引)而不丟失最近事務(wù)的一種手段。在 oracle 10g中,在刪除一個(gè)表時(shí),oracle并不立即丟棄它。而是把它放在冋收站中列出該表 以及其依賴(lài)的對(duì)象,并保留盡可能長(zhǎng)的時(shí)間。如果你很快意識(shí)到自己犯了錯(cuò)誤,可以簡(jiǎn)單的 使用一些命令即可找回被你刪除的表。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)錯(cuò)誤:ora-00942:表或視圖不存在sql> flashback table emp to before drop;閃回完成。sql> select * from emp;eidnamesex idaabbb 11sql>這樣就可對(duì)誤刪除表進(jìn)行恢復(fù);閃回如何工作?在oraclelog z前,執(zhí)行drop table命令將導(dǎo)致表以及其所有依賴(lài)對(duì)象立即被刪除,

8、并 且表段中所有相關(guān)的空間都被釋放回?cái)?shù)據(jù)庫(kù)。在oraclelog中,表及其依賴(lài)對(duì)象不會(huì)被立即刪除,而是被重命名了,他們?nèi)匀槐A粼谠?置,oracle將根據(jù)空間緊迫情況盡可能長(zhǎng)的保留它們。在oraclelo屮,有一個(gè)冋收站的概 念:回收站是一個(gè)邏輯容器(一個(gè)數(shù)據(jù)字典表,它保存被刪除的表的相關(guān)信息,如它們的新 名字和原來(lái)的名字等)信息。sql> desc recyclebin;通過(guò)上述命令可以看到回收站的系統(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)閉閃回刪除功能。默 認(rèn)是,此參數(shù)設(shè)置為on,表示所有刪除的表都要進(jìn)入回收站,可以利用閃回刪除特性恢復(fù) 它們。通過(guò)設(shè)置此參數(shù)的值為off,關(guān)閉閃回刪除特性,表在被刪除后不進(jìn)入回收站。 如果需要真正的刪除掉一張表,那就需要清空回收站。u用戶(hù)使用purge命令(drop table purge

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

11、n的數(shù)據(jù)字典。你可以通過(guò) user.recyclebin視圖,查看自己在回收站中當(dāng)前登記的內(nèi)容。或者通過(guò)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可以看到,當(dāng)一

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

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

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

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

16、通過(guò)創(chuàng)建新的flashback logs (閃回日志), 記錄數(shù)據(jù)庫(kù)的閃回操作。如果希望能閃回?cái)?shù)據(jù)庫(kù),需要設(shè)置如下參數(shù): db_recover_file_dest 日志的存放位置,db_recover_file_dest_size 恢復(fù)區(qū)的 大小。在創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候,oracle將自動(dòng)創(chuàng)建恢復(fù)區(qū),但默認(rèn)是關(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特性,利用保存的冋滾信息,可以看到特定的表在時(shí)間段內(nèi) 的任何修改,如電影的冋放一樣,可以了解表在該期間的任何變化。flashback version query 一樣依賴(lài)于aum,提供了一個(gè)查看行改變的功能,能找到所有已經(jīng)提交了的行的記錄,分 析出過(guò)去吋i'可都執(zhí)行了什么操作。flashback version query采用versions between語(yǔ)句 來(lái)進(jìn)行查詢(xún),常用的方法:versions_scn系統(tǒng)改變號(hào)versions_timestamp -時(shí)間例如:在te

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

19、etween timestamp minvalue and maxvalueorder hy versions_starttime;在上述查詢(xún)中,列versions_starttime> versions_endtime、versions_xid、versions_operation 是偽歹!j,還有一些偽 列,如versions_startscn和versions_endscn顯示了該時(shí)刻的系統(tǒng)更改號(hào)。列versions_xid顯 示了更改該行的事務(wù)標(biāo)識(shí)符。當(dāng)然,除了分析以上所有的變更之外,可以根據(jù)需要指定時(shí)間段,如顯示在2008-12-25時(shí) 間在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ù)庫(kù)的任何改變?cè)谝粋€(gè)事務(wù)級(jí)別,可以利用此功能進(jìn)行診斷問(wèn)題、性 能分析和審計(jì)事務(wù)。它其實(shí)是

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論