oracle數(shù)據(jù)庫執(zhí)行閃回恢復(fù)數(shù)據(jù)_第1頁
oracle數(shù)據(jù)庫執(zhí)行閃回恢復(fù)數(shù)據(jù)_第2頁
oracle數(shù)據(jù)庫執(zhí)行閃回恢復(fù)數(shù)據(jù)_第3頁
oracle數(shù)據(jù)庫執(zhí)行閃回恢復(fù)數(shù)據(jù)_第4頁
oracle數(shù)據(jù)庫執(zhí)行閃回恢復(fù)數(shù)據(jù)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Oracle10g閃回操作引言問題:前一段有一畢業(yè)學(xué)生問我一個(gè)問題:不小心執(zhí)行了一個(gè)update操作,把公司一個(gè)非常關(guān)鍵的表中某列數(shù)據(jù)全部改成了某個(gè)值。如果我把某個(gè)表誤刪除了,應(yīng)該怎么辦?如果想讓整個(gè)數(shù)據(jù)庫恢復(fù)到某個(gè)時(shí)間點(diǎn),應(yīng)該怎么辦?據(jù)調(diào)查約40%的系統(tǒng)問題是人為的錯(cuò)誤引起的,這些人為的錯(cuò)誤又特別難以避免。傳統(tǒng)上當(dāng)發(fā)生數(shù)據(jù)丟失、數(shù)據(jù)錯(cuò)誤問題時(shí),解決的主要方法就是數(shù)據(jù)的導(dǎo)入/導(dǎo)出、備份/恢復(fù)技術(shù)。這些方法都需要發(fā)生數(shù)據(jù)錯(cuò)誤之前有一個(gè)正確的備份,才能進(jìn)行恢復(fù)?;謴?fù)時(shí)不取決于錯(cuò)誤程度,而只取決于備份/恢復(fù)策略。這種方法既耗時(shí)又使數(shù)據(jù)庫系統(tǒng)不能提供服務(wù),對(duì)于一些用戶偶然地刪除數(shù)據(jù)這類小錯(cuò)誤來說顯得有些“大材小用”。那么如何來恢復(fù)這種偶然的錯(cuò)誤操作造成的數(shù)據(jù)丟失呢?從Oracle9i開始提供了閃回功能,可用于恢復(fù)錯(cuò)誤的DML操作。在Oracle10g中對(duì)閃回功能做了較大改進(jìn),不再局限于閃回查詢,還可用于恢復(fù)錯(cuò)誤的DDL(Drop)操作、閃回表、閃回?cái)?shù)據(jù)庫等。閃回技術(shù):優(yōu)點(diǎn)閃回技術(shù)的革命性:對(duì)于意外導(dǎo)致數(shù)據(jù)破壞的造作,可以使用更簡單方法恢復(fù)。傳統(tǒng)修復(fù)技術(shù)耗時(shí)長.整個(gè)數(shù)據(jù)庫的數(shù)據(jù)文件需要恢復(fù),包括未丟失文件.需要所有日志文件.閃回操作迅速.行和事務(wù)的變更由索引控制.只恢復(fù)改變的數(shù)據(jù).閃回命令簡易.不需要復(fù)雜的修復(fù)步驟.閃回各種錯(cuò)誤閃回將數(shù)據(jù)庫恢復(fù)到先前的時(shí)間點(diǎn).閃回表將表內(nèi)容修復(fù)到過去某個(gè)時(shí)間,不需要備份文檔.閃回Drop操作恢復(fù)整張被意外刪除的表.閃回?cái)?shù)據(jù)庫:概述閃回?cái)?shù)據(jù)庫操作:將數(shù)據(jù)庫’反卷’到過去某個(gè)時(shí)間點(diǎn)可以用來恢復(fù)用戶邏輯錯(cuò)誤數(shù)據(jù)庫邏輯損壞數(shù)據(jù)庫返回到以前狀態(tài)按下’返回’鍵用戶錯(cuò)誤操作.如何啟用Oracle10g閃回?cái)?shù)據(jù)庫特性默認(rèn)數(shù)據(jù)庫閃回操作沒有打開1.確認(rèn)當(dāng)前模式

SQL>selectflashback_onfromv$database;

2.檢查/修改恢復(fù)區(qū)設(shè)置

SQL>showparameterdb_recovery_file_dest

3.檢查/修改閃回時(shí)間設(shè)置

SQL>showparameterdb_flashback_retention_target

SQL>altersystemsetdb_flashback_retention_target=1440;

4.重新啟動(dòng)數(shù)據(jù)庫到Mount狀態(tài)

啟動(dòng)flashbackdatabase選項(xiàng)。

SQL>shutdownimmediate;

SQL>startupmount;

SQL>alterdatabaseflashbackon;

--可以看到,flashback還必須要?dú)w檔的保證應(yīng)該先執(zhí)行archiveloglist;

alterdatabasearchivelog;SQL>alterdatabaseopen;準(zhǔn)備測試數(shù)據(jù)Selectsysdatefromdual;Altersessionsetnls_date_format=‘yyyy-mm-ddhh24:mi:ss’;SELECTOLDEST_FLASHBACK_SCN,OLDEST_FLASHBACK_TIMEFROMV$FLASHBACK_DATABASE_LOG;--通過以上SQL我們可以知道,可以前滾恢復(fù)到的最早的SCN與時(shí)間點(diǎn)是多少,如果沒有確保flashbackdatabase,該視圖將沒有查詢結(jié)果。selectsysdatefromdual;

createtablesjh1asselect*fromdba_users;selectsysdatefromdual;

進(jìn)行閃回操作shutdownimmediate;

startupmount

altersessionsetnls_date_format='yyyy-mm-ddhh24:mi:ss';SELECTOLDEST_FLASHBACK_SCN,OLDEST_FLASHBACK_TIMEFROMV$FLASHBACK_DATABASE_LOG;flashbackdatabasetotimestampto_timestamp('2009-03-2517:01:55','yyyy-mm-ddhh24:mi:ss');alterdatabaseopenreadonly;descsjh0;

alterdatabaseclose;進(jìn)行閃回操作flashbackdatabasetotimestampto_timestamp(‘2009-03-2517:03:18’,‘yyyy-mm-ddhh24:mi:ss’);--閃回到創(chuàng)建表之后時(shí)間點(diǎn)alterdatabaseopen;alterdatabaseopenreadonly;alterdatabasedismount;startupmount;

shutdownimmediatestartupmount;

alterdatabaseopen;

alterdatabaseopenresetlogs;descsjh0

閃回?cái)?shù)據(jù)庫:節(jié)省恢復(fù)時(shí)間BackupUsererrorApplylogs

forwardRestorefilesGeneratelogsRepaired

databaseIncompleteRecoveryBackupUser

errorApplyFlashbacklogsbackwardFlashbacklogsRepaired

databaseFlashbackDatabase閃回?cái)?shù)據(jù)庫:注意事項(xiàng)當(dāng)閃回?cái)?shù)據(jù)庫操作完成后,數(shù)據(jù)庫應(yīng)該在下列方式下打開:在只讀方式下驗(yàn)證當(dāng)前數(shù)據(jù)庫的狀態(tài)是否正確讀寫方式下,打開使用RESETLOGS參數(shù)閃回?cái)?shù)據(jù)庫:局限以下情況不可以使用閃回:舊控制文件被恢復(fù)或重新建立.表空間被刪除.數(shù)據(jù)文件被減小.PresentFlashbacktargettimeDroptablespace.Shrinkdatafile.Re-createcontrolfile.允許數(shù)據(jù)庫閃回(EM)閃回表:概述閃回表操作將表恢復(fù)到某個(gè)特定時(shí)間.閃回表操作是在線操作.數(shù)據(jù)庫保持打開狀態(tài).UserErroneous

DMLsFlashedback

tables閃回表使用閃回表操作,可以將表恢復(fù)到某個(gè)時(shí)間而不需要備份資料.執(zhí)行閃回操作是,數(shù)據(jù)從undo表空間中提取.用戶需要FLASHBACK

TABLE權(quán)限.需要行可移動(dòng)特征允許表的行可移特征ALTERTABLEemployeesENABLEROWMOVEMENT;執(zhí)行閃回表操作FLASHBACKTABLEhr.employeesTOTIMESTAMP TO_TIMESTAMP('2005-05-05

05:32:00', 'YYYY-MM-DD

HH24:MI:SS');閃回表開始閃回,表要有行移動(dòng)的特性ALTERTABLEscott.emp1ENABLEROWMOVEMENT;閃回的15分鐘前,或者指定的scn號(hào)碼FLASHBACKTABLEscott.emp1TOTIMESTAMP(SYSDATE-1/96);FLASHBACKTABLEscott.emp1TOscn(1349117);閃回表操作:注意事項(xiàng)FLASHBACK

TABLE命令是單一事務(wù),自動(dòng)獲得排它DML鎖.對(duì)象的統(tǒng)計(jì)信息不能閃回.當(dāng)前索引和依賴對(duì)象被保留.閃回表操作局限與特性:不能對(duì)系統(tǒng)表進(jìn)行閃回不能橫跨DDL操作操作細(xì)節(jié)寫入alertlog文件中閃回Drop:概述DROPTABLEemployees;FLASHBACKTABLE

employees

TOBEFOREDROP;錯(cuò)誤產(chǎn)生Recycle

Bin閃回dropOracle10g提供了flashbackdrop的功能。而在以前的版本中,通常只能進(jìn)行不完全恢復(fù)。Oracle10g的flashbackdrop功能,允許你從當(dāng)前數(shù)據(jù)庫中恢復(fù)一個(gè)被drop了的對(duì)象,在執(zhí)行drop操作時(shí),現(xiàn)在Oracle不是真正刪除它,而是將該對(duì)象自動(dòng)將放入回收站。對(duì)于一個(gè)對(duì)象的刪除,其實(shí)僅僅就是簡單的重命名操作。所謂的回收站,是一個(gè)虛擬的容器,用于存放所有被刪除的對(duì)象。在回收站中,被刪除的對(duì)象將占用創(chuàng)建時(shí)的同樣的空間,你甚至還可以對(duì)已經(jīng)刪除的表查詢,也可以利用flashback功能來恢復(fù)它,這個(gè)就是flashbackdrop功能。回收站內(nèi)的相關(guān)信息可以從recyclebin,user_recyclebin,dba_recyclebin等視圖中獲取,或者通過SQL*Plus的showrecyclebin命令查看。

在EnterpriseManager中執(zhí)行閃回DROP操作Dependentbitmapindex

willalsobeflashedback.閃回dropcreatetablet_userasselect*fromdba_users;--如果是sys用戶selectcount(*)from

t_user;droptable

t_user;showrecyclebin;

--sysdba的drop操作不會(huì)被記錄。Conn

scott/oraclecreatetablet_userasselect*fromdba_users;

selectcount(*)from

t_user;droptable

t_user;Desc

t_usershowrecyclebin;flashbacktablet_usertobeforedrop;Desc

t_userselectcount(*)from

t_user;showrecyclebin;purgetablet_user;

--從回收站清除。showrecyclebin;droptablet_userpurge;

--徹底刪除一個(gè)表,不讓進(jìn)入回收站。showrecyclebin;--沒有對(duì)象。閃回Drop:注意事項(xiàng)閃回Drop表在以下情形下失效:SYSTEM表空間的表使用fine-grained審計(jì)或VirtualPrivate數(shù)據(jù)庫數(shù)據(jù)字典表表由于表空間不夠被主動(dòng)或被動(dòng)刪除以下依賴性不被保護(hù):Bitmap-join索引MaterializedviewlogsReferentialintegrity鍵刪除索引在表刪除之前閃回dml查詢Oracle10g對(duì)于閃回查詢進(jìn)行了增強(qiáng),支持更簡單的SQL操作,允許對(duì)誤刪除、誤更新等DML操作進(jìn)行閃回。createtablet_userasselect*fromdba_users;selectcount(*)fromt_user;Deletefromt_user;Commit;Selectcount(*)fromt_user;selectdbms_flashback.get_system_change_numberfromdual;Conn/assysdbaselectdbms_flashback.get_system_change_numberfromdual;selectcount(*)fromt_userasofscn1388190;Connscott/oracleselectcount(*)fromt_userasofscn1388193;selectcount(*)fromt_userasofscn1388190;--在scn1388190的時(shí)刻數(shù)據(jù)都還在。insertintot_userselect*fromt_userasofscn1388190;selectcount(*)fromt_user;--數(shù)據(jù)返回閃回查詢:概述t1t2SELECTemployee_id,salaryFROMemployeesASOFTIMESTAMPt1WHEREemployee_id=200EmployeesEmployeesUnwanted

updates閃回查詢:示例11:0011:10UPDATEemployeesSETsalary= (SELECTsalaryFROMemployees ASOFTIMESTAMPTO_TIMESTAMP('2005-05-04

11:00:00',

'yyyy-mm-dd

hh24:mi:ss') WHEREemployee_id=200)WHEREemployee_id=200EmployeesEmployeessalary=4,400Employeessalary=4,400salary=4,840使用FlashbackversionQuerycreatetablesjh0asselectusername,user_idfromdba_users;Descsjh0select*fromsjh0;

deletefromsjh0whereusername='SYS';DELETEFROMsjh0whereusername='SYSTEM';

UPDATEsjh0setuser_id=0whereusername='SJH';commit;updatesjh0setuser_id=1whereusername='SCOTT';commit;select*fromsjh0;

selectversions_starttime,versions_endtime,versions_xid,versions_operation,username,user_idfromsjh0versionsbetweentimestampminvalueandmaxvalue;

--下面我們利用VERSIONS_XID來查詢undo語句,需要用到sys/system用戶。最后利用這些undo來撤銷不同版本的事物。SELECTUNDO_SQLFROMFLASHBACK_TRANSACTION_QUERYwhereXID='0A001700C0020000';SELECTUNDO_SQLFROMFLASHBACK_TRANSACTION_QUERYwhereXID='07000F00C5020000';

SEL

溫馨提示

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

評(píng)論

0/150

提交評(píng)論