閃回技術ok課件_第1頁
閃回技術ok課件_第2頁
閃回技術ok課件_第3頁
閃回技術ok課件_第4頁
閃回技術ok課件_第5頁
已閱讀5頁,還剩83頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第12章閃回技術第12章閃回技術主要內(nèi)容閃回技術介紹閃回查詢閃回版本查詢閃回事務查詢閃回表閃回刪除閃回數(shù)據(jù)庫主要內(nèi)容閃回技術介紹12.1閃回技術介紹閃回基本概念閃回技術分類12.1閃回技術介紹閃回基本概念基本概念Oracle9i實現(xiàn)了基于回滾段的閃回查詢(FlashbackQuery)技術,即從回滾段中讀取一定時間內(nèi)對表進行操作的數(shù)據(jù),恢復錯誤的DML操作。在Oracle11g中,除提高了閃回查詢功能,實現(xiàn)了閃回版本查詢、閃回事務查詢外,還實現(xiàn)了閃回表、閃回刪除和閃回數(shù)據(jù)庫的功能。閃回技術是數(shù)據(jù)庫恢復技術歷史上一次重大的進步,從根本上改變了數(shù)據(jù)恢復。采用閃回技術,可以針對行級和事務級發(fā)生過變化的數(shù)據(jù)進行恢復,減少了數(shù)據(jù)恢復的時間,而且操作簡單,通過SQL語句就可以實現(xiàn)數(shù)據(jù)的恢復,大大提高了數(shù)據(jù)庫恢復的效率?;靖拍頞racle9i實現(xiàn)了基于回滾段的閃回查詢(Fla閃回技術分類閃回查詢(FlashbackQuery):查詢過去某個時間點或某個SCN值時表中的數(shù)據(jù)信息;閃回版本查詢(FlashbackVersionQuery):查詢過去某個時間段或某個SCN段內(nèi)表中數(shù)據(jù)的變化情況;閃回事務查詢(FlashbackTransactionQuery):查看某個事務或所有事務在過去一段時間對數(shù)據(jù)進行的修改;閃回表(FlashbackTable):將表恢復到過去的某個時間點或某個SCN值時的狀態(tài);閃回刪除(FlashbackDrop):將已經(jīng)刪除的表及其關聯(lián)對象恢復到刪除前的狀態(tài);閃回數(shù)據(jù)庫(FlashbackDatabase):將數(shù)據(jù)庫恢復到過去某個時間點或某個SCN值時的狀態(tài)。閃回技術分類閃回查詢(FlashbackQuery):查詢12.2閃回查詢閃回查詢的概念閃回查詢操作12.2閃回查詢閃回查詢的概念12.2.1閃回查詢的概念閃回查詢是指利用數(shù)據(jù)庫回滾段存放的信息查看指定表中過去某個時間點的數(shù)據(jù)信息,或過去某個時間段數(shù)據(jù)的變化情況,或某個事務對該表的操作信息等。為了使用閃回查詢功能,需要啟動數(shù)據(jù)庫撤銷表空間來管理回滾信息。與撤銷表空間相關的參數(shù)包括:

UNDO_MANAGEMENT:指定回滾段的管理方式,如果設置為AUTO,則采用撤銷表空間自動管理回滾信息;

UNDO_TABLESPACE:指定用于回滾信息自動管理的撤銷表空間名;

UNDO_RETENTIOIN:指定回滾信息的最長保留時間。

12.2.1閃回查詢的概念閃回查詢是指利用數(shù)據(jù)庫回滾段存放的12.2.2閃回查詢操作閃回查詢可以返回過去某個時間點已經(jīng)提交事務操作的結(jié)果。基本語法:SELECTcolumn_name[,…]FROMtable_name[ASOFSCN|TIMESTAMPexpression][WHEREcondition]基于ASOFTIMESTAMP的閃回查詢基于ASOFSCN的閃回查詢12.2.2閃回查詢操作閃回查詢可以返回過去某個時間點已經(jīng)提為方便測試,需要打開時間顯示SQL>ALTERSESSIONSETNLS_DAT_FORMAT=‘YYY-MM-DDHH24:MI:SS’;SQL>SETTIMEON;為方便測試,需要打開時間顯示20:57:35SQL>SELECTempno,salFROMscott.empWHEREempno=7369;EMPNOSAL----------------------------736980020:57:39SQL>UPDATEscott.empSETsal=2000WHEREempno=7369;20:57:59SQL>COMMIT;20:58:03SQL>UPDATEscott.empSETsal=2500WHEREempno=7369;20:58:54SQL>COMMIT;20:57:35SQL>SELECTempno,sal20:58:57SQL>SELECTempno,salFROMscott.empWHEREempno=7369;EMPNOSAL------------------------------7369250021:01:02SQL>SELECTempno,salFROMscott.empASOFTIMESTAMPSYSDATE-1/24WHEREempno=7369;EMPNOSAL---------------------------736980021:02:43SQL>SELECTempno,salFROMscott.empASOFTIMESTAMPTO_TIMESTAMP('2012-11-2220:58:10','YYYY-MM-DDHH24:MI:SS')WHEREempno=7369;EMPNOSAL----------------------------7369200020:58:57SQL>SELECTempno,sal下面是一個基于ASOFSCN的閃回查詢示例。21:08:34SQL>SELECTcurrent_scnFROMv$database;CURRENT_SCN-------------------145560021:08:37SQL>SELECTempno,salFROMscott.empWHEREempno=7369;EMPNOSAL---------------------------73692500下面是一個基于ASOFSCN的閃回查詢示例。21:09:08SQL>UPDATEscott.empSETsal=5000WHEREempno=7369;21:09:26SQL>COMMIT;21:09:44SQL>SELECTcurrent_scnFROMv$database;CURRENT_SCN--------------------145563421:09:53SQL>SELECTempno,salFROMscott.empASOFSCN1455600WHEREempno=7369;EMPNOSAL-----------------------------7369250021:09:08SQL>UPDATEscott.emp12.3閃回版本查詢閃回版本查詢的概念閃回版本查詢操作12.3閃回版本查詢閃回版本查詢的概念12.3.1閃回版本查詢的概念閃回版本查詢可以查詢一條記錄在一段時間內(nèi)的變化情況,即一條記錄的多個提交版本信息。閃回版本查詢的基本語法為:SELECTcolumn_name[,…]FROMtable_nameVERSIONSBETWEENSCN|TIMESTAMPMINVALUE|expressionANDMAXVALUE|expression[ASOFSCN|TIMESTAMPexpression]WHEREcondition12.3.1閃回版本查詢的概念閃回版本查詢可以查詢一條記錄在在閃回版本查詢的目標列中,可以使用下列偽列返回行的版本信息。VERSIONS_STARTTIME:基于時間的版本有效范圍的下界。VERSIONS_STARTSCN:基于SCN的版本有效范圍的下界。VERSIONS_ENDTIME:基于時間的版本有效范圍的上界。VERSIONS_ENDSCN:基于SCN的版本有效范圍的上界。VERSIONS_XID:操作的事務ID。VERSIONS_OPERATION:執(zhí)行操作的類型,I表示INSERT,D表示DELETE,U表示UPDATE。在閃回版本查詢的目標列中,可以使用下列偽列返回行的版本信息。13.3.2閃回版本查詢操作下面是一個閃回版本查詢示例。SQL>UPDATEscott.empSETsal=6000WHEREempno=7844;SQL>UPDATEscott.empSETsal=6000WHEREempno=7369;SQL>UPDATEscott.empSETsal=7000WHEREempno=7369;SQL>COMMIT;SQL>UPDATEscott.empSETsal=7500WHEREempno=7369;SQL>COMMIT;13.3.2閃回版本查詢操作下面是一個閃回版本查詢示例??梢曰赩ERSIONSBETWEENTIMESTAMP進行閃回版本查詢:SQL>SELECTversions_xidXID,versions_starttimeSTARTTIME,versions_endtimeENDTIME,versions_operationOPERATION,salFROMscott.empVERSIONSBETWEENTIMESTAMPMINVALUEANDMAXVALUEWHEREempno=7369ORDERBYSTARTTIME;可以基于VERSIONSBETWEENTIMESTAMP可以基于VERSIONSBETWEENSCN進行閃回版本查詢:SQL>SELECTversions_xidXID,versions_startscnSTARTSCN,versions_endscnENDSCN,versions_operationOPERATION,salFROMscott.empVERSIONSBETWEENSCNMINVALUEANDMAXVALUEWHEREempno=7369ORDERBYSTARTSCN;可以基于VERSIONSBETWEENSCN進行閃回版本12.4閃回事務查詢閃回事務查詢的概念閃回事務查詢操作12.4閃回事務查詢閃回事務查詢的概念12.4.1閃回事務查詢的概念閃回事務查詢可以返回在一個特定事務中行的歷史數(shù)據(jù)及與事務相關的元數(shù)據(jù),或返回在一個時間段內(nèi)所有事務的操作結(jié)果及事務的元數(shù)據(jù)。12.4.1閃回事務查詢的概念閃回事務查詢可以返回在一個特定在Oracle11g數(shù)據(jù)庫中,為了記錄事務操作的詳細信息,需要啟動數(shù)據(jù)庫的日志追加功能SQL>ALTERDATABASEADDSUPPLEMENTALLOGDATA;可以從FLASHBACK_TRANSATION_QUERY中查看撤銷表空間中存儲的事務信息在Oracle11g數(shù)據(jù)庫中,為了記錄事務操作的詳細信息,12.4.2閃回事務查詢操作通常,將閃回事務查詢與閃回版本查詢相結(jié)合,先利用閃回版本查詢獲取事務ID及事務操作結(jié)果,然后利用事務ID查詢事務的詳細操作信息。

SQL>SELECTversions_xid,salFROMscott.empVERSIONSBETWEENSCNMINVALUEANDMAXVALUEWHEREempno=7844;SQL>SELECToperation,undo_sqlFROMFLASHBACK_TRANSACTION_QUERYWHERExid=HEXTORAW('04001E002E01000012.4.2閃回事務查詢操作通常,將閃回事務查詢與閃回版本查12.5閃回表閃回表是將表及附屬對象一起恢復到以前的某個時刻的狀態(tài)。閃回表的操作實際上是對表進行DML操作。要對表進行閃回操作,需要啟動表的ROWMOVEMENT特性,其方法為:ALTERTABLEtableENABLEROWMOVEMENT;閃回表操作的基本語法為:FLASHBACKTABLE[schema.]tableTOSCN|TIMESTAMPexpression[ENABLE|DISABLETRIGGERS]12.5閃回表閃回表是將表及附屬對象一起恢復到以前的某個12.6閃回刪除閃回刪除的概念閃回刪除操作12.6閃回刪除閃回刪除的概念12.6.1閃回刪除的概念閃回刪除可恢復使用DROPTABLE語句刪除的表,是一種對意外刪除的表的恢復機制。在Oracle11g數(shù)據(jù)庫中,當執(zhí)行DROPTABLE操作時,并不立即回收表及其關聯(lián)對象的空間,而是將它們重命名后放入一個稱為“回收站”的邏輯容器中保存,直到用戶決定永久刪除它們或存儲該表的表空間存儲空間不足時,表才真正被刪除。為了使用閃回刪除技術,必須開啟數(shù)據(jù)庫的“回收站”。12.6.1閃回刪除的概念閃回刪除可恢復使用DROPTAB啟動“回收站”

要使用閃回刪除功能,需要啟動數(shù)據(jù)庫的“回收站”,即將參數(shù)RECYCLEBIN設置為ON。在默認情況下“回收站”已啟動。SQL>SHOWPARAMETERRECYCLEBINSQL>ALTERSYSTEMSETRECYCLEBIN=ON;啟動“回收站”查看“回收站”

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

FROMUSER_RECYCLEBIN;查看“回收站”12.6.2閃回刪除操作閃回刪除的基本語法為FLASHBACKTABLE[schema.]tableTOBEFOREDROP[RENAMETOnew_name]注意只有采用本地管理的、非系統(tǒng)表空間中的表可以使用閃回刪除操作。12.6.2閃回刪除操作閃回刪除的基本語法為示例SQL>CREATETABLEexample(IDNUMBERPRIMARYKEY,NAMECHAR(20));SQL>INSERTINTOexampleVALUES(1,'BEFOREDROP');SQL>COMMIT;SQL>DROPTABLEexample;SQL>FLASHBACKTABLEexampleTOBEFOREDROPRENAMETOnew_example;SQL>SELECT*FROMnew_example;IDNAME--------------1BEFOREDROP示例12.7閃回數(shù)據(jù)庫閃回數(shù)據(jù)庫的概念閃回數(shù)據(jù)庫操作12.7閃回數(shù)據(jù)庫閃回數(shù)據(jù)庫的概念12.7.1閃回數(shù)據(jù)庫的概念閃回數(shù)據(jù)庫技術是將數(shù)據(jù)庫快速恢復到過去的某個時間點或SCN值時的狀態(tài),以解決由于用戶錯誤操作或邏輯數(shù)據(jù)損壞引起的問題。閃回數(shù)據(jù)庫操作不需要使用備份重建數(shù)據(jù)文件,而只需要應用閃回日志文件和歸檔日志文件。為了使用數(shù)據(jù)庫閃回技術,需要預先設置數(shù)據(jù)庫的閃回恢復區(qū)和閃回日志保留時間。閃回恢復區(qū)用于保存數(shù)據(jù)庫運行過程中產(chǎn)生的閃回日志文件,而閃回日志保留時間是指閃回恢復區(qū)中的閃回日志文件保留的時間,即數(shù)據(jù)庫可以恢復到過去的最大時間。12.7.1閃回數(shù)據(jù)庫的概念閃回數(shù)據(jù)庫技術是將數(shù)據(jù)庫快速恢復閃回數(shù)據(jù)庫操作的限制:數(shù)據(jù)文件損壞或丟失等介質(zhì)故障不能使用閃回數(shù)據(jù)庫進行恢復。閃回數(shù)據(jù)庫只能基于當前正常運行的數(shù)據(jù)文件;閃回數(shù)據(jù)庫功能啟動后,如果發(fā)生數(shù)據(jù)庫控制文件重建或利用備份恢復控制文件,則不能使用閃回數(shù)據(jù)庫;不能使用閃回數(shù)據(jù)庫進行數(shù)據(jù)文件收縮操作;不能使用閃回數(shù)據(jù)庫將數(shù)據(jù)庫恢復到在閃回日志中可獲得最早的SCN之前的SCN,因為閃回日志文件在一定條件下被刪除,而不是始終保存在閃回恢復區(qū)中。閃回數(shù)據(jù)庫操作的限制:閃回數(shù)據(jù)庫功能需要滿足的條件:配置了數(shù)據(jù)庫的快速恢復區(qū)。數(shù)據(jù)庫必須運行在歸檔模式。在數(shù)據(jù)庫加載狀態(tài)下啟用數(shù)據(jù)庫的FLASHBACK特性。通過設置數(shù)據(jù)庫參數(shù)DB_FLASHBACK_RETENTION_TARGET,確定可以在多長時間內(nèi)閃回數(shù)據(jù)庫。。閃回數(shù)據(jù)庫功能需要滿足的條件:設置數(shù)據(jù)庫的歸檔模式SQL>CONNSYS/TIGERASSYSDBASQL>ARCHIVELOGLIST;SQL>SHUTDOWNIMMEDIATESQL>STARTUPMOUNTSQL>ALTERDATABASEARCHIVELOG;SQL>ALTERDATABASEOPEN;SQL>ALTERSYSTEMARCHIVELOGSTART;SQL>ARCHIVELOGLIST;設置數(shù)據(jù)庫的歸檔模式設置數(shù)據(jù)庫的閃回恢復區(qū)在Oracle11g數(shù)據(jù)庫安裝過程中,默認情況下已設置了數(shù)據(jù)庫的閃回恢復區(qū)??梢酝ㄟ^參數(shù)查詢數(shù)據(jù)閃回恢復區(qū)及其空間大小。SQL>SHOWPARAMETERDB_RECOVERY_FILE設置數(shù)據(jù)庫的閃回恢復區(qū)啟動數(shù)據(jù)庫FLASHBACK特性為了使用閃回數(shù)據(jù)庫,還需要啟動數(shù)據(jù)庫的FLASHBACK特性,生成閃回日志文件。在默認情況下,數(shù)據(jù)庫的FLASHBACK特性是關閉的。在數(shù)據(jù)庫處于MOUNT狀態(tài)時執(zhí)行ALTERDATABAEFLASHBACKON命令,啟動數(shù)據(jù)庫的FLASHBACK特性;需要通過參數(shù)DB_FLASHBACK_RETENTION_TARGET設置閃回日志保留時間,該參數(shù)默認值為1440分鐘,即一天。啟動數(shù)據(jù)庫FLASHBACK特性12.7.2閃回數(shù)據(jù)庫操作閃回數(shù)據(jù)庫基本語法為FLASHBACK[STANDBY]DATABASE[database]TO[SCN|TIMESTAMPexpression]|[BEFORESCN|TIMESTAMPexpression]參數(shù)說明STANDBY:指定執(zhí)行閃回的數(shù)據(jù)庫為備用數(shù)據(jù)庫;TOSCN:將數(shù)據(jù)庫恢復到指定SCN的狀態(tài);TOTIMESTAMP:將數(shù)據(jù)庫恢復到指定的時間點;TOBEFORESCN:將數(shù)據(jù)庫恢復到指定SCN的前一個SCN狀態(tài)TOBEFORETIMESTAMP:將數(shù)據(jù)庫恢復到指定時間點前一秒的狀態(tài)。12.7.2閃回數(shù)據(jù)庫操作閃回數(shù)據(jù)庫基本語法為查詢數(shù)據(jù)庫系統(tǒng)當前時間和當前SCN。SQL>SELECTSYSDATEFROMDUAL;SYSDATE-------------------2009-03-2512:36:19SQL>SELECTCURRENT_SCNFROMV$DATABASE;CURRENT_SCN-----------735884

查詢數(shù)據(jù)庫系統(tǒng)當前時間和當前SCN。查詢數(shù)據(jù)庫中當前最早的閃回SCN和時間。SQL>SELECTOLDEST_FLASHBACK_SCN,OLDEST_FLASHBACK_TIMEFROMV$FLASHBACK_DATABASE_LOG;OLDEST_FLASHBACK_SCNLDEST_FLASHBACK_TI---------------------------------------------------------7309552009-03-2510:26:50

查詢數(shù)據(jù)庫中當前最早的閃回SCN和時間。改變數(shù)據(jù)庫的當前狀態(tài)。SQL>SETTIMEON12:37:38SQL>CREATETABLEtest_flashback(IDNUMBER,NAMECHAR(20));12:37:45SQL>INSERTINTOtest_flashbackVALUES(1,'DATABASE');12:37:52SQL>COMMIT;

改變數(shù)據(jù)庫的當前狀態(tài)。進行閃回數(shù)據(jù)庫恢復,將數(shù)據(jù)庫恢復到創(chuàng)建表之前的狀態(tài)。12:37:56SQL>SHUTDOWNIMMEDIATE12:38:49SQL>STARTUPMOUNTEXCLUSIVE12:43:42SQL>FLASHBACKDATABASETOTIMESTAMP(TO_TIMESTAMP('2009-3-2511:00:00','YYYY-MM-DDHH24:MI:SS'));12:44:38SQL>ALTERDATABASEOPENRESETLOGS;進行閃回數(shù)據(jù)庫恢復,將數(shù)據(jù)庫恢復到創(chuàng)建表之前的狀態(tài)。驗證數(shù)據(jù)庫的狀態(tài)(test_flashback表應該不存在)。12:44:58SQL>SELECT*FROMtest_flashback;SELECT*FROMtest_flashback*第1行出現(xiàn)錯誤:ORA-00942:表或視圖不存在驗證數(shù)據(jù)庫的狀態(tài)(test_flashback表應該不存在)總結(jié)閃回查詢操作閃回版本查詢操作閃回事務查詢操作閃回表操作閃回刪除操作閃回數(shù)據(jù)庫操作總結(jié)閃回查詢操作第12章閃回技術第12章閃回技術主要內(nèi)容閃回技術介紹閃回查詢閃回版本查詢閃回事務查詢閃回表閃回刪除閃回數(shù)據(jù)庫主要內(nèi)容閃回技術介紹12.1閃回技術介紹閃回基本概念閃回技術分類12.1閃回技術介紹閃回基本概念基本概念Oracle9i實現(xiàn)了基于回滾段的閃回查詢(FlashbackQuery)技術,即從回滾段中讀取一定時間內(nèi)對表進行操作的數(shù)據(jù),恢復錯誤的DML操作。在Oracle11g中,除提高了閃回查詢功能,實現(xiàn)了閃回版本查詢、閃回事務查詢外,還實現(xiàn)了閃回表、閃回刪除和閃回數(shù)據(jù)庫的功能。閃回技術是數(shù)據(jù)庫恢復技術歷史上一次重大的進步,從根本上改變了數(shù)據(jù)恢復。采用閃回技術,可以針對行級和事務級發(fā)生過變化的數(shù)據(jù)進行恢復,減少了數(shù)據(jù)恢復的時間,而且操作簡單,通過SQL語句就可以實現(xiàn)數(shù)據(jù)的恢復,大大提高了數(shù)據(jù)庫恢復的效率?;靖拍頞racle9i實現(xiàn)了基于回滾段的閃回查詢(Fla閃回技術分類閃回查詢(FlashbackQuery):查詢過去某個時間點或某個SCN值時表中的數(shù)據(jù)信息;閃回版本查詢(FlashbackVersionQuery):查詢過去某個時間段或某個SCN段內(nèi)表中數(shù)據(jù)的變化情況;閃回事務查詢(FlashbackTransactionQuery):查看某個事務或所有事務在過去一段時間對數(shù)據(jù)進行的修改;閃回表(FlashbackTable):將表恢復到過去的某個時間點或某個SCN值時的狀態(tài);閃回刪除(FlashbackDrop):將已經(jīng)刪除的表及其關聯(lián)對象恢復到刪除前的狀態(tài);閃回數(shù)據(jù)庫(FlashbackDatabase):將數(shù)據(jù)庫恢復到過去某個時間點或某個SCN值時的狀態(tài)。閃回技術分類閃回查詢(FlashbackQuery):查詢12.2閃回查詢閃回查詢的概念閃回查詢操作12.2閃回查詢閃回查詢的概念12.2.1閃回查詢的概念閃回查詢是指利用數(shù)據(jù)庫回滾段存放的信息查看指定表中過去某個時間點的數(shù)據(jù)信息,或過去某個時間段數(shù)據(jù)的變化情況,或某個事務對該表的操作信息等。為了使用閃回查詢功能,需要啟動數(shù)據(jù)庫撤銷表空間來管理回滾信息。與撤銷表空間相關的參數(shù)包括:

UNDO_MANAGEMENT:指定回滾段的管理方式,如果設置為AUTO,則采用撤銷表空間自動管理回滾信息;

UNDO_TABLESPACE:指定用于回滾信息自動管理的撤銷表空間名;

UNDO_RETENTIOIN:指定回滾信息的最長保留時間。

12.2.1閃回查詢的概念閃回查詢是指利用數(shù)據(jù)庫回滾段存放的12.2.2閃回查詢操作閃回查詢可以返回過去某個時間點已經(jīng)提交事務操作的結(jié)果?;菊Z法:SELECTcolumn_name[,…]FROMtable_name[ASOFSCN|TIMESTAMPexpression][WHEREcondition]基于ASOFTIMESTAMP的閃回查詢基于ASOFSCN的閃回查詢12.2.2閃回查詢操作閃回查詢可以返回過去某個時間點已經(jīng)提為方便測試,需要打開時間顯示SQL>ALTERSESSIONSETNLS_DAT_FORMAT=‘YYY-MM-DDHH24:MI:SS’;SQL>SETTIMEON;為方便測試,需要打開時間顯示20:57:35SQL>SELECTempno,salFROMscott.empWHEREempno=7369;EMPNOSAL----------------------------736980020:57:39SQL>UPDATEscott.empSETsal=2000WHEREempno=7369;20:57:59SQL>COMMIT;20:58:03SQL>UPDATEscott.empSETsal=2500WHEREempno=7369;20:58:54SQL>COMMIT;20:57:35SQL>SELECTempno,sal20:58:57SQL>SELECTempno,salFROMscott.empWHEREempno=7369;EMPNOSAL------------------------------7369250021:01:02SQL>SELECTempno,salFROMscott.empASOFTIMESTAMPSYSDATE-1/24WHEREempno=7369;EMPNOSAL---------------------------736980021:02:43SQL>SELECTempno,salFROMscott.empASOFTIMESTAMPTO_TIMESTAMP('2012-11-2220:58:10','YYYY-MM-DDHH24:MI:SS')WHEREempno=7369;EMPNOSAL----------------------------7369200020:58:57SQL>SELECTempno,sal下面是一個基于ASOFSCN的閃回查詢示例。21:08:34SQL>SELECTcurrent_scnFROMv$database;CURRENT_SCN-------------------145560021:08:37SQL>SELECTempno,salFROMscott.empWHEREempno=7369;EMPNOSAL---------------------------73692500下面是一個基于ASOFSCN的閃回查詢示例。21:09:08SQL>UPDATEscott.empSETsal=5000WHEREempno=7369;21:09:26SQL>COMMIT;21:09:44SQL>SELECTcurrent_scnFROMv$database;CURRENT_SCN--------------------145563421:09:53SQL>SELECTempno,salFROMscott.empASOFSCN1455600WHEREempno=7369;EMPNOSAL-----------------------------7369250021:09:08SQL>UPDATEscott.emp12.3閃回版本查詢閃回版本查詢的概念閃回版本查詢操作12.3閃回版本查詢閃回版本查詢的概念12.3.1閃回版本查詢的概念閃回版本查詢可以查詢一條記錄在一段時間內(nèi)的變化情況,即一條記錄的多個提交版本信息。閃回版本查詢的基本語法為:SELECTcolumn_name[,…]FROMtable_nameVERSIONSBETWEENSCN|TIMESTAMPMINVALUE|expressionANDMAXVALUE|expression[ASOFSCN|TIMESTAMPexpression]WHEREcondition12.3.1閃回版本查詢的概念閃回版本查詢可以查詢一條記錄在在閃回版本查詢的目標列中,可以使用下列偽列返回行的版本信息。VERSIONS_STARTTIME:基于時間的版本有效范圍的下界。VERSIONS_STARTSCN:基于SCN的版本有效范圍的下界。VERSIONS_ENDTIME:基于時間的版本有效范圍的上界。VERSIONS_ENDSCN:基于SCN的版本有效范圍的上界。VERSIONS_XID:操作的事務ID。VERSIONS_OPERATION:執(zhí)行操作的類型,I表示INSERT,D表示DELETE,U表示UPDATE。在閃回版本查詢的目標列中,可以使用下列偽列返回行的版本信息。13.3.2閃回版本查詢操作下面是一個閃回版本查詢示例。SQL>UPDATEscott.empSETsal=6000WHEREempno=7844;SQL>UPDATEscott.empSETsal=6000WHEREempno=7369;SQL>UPDATEscott.empSETsal=7000WHEREempno=7369;SQL>COMMIT;SQL>UPDATEscott.empSETsal=7500WHEREempno=7369;SQL>COMMIT;13.3.2閃回版本查詢操作下面是一個閃回版本查詢示例。可以基于VERSIONSBETWEENTIMESTAMP進行閃回版本查詢:SQL>SELECTversions_xidXID,versions_starttimeSTARTTIME,versions_endtimeENDTIME,versions_operationOPERATION,salFROMscott.empVERSIONSBETWEENTIMESTAMPMINVALUEANDMAXVALUEWHEREempno=7369ORDERBYSTARTTIME;可以基于VERSIONSBETWEENTIMESTAMP可以基于VERSIONSBETWEENSCN進行閃回版本查詢:SQL>SELECTversions_xidXID,versions_startscnSTARTSCN,versions_endscnENDSCN,versions_operationOPERATION,salFROMscott.empVERSIONSBETWEENSCNMINVALUEANDMAXVALUEWHEREempno=7369ORDERBYSTARTSCN;可以基于VERSIONSBETWEENSCN進行閃回版本12.4閃回事務查詢閃回事務查詢的概念閃回事務查詢操作12.4閃回事務查詢閃回事務查詢的概念12.4.1閃回事務查詢的概念閃回事務查詢可以返回在一個特定事務中行的歷史數(shù)據(jù)及與事務相關的元數(shù)據(jù),或返回在一個時間段內(nèi)所有事務的操作結(jié)果及事務的元數(shù)據(jù)。12.4.1閃回事務查詢的概念閃回事務查詢可以返回在一個特定在Oracle11g數(shù)據(jù)庫中,為了記錄事務操作的詳細信息,需要啟動數(shù)據(jù)庫的日志追加功能SQL>ALTERDATABASEADDSUPPLEMENTALLOGDATA;可以從FLASHBACK_TRANSATION_QUERY中查看撤銷表空間中存儲的事務信息在Oracle11g數(shù)據(jù)庫中,為了記錄事務操作的詳細信息,12.4.2閃回事務查詢操作通常,將閃回事務查詢與閃回版本查詢相結(jié)合,先利用閃回版本查詢獲取事務ID及事務操作結(jié)果,然后利用事務ID查詢事務的詳細操作信息。

SQL>SELECTversions_xid,salFROMscott.empVERSIONSBETWEENSCNMINVALUEANDMAXVALUEWHEREempno=7844;SQL>SELECToperation,undo_sqlFROMFLASHBACK_TRANSACTION_QUERYWHERExid=HEXTORAW('04001E002E01000012.4.2閃回事務查詢操作通常,將閃回事務查詢與閃回版本查12.5閃回表閃回表是將表及附屬對象一起恢復到以前的某個時刻的狀態(tài)。閃回表的操作實際上是對表進行DML操作。要對表進行閃回操作,需要啟動表的ROWMOVEMENT特性,其方法為:ALTERTABLEtableENABLEROWMOVEMENT;閃回表操作的基本語法為:FLASHBACKTABLE[schema.]tableTOSCN|TIMESTAMPexpression[ENABLE|DISABLETRIGGERS]12.5閃回表閃回表是將表及附屬對象一起恢復到以前的某個12.6閃回刪除閃回刪除的概念閃回刪除操作12.6閃回刪除閃回刪除的概念12.6.1閃回刪除的概念閃回刪除可恢復使用DROPTABLE語句刪除的表,是一種對意外刪除的表的恢復機制。在Oracle11g數(shù)據(jù)庫中,當執(zhí)行DROPTABLE操作時,并不立即回收表及其關聯(lián)對象的空間,而是將它們重命名后放入一個稱為“回收站”的邏輯容器中保存,直到用戶決定永久刪除它們或存儲該表的表空間存儲空間不足時,表才真正被刪除。為了使用閃回刪除技術,必須開啟數(shù)據(jù)庫的“回收站”。12.6.1閃回刪除的概念閃回刪除可恢復使用DROPTAB啟動“回收站”

要使用閃回刪除功能,需要啟動數(shù)據(jù)庫的“回收站”,即將參數(shù)RECYCLEBIN設置為ON。在默認情況下“回收站”已啟動。SQL>SHOWPARAMETERRECYCLEBINSQL>ALTERSYSTEMSETRECYCLEBIN=ON;啟動“回收站”查看“回收站”

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

FROMUSER_RECYCLEBIN;查看“回收站”12.6.2閃回刪除操作閃回刪除的基本語法為FLASHBACKTABLE[schema.]tableTOBEFOREDROP[RENAMETOnew_name]注意只有采用本地管理的、非系統(tǒng)表空間中的表可以使用閃回刪除操作。12.6.2閃回刪除操作閃回刪除的基本語法為示例SQL>CREATETABLEexample(IDNUMBERPRIMARYKEY,NAMECHAR(20));SQL>INSERTINTOexampleVALUES(1,'BEFOREDROP');SQL>COMMIT;SQL>DROPTABLEexample;SQL>FLASHBACKTABLEexampleTOBEFOREDROPRENAMETOnew_example;SQL>SELECT*FROMnew_example;IDNAME--------------1BEFOREDROP示例12.7閃回數(shù)據(jù)庫閃回數(shù)據(jù)庫的概念閃回數(shù)據(jù)庫操作12.7閃回數(shù)據(jù)庫閃回數(shù)據(jù)庫的概念12.7.1閃回數(shù)據(jù)庫的概念閃回數(shù)據(jù)庫技術是將數(shù)據(jù)庫快速恢復到過去的某個時間點或SCN值時的狀態(tài),以解決由于用戶錯誤操作或邏輯數(shù)據(jù)損壞引起的問題。閃回數(shù)據(jù)庫操作不需要使用備份重建數(shù)據(jù)文件,而只需要應用閃回日志文件和歸檔日志文件。為了使用數(shù)據(jù)庫閃回技術,需要預先設置數(shù)據(jù)庫的閃回恢復區(qū)和閃回日志保留時間。閃回恢復區(qū)用于保存數(shù)據(jù)庫運行過程中產(chǎn)生的閃回日志文件,而閃回日志保留時間是指閃回恢復區(qū)中的閃回日志文件保留的時間,即數(shù)據(jù)庫可以恢復到過去的最大時間。12.7.1閃回數(shù)據(jù)庫的概念閃回數(shù)據(jù)庫技術是將數(shù)據(jù)庫快速恢復閃回數(shù)據(jù)庫操作的限制:數(shù)據(jù)文件損壞或丟失等介質(zhì)故障不能使用閃回數(shù)據(jù)庫進行恢復。閃回數(shù)據(jù)庫只能基于當前正常運行的數(shù)據(jù)文件;閃回數(shù)據(jù)庫功能啟動后,如果發(fā)生數(shù)據(jù)庫控制文件重建或利用備份恢復控制文件,則不能使用閃回數(shù)據(jù)庫;不能使用閃回數(shù)據(jù)庫進行數(shù)據(jù)文件收縮操作;不能使用閃回數(shù)據(jù)庫將數(shù)據(jù)庫恢復到在閃回日志中可獲得最早的SCN之前的SCN,因為閃回日志文件在一定條件下被刪除,而不是始終保存在閃回恢復區(qū)中。閃回數(shù)據(jù)庫操作的限制:閃回數(shù)據(jù)庫功能需要滿足的條件:配置了數(shù)據(jù)庫的快速恢復區(qū)。數(shù)據(jù)庫必須運行在歸檔模式。在數(shù)據(jù)庫加載狀態(tài)下啟用數(shù)據(jù)庫的FLASHBACK特性。通過設置數(shù)據(jù)庫參數(shù)DB_FLASHBACK_RETENTION_TARGET,確定可以在多長時間內(nèi)閃回數(shù)據(jù)庫。。閃回數(shù)據(jù)庫功能需要滿足的條件:設置數(shù)據(jù)庫的歸檔模式SQL>CONNSYS/TIGERASSYSDBASQL>ARCHIVELOGLIST;SQL>SHUTDOWNIMMEDIATESQL>STARTUPMOUNTSQL>ALTERDATABASEARCHIVELOG;SQL>ALTERDATABASEOPEN;SQL>ALTERSYSTEMARCHIVELOGSTART;SQL>ARCHIVELOGLIST;設置數(shù)據(jù)庫的歸檔模式設置數(shù)據(jù)庫的閃回恢復區(qū)在Oracle11g數(shù)據(jù)庫安裝過程中,默認情況下已設置了數(shù)據(jù)庫的閃回恢復區(qū)??梢酝ㄟ^參數(shù)查詢數(shù)據(jù)閃回恢復區(qū)及其空間大小。SQL>SHOWPARAMETERDB_RECOVERY_FILE設置數(shù)據(jù)庫的閃回恢復區(qū)啟動數(shù)據(jù)庫FLASHBACK特性為了使用閃回數(shù)據(jù)庫,還需要啟動數(shù)據(jù)庫的FLASHBACK特性,生成閃回日志文件。在默認情況下,數(shù)據(jù)庫的FLASHBACK特性是關閉的。在數(shù)據(jù)庫處于MOUNT狀態(tài)時執(zhí)行ALTERDATABAEFLASHBACKON命令,啟動數(shù)據(jù)庫的FLASHBACK特性;需要通過參數(shù)DB_FLASHBACK_RETENTION_TARGET設置閃回日志保留時間,該參數(shù)默認值為1440分鐘,即一天。啟動數(shù)據(jù)庫FLASHBACK特性12.7.2閃回數(shù)據(jù)庫操作閃回數(shù)據(jù)庫基本語法為FLASHBACK[STANDBY]DATABASE[database]TO[SCN|TIMESTAMPexpression]|[BEFORESCN|TIMESTAMPexpression]參數(shù)說明STANDBY:指定執(zhí)行閃回的數(shù)據(jù)庫為備用數(shù)據(jù)庫;TOSCN:將數(shù)據(jù)庫恢復到指定SCN的狀態(tài);TOTIMESTAMP:將數(shù)據(jù)庫恢復到指定的時間點;TOBEFORESCN:將數(shù)據(jù)庫恢復到指定SCN的前一個SCN狀態(tài)TOBEFORETIMESTAMP:將數(shù)據(jù)庫恢復到指定時間點前一秒的狀態(tài)。12.7.2閃回數(shù)據(jù)庫操作閃回數(shù)據(jù)庫基本語法為查詢數(shù)據(jù)庫系統(tǒng)當前時間和當前SCN。SQL>SELECTSYSDATEFROMDUAL;SYSDATE-------------------2009-03-2512:36:19SQL>SELECTCURRENT_SCNFROMV$DATABASE;CURRENT_SCN-----------735884

查詢數(shù)據(jù)庫系統(tǒng)當前時間和當前SCN。查詢數(shù)據(jù)庫中當前最早的閃回SCN和時間。SQL>SELECTOLDEST_FLA

溫馨提示

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

評論

0/150

提交評論