第16章Oracle閃回(Flashback)技術(shù)課件_第1頁
第16章Oracle閃回(Flashback)技術(shù)課件_第2頁
第16章Oracle閃回(Flashback)技術(shù)課件_第3頁
第16章Oracle閃回(Flashback)技術(shù)課件_第4頁
第16章Oracle閃回(Flashback)技術(shù)課件_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第十六章Oracle閃回(Flashback)技術(shù)本章概述主要內(nèi)容1第十六章Oracle閃回(Flashback)技術(shù)本章概述本章概述

為了使Oracle數(shù)據(jù)庫從任何邏輯誤操作中迅速恢復(fù),Oracle數(shù)據(jù)庫提供了一系列人為錯誤更正技術(shù),稱為閃回。使用閃回(Flashback)技術(shù)可以實現(xiàn)基于磁盤上閃回恢復(fù)區(qū)的自動備份與恢復(fù)。本章介紹與數(shù)據(jù)庫閃回相關(guān)的知識。閃回技術(shù)從oracle9i版本的閃回查詢開始,在Oracle10g版本中系統(tǒng)地使用,Oracle11g版本中進行了加強。2本章概述為了使Oracle數(shù)據(jù)庫從任何邏輯誤操作中迅主要內(nèi)容16.1閃回技術(shù)概述16.2閃回數(shù)據(jù)庫16.3閃回表16.4閃回查詢16.5閃回版本查詢16.6閃回事務(wù)查詢16.7閃回丟棄16.8小結(jié)3主要內(nèi)容16.1閃回技術(shù)概述316.1閃回技術(shù)概述

為了使Oracle數(shù)據(jù)庫從任何邏輯誤操作中迅速恢復(fù),Oracle數(shù)據(jù)庫提供了一系列人為錯誤更正技術(shù),稱為閃回。傳統(tǒng)上,從人為錯誤中恢復(fù)數(shù)據(jù)庫唯一的辦法就是采用用戶管理的備份和恢復(fù)技術(shù)。而閃回技術(shù)提供了從邏輯錯誤中恢復(fù)的更有效和更快的方法,多數(shù)情況下,在用這種技術(shù)進行恢復(fù)時數(shù)據(jù)庫仍然聯(lián)機并對用戶可用。此外,閃回技術(shù)允許選擇性地復(fù)原某些對象。在Oracle11g中,閃回技術(shù)包括以下方面:

閃回數(shù)據(jù)庫(FlashbackDatabase):允許用戶通過FlashbackDatabase語句,使數(shù)據(jù)庫迅速地回滾到以前的某個時間點或某個SCN(系統(tǒng)更改號)值時的狀態(tài)。

閃回丟棄(FlashbackDrop):類似于操作系統(tǒng)的垃圾回收站功能,可以從中恢復(fù)被drop的表或索引。該功能基于撤銷數(shù)據(jù)。416.1閃回技術(shù)概述為了使Oracle數(shù)據(jù)庫從任何

閃回查詢(FlashbackQuery):查詢過去某個時間點或者某個SCN值時表中的數(shù)據(jù)信息。

閃回版本查詢(FlashbackVersionQuary):查詢過去某個時間段或某個SCN段內(nèi)表中數(shù)據(jù)的變化情況。

閃回事務(wù)查詢(FlashbackTransactionQuery):查看某個事務(wù)或所有事務(wù)在過去一段時間對數(shù)據(jù)進行的修改。

閃回表(FlashbackTable):將表恢復(fù)到過去的某個時間點或某個SCN值時的狀態(tài)。

閃回技術(shù)最大的特點是實現(xiàn)自動備份與恢復(fù),大大減小了管理開銷。當(dāng)Oracle數(shù)據(jù)庫發(fā)生人為故障時,不需要事先備份數(shù)據(jù)庫,就可以利用閃回技術(shù)快速而方便地進行恢復(fù)。為了使用數(shù)據(jù)庫的閃回技術(shù),必須啟用撤銷表空間自動管理回滾信息。如果要使用閃回刪除技術(shù)和閃回數(shù)據(jù)庫技術(shù),還需要啟用回收站、閃回恢復(fù)區(qū)。5閃回查詢(FlashbackQuery):查詢過主要內(nèi)容16.1閃回技術(shù)概述16.2閃回數(shù)據(jù)庫16.3閃回表16.4閃回查詢16.5閃回版本查詢16.6閃回事務(wù)查詢16.7閃回丟棄16.8小結(jié)6主要內(nèi)容16.1閃回技術(shù)概述616.2閃回數(shù)據(jù)庫

閃回數(shù)據(jù)庫能夠使數(shù)據(jù)庫迅速回滾到以前的某個時間點或者某個SCN(系統(tǒng)更改號)上。這是大多數(shù)邏輯損害時恢復(fù)數(shù)據(jù)庫的最佳選擇。Oracle系統(tǒng)為了使用數(shù)據(jù)庫的閃回功能,特別創(chuàng)建了另外一組日志,就是Flashback_logs(閃回日志),記錄數(shù)據(jù)庫的閃回操作。

因為恢復(fù)不再受數(shù)據(jù)庫大小的影響,使用閃回數(shù)據(jù)庫恢復(fù)比用傳統(tǒng)的恢復(fù)方法要快得多。也就是說,傳統(tǒng)的恢復(fù)時間(MTTR)是由所需重建的數(shù)據(jù)文件的大小和所要應(yīng)用的歸檔日志的大小決定的。而使用閃回數(shù)據(jù)庫,恢復(fù)時間是由恢復(fù)過程中需要備份的變化的數(shù)量決定的,而不是數(shù)據(jù)文件和歸檔日志的大小。716.2閃回數(shù)據(jù)庫閃回數(shù)據(jù)庫能夠使數(shù)據(jù)庫迅速回

閃回數(shù)據(jù)庫的結(jié)構(gòu)是由恢復(fù)寫入器(RVWR)后臺進程和閃回數(shù)據(jù)庫日志組成的。如果要啟動閃回數(shù)據(jù)庫功能,RVWR進程也要啟動。閃回數(shù)據(jù)庫日志是一種新的日志文件類型,它包括物理數(shù)據(jù)塊先前的“圖像”。閃回恢復(fù)區(qū)是閃回數(shù)據(jù)庫的先決條件,因為RVWR進程要將閃回日志寫入該區(qū)域中,所以在使用閃回數(shù)據(jù)庫功能時,必須首先配置閃回恢復(fù)區(qū)。

Oracle11g的FLASHBACK命令可以對表級進行恢復(fù),也可以對數(shù)據(jù)庫級進行恢復(fù)。要對數(shù)據(jù)庫級進行恢復(fù),就要用到FLASHBACKDATABASE命令,語法格式如下:FLASHBACK[STANDBY]DATABASE<database>{TO[SCN|TIMESTAMP]<exp>|TOBEFORE[SCN|TIMESTAMP]<exp>}8閃回數(shù)據(jù)庫的結(jié)構(gòu)是由恢復(fù)寫入器(RVWR)后臺進程其中參數(shù)說明如下:

lSTANDBY:指定恢復(fù)備用的數(shù)據(jù)庫到某個SCN或者某個時間點上。如果沒有備用數(shù)據(jù)庫,則系統(tǒng)會返回一個錯誤。如果省略STANDBY子項,則數(shù)據(jù)庫可能是主數(shù)據(jù)庫,也可能是備用數(shù)據(jù)庫。lTOSCN<exp>:指定一個系統(tǒng)改變號SCN。lTOBEFORESCN<exp>:恢復(fù)到之前的SCN。lTOTIMESTAMP:需要恢復(fù)的時間表達式。lTOBEFORETIMESTAMP:恢復(fù)數(shù)據(jù)庫到之前的時間表達式。

用戶可以從sysdate中得到系統(tǒng)的當(dāng)前時間。

當(dāng)用戶發(fā)出FLASHBACKDATABASE語句之后,數(shù)據(jù)庫會首先檢查所需要的歸檔文件與聯(lián)機重建日志文件的可用性。如果可用,則會將數(shù)據(jù)庫恢復(fù)到指定的SCN或者時間點上。9其中參數(shù)說明如下:9

在數(shù)據(jù)庫中閃回數(shù)據(jù)庫的總數(shù)和大小由DB_FLASHBACK_RETENTION_TARGET初始化參數(shù)控制??赏ㄟ^查詢V$FLASHBACK_DATABASE_LOG視圖來確定能恢復(fù)到過去多遠。

如果數(shù)據(jù)庫中所保留的數(shù)據(jù)不夠執(zhí)行恢復(fù),可使用標準的恢復(fù)過程恢復(fù)到過去的某個時間點上。

如果數(shù)據(jù)文件集沒有保留足夠的數(shù)據(jù),則數(shù)據(jù)庫會返回一個錯誤,在這種情況下,可先使用數(shù)據(jù)文件脫機,然后再發(fā)出語句恢復(fù)剩余的部分,最后再用標準方法恢復(fù)這些脫機的數(shù)據(jù)文件。10在數(shù)據(jù)庫中閃回數(shù)據(jù)庫的總數(shù)和大小由DB_FLASH主要內(nèi)容16.1閃回技術(shù)概述16.2閃回數(shù)據(jù)庫16.3閃回表16.4閃回查詢16.5閃回版本查詢16.6閃回事務(wù)查詢16.7閃回丟棄16.8小結(jié)11主要內(nèi)容16.1閃回技術(shù)概述1116.3閃回表

閃回表是將表恢復(fù)到過去的某個時間點的狀態(tài),為DBA提供了一種在線、快速、便捷地恢復(fù)對表進行的修改、刪除、插入等錯誤的操作,可以講指定表中的數(shù)據(jù)、索引、觸發(fā)器等恢復(fù)到指定的時間點。Oracle11g的FlashbackTable有以下特性。*

在線操作。*恢復(fù)到指定時間點或者SCN的任何數(shù)據(jù)。*自動恢復(fù)相關(guān)屬性,如索引、觸發(fā)器。*滿足分布式的一致性。*滿足數(shù)據(jù)一致性,所有相關(guān)對象將自動一致。*閃回表技術(shù)是基于撤銷數(shù)據(jù)(undodata)來實現(xiàn)的,因此要想閃回到過去的某個時間點上,必須確保與撤銷表空間有關(guān)的參數(shù)設(shè)置合理。與撤銷表空間相關(guān)參數(shù)有undo_management、undo_tablespace和undo_retention。1216.3閃回表閃回表是將表恢復(fù)到過去的某個時間使用FLASHBACKTABLE語句可以對表進行閃回操作,語法如下:FLASHBACKTABLE[schema.]tableTOSCN|TIMESTAMPexpression[ENABLE|DISABLETRIGGERS]其中參數(shù)說明如下:SCN:將表恢復(fù)到指定的SCN時的狀態(tài)。TIMESTAMP:將表恢復(fù)到指定的時間點。ENABLE|DISABLETRIGGER:恢復(fù)后是否直接啟用觸發(fā)器。 需要注意的是,如果需要FLASHBACK一個表,則需要保證如下幾個方面:具備FLASHBACKANYTABLE的系統(tǒng)權(quán)限或者是該表的FLASHBACK對象權(quán)限;有該表的SELECT、INSERT、DELETE和ALTER權(quán)限;必須保證該表ROWMOVEMENT。13使用FLASHBACKTABLE語句可以對表進行閃回操作,【例16-1】刪除閃回表。SQL>settimeonSQL>createtablehr.mydep1asselect*fromhr.department;SQL>deletefromhr.mydep1wheredepartment_id=10;SQL>flashbacktablehr.mydep1totimestamp2totimestamp(to_tate(‘2012-04-0310:00:00’,‘yyyy-mm-ddhh24:mi:ss’));14【例16-1】刪除閃回表。14主要內(nèi)容16.1閃回技術(shù)概述16.2閃回數(shù)據(jù)庫16.3閃回表16.4閃回查詢16.5閃回版本查詢16.6閃回事務(wù)查詢16.7閃回丟棄16.8小結(jié)15主要內(nèi)容16.1閃回技術(shù)概述1516.4閃回查詢

閃回查詢是Oracle9i提出的概念,指利用數(shù)據(jù)庫回滾段存放的信息查看指定表中過去某個時間點的數(shù)據(jù)信息,或過去某個時間段數(shù)據(jù)的變化情況,或某個事務(wù)對該表的操作信息等。使用閃回查詢可以找到發(fā)生誤操作前的數(shù)據(jù)情況,為恢復(fù)數(shù)據(jù)庫提供依據(jù)。

要實現(xiàn)閃回查詢,必須將初始化參數(shù)UNDO_MANAGEMENT設(shè)置為AUTO,這是此參數(shù)的默認值。初始化參數(shù)UNDO_RETENTION決定了能往前閃回查詢的最大時間,值越大可以往前閃回查詢的最大時間越長,但占用的磁盤空間也越大。1616.4閃回查詢閃回查詢是Oracle9i提出

閃回查詢的SELECT語句的語法格式為:SELECTcolumn_name[,…]FROMtable_name[ASOFSCN|TIMESTAMPexpression][WHEREcondition]

可以基于ASOFTIMESTAMP的閃回查詢,也可以基于ASOFSCN的閃回查詢。

其實Oracle在內(nèi)部都是使用SCN的,即使指定的是ASOFTIMESTAMP,Oracle也會將其轉(zhuǎn)換成SCN。系統(tǒng)時間與SCN之間的對應(yīng)關(guān)系可以通過查詢SYS模式下的SMON_SCN_TIME表獲得。17閃回查詢的SELECT語句的語法格式為:17例如:SQL>settimeon創(chuàng)建示例表:SQL>createtablehr.mydep4asselect*fromhr.departments;刪除記錄:SQL>deletefromhr.mydep4wheredepartment_id=300;SQL>commit;使用select查詢不到剛才刪除的記錄,但使用閃回查詢可以找到:SQL>select*fromhr.mydep4asoftimestamp2totimestamp(to_date(‘2012-3-2810:30:00’,‘yyyy-mm-ddhh24:mi:ss’))3Wheredepartment_id=300;

18例如:18主要內(nèi)容16.1閃回技術(shù)概述16.2閃回數(shù)據(jù)庫16.3閃回表16.4閃回查詢16.5閃回版本查詢16.6閃回事務(wù)查詢16.7閃回丟棄16.8小結(jié)19主要內(nèi)容16.1閃回技術(shù)概述1916.5閃回版本查詢

Oracle的閃回版本查詢功能(FlashbackVersionQuery)提供了一個審計行改變的查詢功能,它能找到所有已經(jīng)提交了的行的記錄。借助這個特殊功能,我們可以查看一行記錄在一段時間內(nèi)的變化情況,即一行記錄的多個提交的版本信息,從而實現(xiàn)數(shù)據(jù)的行級恢復(fù)。使用該功能,可以輕松實現(xiàn)對應(yīng)用系統(tǒng)進行審計,而沒有必要使用細粒度的審計功能或者是使用LOGMNR了。語法格式為:SELECTcolumn_name[,…]FROMtable_name[VERSIONSBETWEENSCN|TIMESTAMPMINVALUE|expressionANDMAXVALUE|expression][ASOFSCN|TIMESTAMPexpression]WHEREcondition2016.5閃回版本查詢Oracle的閃回版本查詢

參數(shù)說明如下:

VERSIONSBETWEEN:用于指定閃回版本查詢時的時間段或SCN段;

ASOF:表示恢復(fù)單個版本;

TIMESTAMP:表示時間。

在進行閃回版本查詢時,可以同時使用VERSIONS短語和ASOF短語。

ASOF短語決定了進行查詢的時間點或SCN,VERSIONS短語決定了可見的行的版本信息。對于在VERSIONSBETWEEN下界之前開始的事務(wù),或在ASOF指定的時間或SCN之后完成的事務(wù),系統(tǒng)返回的版本信息為NULL。21 參數(shù)說明如下:21【例16-2】創(chuàng)建一個讀者信息表。SQL>createtablereader(idVarchar2(10),nameVarchar2(20));插入一條記錄:SQL>insertintoreadervalues(‘13100110’,‘zs’);更新表中數(shù)據(jù):SQL>updatereadersetid=’13100101’wherename=’zs’;提交:SQL>commit;使用閃回版本查詢:SQL>selectversions_starttime,versions_operation,id,name2fromreaderversionsbetweentimestampminvalueandmaxvalue;22【例16-2】創(chuàng)建一個讀者信息表。22執(zhí)行結(jié)果如圖16-1所示圖16-1閃回版本查詢23執(zhí)行結(jié)果如圖16-1所示23主要內(nèi)容16.1閃回技術(shù)概述16.2閃回數(shù)據(jù)庫16.3閃回表16.4閃回查詢16.5閃回版本查詢16.6閃回事務(wù)查詢16.7閃回丟棄16.8小結(jié)24主要內(nèi)容16.1閃回技術(shù)概述2416.6閃回事務(wù)查詢

事務(wù)是訪問數(shù)據(jù)庫時一系列的邏輯相關(guān)動作。Oracle11g的閃回事務(wù)查詢就是對過去某段時間內(nèi)所完成的事務(wù)的查詢和撤銷。

閃回事務(wù)查詢是一種診斷工具,用于幫助識別數(shù)據(jù)庫發(fā)生的事務(wù)級變化。通過閃回事務(wù)分析,可以識別在一個特定的時間段內(nèi)所發(fā)生的所有變化,也可以對數(shù)據(jù)庫表進行事務(wù)級恢復(fù)。閃回事務(wù)查詢的基礎(chǔ)仍然是依賴于撤銷數(shù)據(jù)(Undodata),它也是利用初始化的數(shù)據(jù)庫參數(shù)UNDO_RETENTION來確定已經(jīng)提交的撤銷數(shù)據(jù)在數(shù)據(jù)庫中的保存時間。

【例16-3】已經(jīng)提交的事務(wù),通過閃回事務(wù)查詢:SQL>CONNECTsys/zzuliASsysdbaSQL>selecttable_name,undo_sqlfromflashback_transaction_querywhererownum<5;2516.6閃回事務(wù)查詢事務(wù)是訪問數(shù)據(jù)庫時一系列的

其中,table_name表示事務(wù)所涉及的表名,undo_sql表示撤銷事務(wù)所要執(zhí)行的SQL語句。執(zhí)行結(jié)果如下:圖16-2閃回事務(wù)查詢26其中,table_name表示事務(wù)所涉及的表名,u主要內(nèi)容16.1閃回技術(shù)概述16.2閃回數(shù)據(jù)庫16.3閃回表16.4閃回查詢16.5閃回版本查詢16.6閃回事務(wù)查詢16.7閃回丟棄16.8小結(jié)27主要內(nèi)容16.1閃回技術(shù)概述2716.7閃回丟棄

閃回丟棄是將被丟棄的數(shù)據(jù)庫對象及其相關(guān)對象的復(fù)制保存在回收站中,以便在必要時能夠及時恢復(fù)這些對象。在回收站被清空之前,被丟棄的對象并沒有從數(shù)據(jù)庫中刪除,所以數(shù)據(jù)庫能夠恢復(fù)被意外或誤操作而刪除的表。

閃回丟棄功能的實現(xiàn)主要是通過Oracle數(shù)據(jù)庫中的“回收站”(RecycleBin)技術(shù)實現(xiàn)的?;厥照臼撬衼G棄表及其相依對象的邏輯存儲容器。當(dāng)一個表被丟棄(DROP),回收站會將該表及其相依對象存儲在回收站中?;厥照臼且员砜臻g中現(xiàn)有的已經(jīng)分配的空間為基礎(chǔ),這使得回收站空間依賴于現(xiàn)有表空間中的可用空間(也就是說丟棄表占據(jù)的空間仍然需要計入表空間配額)。因此并不能總是保證丟棄對象在回收站中的最小時間。2816.7閃回丟棄閃回丟棄是將被丟棄的數(shù)據(jù)庫對象

如果不對回收站進行清除操作,丟棄對象會一直保存在回收站內(nèi),一直到丟棄對象所屬的表空間無法再分配新的存儲區(qū)域,這種狀態(tài)稱之為空間壓力。有時,用戶的表空間限額也會導(dǎo)致空間壓力狀態(tài)的出現(xiàn),即使表空間中仍然存在自由空間。當(dāng)空間壓力出現(xiàn)時,Oracle會覆蓋些回收站對象從而自動回收表空間。Oracle根據(jù)先進先出的原則來選擇丟棄對象進行刪除,所以最先被丟棄的對象也最先被清除。而對象的清除僅僅是為了解決產(chǎn)生的空間壓力問題,所以會盡可能清除少的對象來滿足空間壓力的要求。這樣既最大限度地保證了對象在回收站中的可用時間,又減少了Oracle在事務(wù)處理時性能影響。要使用閃回刪除功能,需要啟動數(shù)據(jù)庫的“回收站”,即將參數(shù)RECYCLEBIN設(shè)置為ON:

SQL>SHOWPARAMETERRECYCLEBIN

SQL>ALTERSYSTEMSETRECYCLEBIN=ON;29如果不對回收站進行清除操作,丟棄對象會一直保存在回

當(dāng)執(zhí)行DROPTABLE操作時,表及其關(guān)聯(lián)對象被命名后保存在“回收站”中,可以通過查詢USER_RECYCLEBIN、DBA_RECYCLEBIN視圖獲得被刪除的表及其關(guān)聯(lián)對象的信息。

(1)查看回收站中的數(shù)據(jù):SQL>selectobject_name,original_name,createtime,droptimefromdba_recycle;

(2)從回收站中恢復(fù)數(shù)據(jù):SQL>flashbacktablehr.mydep2tobeforedrop;

如果在刪除表時使用了PURGE短語,則表及關(guān)聯(lián)對象被直接釋放,空間被回收,相關(guān)

信息不會進入“回收站”中:SQL>CREATETABLEtest_purge(2IDMUMBERPRIMARYKEY,nameCHAR(20)3);SQL>DROPTABLEtest_purgePURGE;SQL>SELECTOBJECT_NAME,ORIGINAL_NAME,TYPE2FROMUSER_RECYCLEBIN;30當(dāng)執(zhí)行DROPTABLE操作時,表及其關(guān)聯(lián)對象被命(3)清除回收站

由于被刪除表及其關(guān)聯(lián)對象的信息保存在“回收站”中,其存儲空間并沒有釋放,因此需要定期清空“回收站”,或清除“回收站”中沒用的對象(表、索引、表空間),釋放其所占的磁盤空間。清除回收站的語法:PURGE[TABLEtable|INDEXindex]|[RECYCLEBIN|DBA_RECYCLEBIN]|[TABLESPACEtablespace[USERuser]]31(3)清除回收站31參數(shù)說明如下:TABLE:從“回收站”中清除指定的表,并回收其磁盤空間。INDEX:從“回收站”中清除指定的索引,并回收其磁盤空間。RECYCLEBIN:清空用戶“回收站”,并回收所有對象的磁盤空間。DBA_RECYCLEBIN:清空整個數(shù)據(jù)庫系統(tǒng)的“回收站”,只有具有SYSDBA權(quán)限的用戶才可以使用。TABLESPACE:清除“回收站”中指定的表空間,并回收磁盤空間。USER:清除“回收站”中指定表空間中特定用戶的對象,并回收磁盤空間。

【例16-4】刪除回收站中指定的數(shù)據(jù):

SQL>purgetablehr.mydep1;

清空回收站時,可以使用:

SQL>purgedba_recyclebin;32參數(shù)說明如下:32主要內(nèi)容16.1閃回技術(shù)概述16.2閃回數(shù)據(jù)庫16.3閃回表16.4閃回查詢16.5閃回版本查詢16.6閃回事務(wù)查詢16.7閃回丟棄16.8小結(jié)33主要內(nèi)容16.1閃回技術(shù)概述3316.8小結(jié)

本章主要介紹了Oracle11g數(shù)據(jù)庫中的一個新特性,即閃回技術(shù)。閃回是數(shù)據(jù)庫進行邏輯恢復(fù)的一個快捷工具。利用該技術(shù)可以方便、高效地實現(xiàn)數(shù)據(jù)庫的恢復(fù)。3416.8小結(jié)本章主要介紹了Oracle11g數(shù)第十六章Oracle閃回(Flashback)技術(shù)本章概述主要內(nèi)容35第十六章Oracle閃回(Flashback)技術(shù)本章概述本章概述

為了使Oracle數(shù)據(jù)庫從任何邏輯誤操作中迅速恢復(fù),Oracle數(shù)據(jù)庫提供了一系列人為錯誤更正技術(shù),稱為閃回。使用閃回(Flashback)技術(shù)可以實現(xiàn)基于磁盤上閃回恢復(fù)區(qū)的自動備份與恢復(fù)。本章介紹與數(shù)據(jù)庫閃回相關(guān)的知識。閃回技術(shù)從oracle9i版本的閃回查詢開始,在Oracle10g版本中系統(tǒng)地使用,Oracle11g版本中進行了加強。36本章概述為了使Oracle數(shù)據(jù)庫從任何邏輯誤操作中迅主要內(nèi)容16.1閃回技術(shù)概述16.2閃回數(shù)據(jù)庫16.3閃回表16.4閃回查詢16.5閃回版本查詢16.6閃回事務(wù)查詢16.7閃回丟棄16.8小結(jié)37主要內(nèi)容16.1閃回技術(shù)概述316.1閃回技術(shù)概述

為了使Oracle數(shù)據(jù)庫從任何邏輯誤操作中迅速恢復(fù),Oracle數(shù)據(jù)庫提供了一系列人為錯誤更正技術(shù),稱為閃回。傳統(tǒng)上,從人為錯誤中恢復(fù)數(shù)據(jù)庫唯一的辦法就是采用用戶管理的備份和恢復(fù)技術(shù)。而閃回技術(shù)提供了從邏輯錯誤中恢復(fù)的更有效和更快的方法,多數(shù)情況下,在用這種技術(shù)進行恢復(fù)時數(shù)據(jù)庫仍然聯(lián)機并對用戶可用。此外,閃回技術(shù)允許選擇性地復(fù)原某些對象。在Oracle11g中,閃回技術(shù)包括以下方面:

閃回數(shù)據(jù)庫(FlashbackDatabase):允許用戶通過FlashbackDatabase語句,使數(shù)據(jù)庫迅速地回滾到以前的某個時間點或某個SCN(系統(tǒng)更改號)值時的狀態(tài)。

閃回丟棄(FlashbackDrop):類似于操作系統(tǒng)的垃圾回收站功能,可以從中恢復(fù)被drop的表或索引。該功能基于撤銷數(shù)據(jù)。3816.1閃回技術(shù)概述為了使Oracle數(shù)據(jù)庫從任何

閃回查詢(FlashbackQuery):查詢過去某個時間點或者某個SCN值時表中的數(shù)據(jù)信息。

閃回版本查詢(FlashbackVersionQuary):查詢過去某個時間段或某個SCN段內(nèi)表中數(shù)據(jù)的變化情況。

閃回事務(wù)查詢(FlashbackTransactionQuery):查看某個事務(wù)或所有事務(wù)在過去一段時間對數(shù)據(jù)進行的修改。

閃回表(FlashbackTable):將表恢復(fù)到過去的某個時間點或某個SCN值時的狀態(tài)。

閃回技術(shù)最大的特點是實現(xiàn)自動備份與恢復(fù),大大減小了管理開銷。當(dāng)Oracle數(shù)據(jù)庫發(fā)生人為故障時,不需要事先備份數(shù)據(jù)庫,就可以利用閃回技術(shù)快速而方便地進行恢復(fù)。為了使用數(shù)據(jù)庫的閃回技術(shù),必須啟用撤銷表空間自動管理回滾信息。如果要使用閃回刪除技術(shù)和閃回數(shù)據(jù)庫技術(shù),還需要啟用回收站、閃回恢復(fù)區(qū)。39閃回查詢(FlashbackQuery):查詢過主要內(nèi)容16.1閃回技術(shù)概述16.2閃回數(shù)據(jù)庫16.3閃回表16.4閃回查詢16.5閃回版本查詢16.6閃回事務(wù)查詢16.7閃回丟棄16.8小結(jié)40主要內(nèi)容16.1閃回技術(shù)概述616.2閃回數(shù)據(jù)庫

閃回數(shù)據(jù)庫能夠使數(shù)據(jù)庫迅速回滾到以前的某個時間點或者某個SCN(系統(tǒng)更改號)上。這是大多數(shù)邏輯損害時恢復(fù)數(shù)據(jù)庫的最佳選擇。Oracle系統(tǒng)為了使用數(shù)據(jù)庫的閃回功能,特別創(chuàng)建了另外一組日志,就是Flashback_logs(閃回日志),記錄數(shù)據(jù)庫的閃回操作。

因為恢復(fù)不再受數(shù)據(jù)庫大小的影響,使用閃回數(shù)據(jù)庫恢復(fù)比用傳統(tǒng)的恢復(fù)方法要快得多。也就是說,傳統(tǒng)的恢復(fù)時間(MTTR)是由所需重建的數(shù)據(jù)文件的大小和所要應(yīng)用的歸檔日志的大小決定的。而使用閃回數(shù)據(jù)庫,恢復(fù)時間是由恢復(fù)過程中需要備份的變化的數(shù)量決定的,而不是數(shù)據(jù)文件和歸檔日志的大小。4116.2閃回數(shù)據(jù)庫閃回數(shù)據(jù)庫能夠使數(shù)據(jù)庫迅速回

閃回數(shù)據(jù)庫的結(jié)構(gòu)是由恢復(fù)寫入器(RVWR)后臺進程和閃回數(shù)據(jù)庫日志組成的。如果要啟動閃回數(shù)據(jù)庫功能,RVWR進程也要啟動。閃回數(shù)據(jù)庫日志是一種新的日志文件類型,它包括物理數(shù)據(jù)塊先前的“圖像”。閃回恢復(fù)區(qū)是閃回數(shù)據(jù)庫的先決條件,因為RVWR進程要將閃回日志寫入該區(qū)域中,所以在使用閃回數(shù)據(jù)庫功能時,必須首先配置閃回恢復(fù)區(qū)。

Oracle11g的FLASHBACK命令可以對表級進行恢復(fù),也可以對數(shù)據(jù)庫級進行恢復(fù)。要對數(shù)據(jù)庫級進行恢復(fù),就要用到FLASHBACKDATABASE命令,語法格式如下:FLASHBACK[STANDBY]DATABASE<database>{TO[SCN|TIMESTAMP]<exp>|TOBEFORE[SCN|TIMESTAMP]<exp>}42閃回數(shù)據(jù)庫的結(jié)構(gòu)是由恢復(fù)寫入器(RVWR)后臺進程其中參數(shù)說明如下:

lSTANDBY:指定恢復(fù)備用的數(shù)據(jù)庫到某個SCN或者某個時間點上。如果沒有備用數(shù)據(jù)庫,則系統(tǒng)會返回一個錯誤。如果省略STANDBY子項,則數(shù)據(jù)庫可能是主數(shù)據(jù)庫,也可能是備用數(shù)據(jù)庫。lTOSCN<exp>:指定一個系統(tǒng)改變號SCN。lTOBEFORESCN<exp>:恢復(fù)到之前的SCN。lTOTIMESTAMP:需要恢復(fù)的時間表達式。lTOBEFORETIMESTAMP:恢復(fù)數(shù)據(jù)庫到之前的時間表達式。

用戶可以從sysdate中得到系統(tǒng)的當(dāng)前時間。

當(dāng)用戶發(fā)出FLASHBACKDATABASE語句之后,數(shù)據(jù)庫會首先檢查所需要的歸檔文件與聯(lián)機重建日志文件的可用性。如果可用,則會將數(shù)據(jù)庫恢復(fù)到指定的SCN或者時間點上。43其中參數(shù)說明如下:9

在數(shù)據(jù)庫中閃回數(shù)據(jù)庫的總數(shù)和大小由DB_FLASHBACK_RETENTION_TARGET初始化參數(shù)控制??赏ㄟ^查詢V$FLASHBACK_DATABASE_LOG視圖來確定能恢復(fù)到過去多遠。

如果數(shù)據(jù)庫中所保留的數(shù)據(jù)不夠執(zhí)行恢復(fù),可使用標準的恢復(fù)過程恢復(fù)到過去的某個時間點上。

如果數(shù)據(jù)文件集沒有保留足夠的數(shù)據(jù),則數(shù)據(jù)庫會返回一個錯誤,在這種情況下,可先使用數(shù)據(jù)文件脫機,然后再發(fā)出語句恢復(fù)剩余的部分,最后再用標準方法恢復(fù)這些脫機的數(shù)據(jù)文件。44在數(shù)據(jù)庫中閃回數(shù)據(jù)庫的總數(shù)和大小由DB_FLASH主要內(nèi)容16.1閃回技術(shù)概述16.2閃回數(shù)據(jù)庫16.3閃回表16.4閃回查詢16.5閃回版本查詢16.6閃回事務(wù)查詢16.7閃回丟棄16.8小結(jié)45主要內(nèi)容16.1閃回技術(shù)概述1116.3閃回表

閃回表是將表恢復(fù)到過去的某個時間點的狀態(tài),為DBA提供了一種在線、快速、便捷地恢復(fù)對表進行的修改、刪除、插入等錯誤的操作,可以講指定表中的數(shù)據(jù)、索引、觸發(fā)器等恢復(fù)到指定的時間點。Oracle11g的FlashbackTable有以下特性。*

在線操作。*恢復(fù)到指定時間點或者SCN的任何數(shù)據(jù)。*自動恢復(fù)相關(guān)屬性,如索引、觸發(fā)器。*滿足分布式的一致性。*滿足數(shù)據(jù)一致性,所有相關(guān)對象將自動一致。*閃回表技術(shù)是基于撤銷數(shù)據(jù)(undodata)來實現(xiàn)的,因此要想閃回到過去的某個時間點上,必須確保與撤銷表空間有關(guān)的參數(shù)設(shè)置合理。與撤銷表空間相關(guān)參數(shù)有undo_management、undo_tablespace和undo_retention。4616.3閃回表閃回表是將表恢復(fù)到過去的某個時間使用FLASHBACKTABLE語句可以對表進行閃回操作,語法如下:FLASHBACKTABLE[schema.]tableTOSCN|TIMESTAMPexpression[ENABLE|DISABLETRIGGERS]其中參數(shù)說明如下:SCN:將表恢復(fù)到指定的SCN時的狀態(tài)。TIMESTAMP:將表恢復(fù)到指定的時間點。ENABLE|DISABLETRIGGER:恢復(fù)后是否直接啟用觸發(fā)器。 需要注意的是,如果需要FLASHBACK一個表,則需要保證如下幾個方面:具備FLASHBACKANYTABLE的系統(tǒng)權(quán)限或者是該表的FLASHBACK對象權(quán)限;有該表的SELECT、INSERT、DELETE和ALTER權(quán)限;必須保證該表ROWMOVEMENT。47使用FLASHBACKTABLE語句可以對表進行閃回操作,【例16-1】刪除閃回表。SQL>settimeonSQL>createtablehr.mydep1asselect*fromhr.department;SQL>deletefromhr.mydep1wheredepartment_id=10;SQL>flashbacktablehr.mydep1totimestamp2totimestamp(to_tate(‘2012-04-0310:00:00’,‘yyyy-mm-ddhh24:mi:ss’));48【例16-1】刪除閃回表。14主要內(nèi)容16.1閃回技術(shù)概述16.2閃回數(shù)據(jù)庫16.3閃回表16.4閃回查詢16.5閃回版本查詢16.6閃回事務(wù)查詢16.7閃回丟棄16.8小結(jié)49主要內(nèi)容16.1閃回技術(shù)概述1516.4閃回查詢

閃回查詢是Oracle9i提出的概念,指利用數(shù)據(jù)庫回滾段存放的信息查看指定表中過去某個時間點的數(shù)據(jù)信息,或過去某個時間段數(shù)據(jù)的變化情況,或某個事務(wù)對該表的操作信息等。使用閃回查詢可以找到發(fā)生誤操作前的數(shù)據(jù)情況,為恢復(fù)數(shù)據(jù)庫提供依據(jù)。

要實現(xiàn)閃回查詢,必須將初始化參數(shù)UNDO_MANAGEMENT設(shè)置為AUTO,這是此參數(shù)的默認值。初始化參數(shù)UNDO_RETENTION決定了能往前閃回查詢的最大時間,值越大可以往前閃回查詢的最大時間越長,但占用的磁盤空間也越大。5016.4閃回查詢閃回查詢是Oracle9i提出

閃回查詢的SELECT語句的語法格式為:SELECTcolumn_name[,…]FROMtable_name[ASOFSCN|TIMESTAMPexpression][WHEREcondition]

可以基于ASOFTIMESTAMP的閃回查詢,也可以基于ASOFSCN的閃回查詢。

其實Oracle在內(nèi)部都是使用SCN的,即使指定的是ASOFTIMESTAMP,Oracle也會將其轉(zhuǎn)換成SCN。系統(tǒng)時間與SCN之間的對應(yīng)關(guān)系可以通過查詢SYS模式下的SMON_SCN_TIME表獲得。51閃回查詢的SELECT語句的語法格式為:17例如:SQL>settimeon創(chuàng)建示例表:SQL>createtablehr.mydep4asselect*fromhr.departments;刪除記錄:SQL>deletefromhr.mydep4wheredepartment_id=300;SQL>commit;使用select查詢不到剛才刪除的記錄,但使用閃回查詢可以找到:SQL>select*fromhr.mydep4asoftimestamp2totimestamp(to_date(‘2012-3-2810:30:00’,‘yyyy-mm-ddhh24:mi:ss’))3Wheredepartment_id=300;

52例如:18主要內(nèi)容16.1閃回技術(shù)概述16.2閃回數(shù)據(jù)庫16.3閃回表16.4閃回查詢16.5閃回版本查詢16.6閃回事務(wù)查詢16.7閃回丟棄16.8小結(jié)53主要內(nèi)容16.1閃回技術(shù)概述1916.5閃回版本查詢

Oracle的閃回版本查詢功能(FlashbackVersionQuery)提供了一個審計行改變的查詢功能,它能找到所有已經(jīng)提交了的行的記錄。借助這個特殊功能,我們可以查看一行記錄在一段時間內(nèi)的變化情況,即一行記錄的多個提交的版本信息,從而實現(xiàn)數(shù)據(jù)的行級恢復(fù)。使用該功能,可以輕松實現(xiàn)對應(yīng)用系統(tǒng)進行審計,而沒有必要使用細粒度的審計功能或者是使用LOGMNR了。語法格式為:SELECTcolumn_name[,…]FROMtable_name[VERSIONSBETWEENSCN|TIMESTAMPMINVALUE|expressionANDMAXVALUE|expression][ASOFSCN|TIMESTAMPexpression]WHEREcondition5416.5閃回版本查詢Oracle的閃回版本查詢

參數(shù)說明如下:

VERSIONSBETWEEN:用于指定閃回版本查詢時的時間段或SCN段;

ASOF:表示恢復(fù)單個版本;

TIMESTAMP:表示時間。

在進行閃回版本查詢時,可以同時使用VERSIONS短語和ASOF短語。

ASOF短語決定了進行查詢的時間點或SCN,VERSIONS短語決定了可見的行的版本信息。對于在VERSIONSBETWEEN下界之前開始的事務(wù),或在ASOF指定的時間或SCN之后完成的事務(wù),系統(tǒng)返回的版本信息為NULL。55 參數(shù)說明如下:21【例16-2】創(chuàng)建一個讀者信息表。SQL>createtablereader(idVarchar2(10),nameVarchar2(20));插入一條記錄:SQL>insertintoreadervalues(‘13100110’,‘zs’);更新表中數(shù)據(jù):SQL>updatereadersetid=’13100101’wherename=’zs’;提交:SQL>commit;使用閃回版本查詢:SQL>selectversions_starttime,versions_operation,id,name2fromreaderversionsbetweentimestampminvalueandmaxvalue;56【例16-2】創(chuàng)建一個讀者信息表。22執(zhí)行結(jié)果如圖16-1所示圖16-1閃回版本查詢57執(zhí)行結(jié)果如圖16-1所示23主要內(nèi)容16.1閃回技術(shù)概述16.2閃回數(shù)據(jù)庫16.3閃回表16.4閃回查詢16.5閃回版本查詢16.6閃回事務(wù)查詢16.7閃回丟棄16.8小結(jié)58主要內(nèi)容16.1閃回技術(shù)概述2416.6閃回事務(wù)查詢

事務(wù)是訪問數(shù)據(jù)庫時一系列的邏輯相關(guān)動作。Oracle11g的閃回事務(wù)查詢就是對過去某段時間內(nèi)所完成的事務(wù)的查詢和撤銷。

閃回事務(wù)查詢是一種診斷工具,用于幫助識別數(shù)據(jù)庫發(fā)生的事務(wù)級變化。通過閃回事務(wù)分析,可以識別在一個特定的時間段內(nèi)所發(fā)生的所有變化,也可以對數(shù)據(jù)庫表進行事務(wù)級恢復(fù)。閃回事務(wù)查詢的基礎(chǔ)仍然是依賴于撤銷數(shù)據(jù)(Undodata),它也是利用初始化的數(shù)據(jù)庫參數(shù)UNDO_RETENTION來確定已經(jīng)提交的撤銷數(shù)據(jù)在數(shù)據(jù)庫中的保存時間。

【例16-3】已經(jīng)提交的事務(wù),通過閃回事務(wù)查詢:SQL>CONNECTsys/zzuliASsysdbaSQL>selecttable_name,undo_sqlfromflashback_transaction_querywhererownum<5;5916.6閃回事務(wù)查詢事務(wù)是訪問數(shù)據(jù)庫時一系列的

其中,table_name表示事務(wù)所涉及的表名,undo_sql表示撤銷事務(wù)所要執(zhí)行的SQL語句。執(zhí)行結(jié)果如下:圖16-2閃回事務(wù)查詢60其中,table_name表示事務(wù)所涉及的表名,u主要內(nèi)容16.1閃回技術(shù)概述16.2閃回數(shù)據(jù)庫16.3閃回表16.4閃回查詢16.5閃回版本查詢16.6閃回事務(wù)查詢16.7閃回丟棄16.8小結(jié)61主要內(nèi)容16.1閃回技術(shù)概述2716.7閃回丟棄

閃回丟棄是將被丟棄的數(shù)據(jù)庫對象及其相關(guān)對象的復(fù)制保存在回收站中,以便在必要時能夠及時恢復(fù)這些對象。在回收站被清空之前,被丟棄的對象并沒有從數(shù)據(jù)庫中刪除,所以數(shù)據(jù)庫能夠恢復(fù)被意外或誤操作而刪除的表。

閃回丟棄功能的實現(xiàn)主要是通過Oracle數(shù)據(jù)庫中的“回收站”(RecycleBin)技術(shù)實現(xiàn)的?;厥照臼撬衼G棄表及其相依對象的邏輯存儲容器。當(dāng)一個表被丟棄(DROP),回收站會將該表及其相依對象存儲在回收站中。回收站是以表空間中現(xiàn)有的已經(jīng)分配的空間為基礎(chǔ),這使得回收站空間依賴于現(xiàn)有表空間中的可用空間(也就是說丟棄表占據(jù)的空間仍然需要計入表空間配額)。

溫馨提示

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

評論

0/150

提交評論