成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談在Oracle中如何利用REDO實(shí)現(xiàn)故障恢復(fù) 

數(shù)據(jù)庫(kù) Oracle 數(shù)據(jù)庫(kù)運(yùn)維
Oracle通過(guò)Redo來(lái)保證數(shù)據(jù)庫(kù)的事務(wù)可以被重演,從而使得在故障之后,數(shù)據(jù)可以被恢復(fù)。Redo對(duì)于Oracle數(shù)據(jù)庫(kù)來(lái)說(shuō)至關(guān)重要。

在數(shù)據(jù)庫(kù)中,Redo的功能主要通過(guò)3個(gè)組件來(lái)實(shí)現(xiàn):Redo Log Buffer、LGWR后臺(tái)進(jìn)程和Redo Log File(在歸檔模式下,Redo Log File最終會(huì)寫出為歸檔日志文件)。

在Oracle的SGA中,存在一塊共享內(nèi)存,稱為Redo Log Buffer,如圖1所示。

oracle重要概念REDO - kele_lipeng - kele_lipeng的博客

圖1 Oracle Instance

Redo Log Buffer位于SGA之中,是一塊循環(huán)使用的內(nèi)存區(qū)域,其中保存數(shù)據(jù)庫(kù)變更的相關(guān)信息。這些信息以重做條目(Redo Entries)形式存儲(chǔ)(Redo Entries也經(jīng)常被稱為Redo Records)。Redo Entries包含重構(gòu)、重做數(shù)據(jù)庫(kù)變更的重要信息,這些變更包括INSERT、UPDATE、DELETE、CREATE、ALTER或者DROP等。在必要的時(shí)候Redo Entries被用于數(shù)據(jù)庫(kù)恢復(fù)。

Redo Entries的內(nèi)容被Oracle數(shù)據(jù)庫(kù)進(jìn)程從用戶的內(nèi)存空間復(fù)制到SGA中的Redo Log Buffer之中。Redo Entries在內(nèi)存中占用連續(xù)的順序空間,由于Redo Log Buffer是循環(huán)使用的,Oracle通過(guò)一個(gè)后臺(tái)進(jìn)程LGWR不斷地把Redo Log Buffer的內(nèi)容寫出到Redo Log File中。

當(dāng)用戶在Buffer Cache中修改數(shù)據(jù)時(shí),Oracle并不會(huì)立即將修改數(shù)據(jù)寫出到數(shù)據(jù)文件上,因?yàn)槟菢幼鲂蕰?huì)很低,到目前為止,計(jì)算機(jī)系統(tǒng)中最繁忙的部分是磁盤的I/O操作,Oracle這樣做的目的是為了減少IO的次數(shù),當(dāng)修改過(guò)的數(shù)據(jù)達(dá)到一定數(shù)量之后,可以進(jìn)行高效地批量寫出。

大部分傳統(tǒng)數(shù)據(jù)庫(kù)(當(dāng)然包括Oracle)在處理數(shù)據(jù)修改時(shí)都遵循no-force-at-commit策略。也就是說(shuō),在提交時(shí)并不強(qiáng)制寫。那么為了保證數(shù)據(jù)在數(shù)據(jù)庫(kù)發(fā)生故障時(shí)(例如斷電)可以恢復(fù),Oracle引入了Redo機(jī)制,通過(guò)連續(xù)的、順序的日志條目的寫出將隨機(jī)的、分散的數(shù)據(jù)塊的寫出推延。這個(gè)推延使得數(shù)據(jù)的寫出可以獲得批量效應(yīng)的性能提升。

同Redo Log Buffer類似,Redo Log File也是循環(huán)使用的,Oracle允許使用最少兩個(gè)日志組。缺省情況下,數(shù)據(jù)庫(kù)創(chuàng)建時(shí)會(huì)建立3個(gè)日志組。

SQL> select group#,members,status from v$log; 

GROUP# MEMBERS STATUS

---------- ---------- ----------------

1 1 INACTIVE

2 1 CURRENT

3 1 INACTIVE

當(dāng)一個(gè)日志文件寫滿之后,會(huì)切換到另外一個(gè)日志文件,這個(gè)切換過(guò)程稱為L(zhǎng)og Switch。Log Switch會(huì)觸發(fā)一個(gè)檢查點(diǎn),促使DBWR進(jìn)程將寫滿的日志文件保護(hù)的變更數(shù)據(jù)寫回到數(shù)據(jù)庫(kù)。在檢查點(diǎn)完成之前,日志文件是不能夠被重用的。

由于Redo機(jī)制對(duì)于數(shù)據(jù)的保護(hù),當(dāng)數(shù)據(jù)庫(kù)發(fā)生故障時(shí),Oracle就可以通過(guò)Redo重演進(jìn)行數(shù)據(jù)恢復(fù)。那么一個(gè)非常重要的問(wèn)題是,恢復(fù)應(yīng)該從何處開(kāi)始呢?

如果讀取的Redo過(guò)多,那么必然導(dǎo)致恢復(fù)的時(shí)間過(guò)長(zhǎng),在生產(chǎn)環(huán)境中,我們必需保證恢復(fù)時(shí)間要盡量得短。Oracle通過(guò)檢查點(diǎn)(Checkpoint)來(lái)縮減恢復(fù)時(shí)間?;仡櫼幌碌?章中所提到的內(nèi)容:檢查點(diǎn)只是一個(gè)數(shù)據(jù)庫(kù)事件,它存在的根本意義在于減少恢復(fù)時(shí)間。

當(dāng)檢查點(diǎn)發(fā)生時(shí)(此時(shí)的SCN被稱為Checkpoint SCN)Oracle會(huì)通知DBWR進(jìn)程,把修改過(guò)的數(shù)據(jù),也就是此Checkpoint SCN之前的臟數(shù)據(jù)(Dirty Buffer)從Buffer Cache寫入磁盤,在檢查點(diǎn)完成后CKPT進(jìn)程會(huì)相應(yīng)地更新控制文件和數(shù)據(jù)文件頭,記錄檢查點(diǎn)信息,標(biāo)識(shí)變更。

在檢查點(diǎn)完成之后,此檢查點(diǎn)之前修改過(guò)的數(shù)據(jù)都已經(jīng)寫回磁盤,重做日志文件中的相應(yīng)重做記錄對(duì)于崩潰/實(shí)例恢復(fù)不再有用。如果此后數(shù)據(jù)庫(kù)崩潰,那么恢復(fù)只需要從***一次完成的檢查點(diǎn)開(kāi)始恢復(fù)即可。如果數(shù)據(jù)庫(kù)運(yùn)行在歸檔模式(所有生產(chǎn)數(shù)據(jù)庫(kù),都建議運(yùn)行在歸檔模式),日志文件在重用之前必須寫出到歸檔日志文件,歸檔日志在介質(zhì)恢復(fù)時(shí)可以用來(lái)恢復(fù)數(shù)據(jù)庫(kù)故障

一、UNDO的使用說(shuō)明

二、Undo段

在一個(gè)進(jìn)程修改數(shù)據(jù)庫(kù)過(guò)程中存放舊的數(shù)據(jù),包括數(shù)據(jù)沒(méi)有修改之前的位置和值。Undo段的頭包含了一個(gè)事物處理表,表中存放了目前使用undo段事物處理的信息。一個(gè)系列的事物處理只使用一個(gè)undo段存放undo數(shù)據(jù)。多個(gè)并行事物處理可以同時(shí)寫入一個(gè)undo段。

三、Undo段的作用

1、事務(wù)處理rollback

當(dāng)一個(gè)事物處理修改了表中的一行,舊數(shù)據(jù)的映像就會(huì)存放在undo段中。如果事物處理rollback,Oracle Server就使用undo段中值再寫回修改行。

2、事物處理恢復(fù)

當(dāng)一個(gè)例程失敗而還有一些事物處理沒(méi)有完成,Oracle Server在數(shù)據(jù)庫(kù)再次打開(kāi)的時(shí)候就需要將所有沒(méi)有提交的修改全部undo。這種rollback是事物處理恢復(fù)的一部分。由于undo段的修改也會(huì)被redo日志文件保護(hù),因此恢復(fù)是能夠進(jìn)行的。

3、讀取的一致性

當(dāng)一個(gè)事物處理正在運(yùn)行,其他的用戶是不能看到任何這個(gè)事物處理沒(méi)有提交的修改的。另外,在一個(gè)查詢執(zhí)行期間的數(shù)據(jù)改變是不應(yīng)該顯示在這個(gè)查詢結(jié)果當(dāng)中的。在undo段中的舊的數(shù)據(jù)(Undo數(shù)據(jù))也為用戶特定查詢提供一個(gè)一致的映像。

四、讀取的一致性

1、即使其他的事物處理修改了數(shù)據(jù),Oracle Server也會(huì)保證一個(gè)查詢看到的數(shù)據(jù)是一致的。當(dāng)Oracle Server開(kāi)始執(zhí)行一個(gè)select查詢,它將記錄目前系統(tǒng)更改編號(hào)(SCN)并且確保這個(gè)SCN以后的任何數(shù)據(jù)修改將不會(huì)影響到這個(gè)查詢結(jié)果。比如一個(gè)運(yùn)行時(shí)間非常長(zhǎng)的查詢語(yǔ)句在執(zhí)行過(guò)程中有發(fā)生了幾個(gè)修改,如果一行數(shù)據(jù)在查詢聲明以前的修改沒(méi)有提交,Oracle Server將從undo段中提取沒(méi)有修改的以前的映像,并構(gòu)建一個(gè)“讀取一致”的行映像。

2、事物處理讀取一致性

讀取的一致性通常是指SQL查詢語(yǔ)句。但是也可以通過(guò)在緊跟在事物處理聲明后使用一下命令來(lái)使事物處理的讀取也是一致的:

SET TRANSACTION READ ONLY;

或者可以在事物處理使用DML語(yǔ)句的時(shí)候在事物處理前面使用一下命令:

SET TRANSACTION ISOLATION LELVEL SERIALIZABLE;

使用上述兩種方法都可以保證事物處理在數(shù)據(jù)讀取時(shí)候的一致性,但是使用SERIALIZABLE參數(shù)將影響性能。

【編輯推薦】

  1. 優(yōu)化數(shù)據(jù)庫(kù)大幅度提高Oracle的性能
  2. 淺談Oracle性能優(yōu)化可能出現(xiàn)的問(wèn)題
  3. Oracle與SQL Server數(shù)據(jù)庫(kù)鏡像對(duì)比
責(zé)任編輯:彭凡 來(lái)源: 網(wǎng)易博客
相關(guān)推薦

2011-05-26 09:36:07

Oracle數(shù)據(jù)庫(kù)Redo故障

2011-03-24 17:21:42

Oracle數(shù)據(jù)庫(kù)Redo故障

2010-04-12 14:25:04

Oracle備份

2025-01-08 09:48:34

2009-06-15 15:17:32

JCOMExcel編程Java

2009-07-15 16:23:54

Java JDBC

2010-04-06 10:11:11

Oracle備份

2020-08-13 10:57:26

服務(wù)器故障服務(wù)器預(yù)防性維護(hù)

2011-03-21 15:40:31

Oracle

2009-10-13 09:43:43

Oracle數(shù)據(jù)庫(kù)備份

2010-03-31 10:39:40

RMANOracle

2014-10-11 17:48:46

排名恢復(fù)

2019-10-21 09:52:51

變異測(cè)試單元測(cè)試

2009-06-10 09:58:32

Oracle sequHibernate

2009-04-09 15:40:01

JSONJavaScript枚舉

2011-06-13 11:23:33

javasocket

2011-06-13 12:11:06

javasocket

2009-05-06 11:09:10

Oracle物化視圖數(shù)據(jù)庫(kù)

2009-07-16 10:20:21

赫夫曼編碼

2009-07-16 17:06:55

JSP網(wǎng)頁(yè)中JDBC代
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲精品视频久久 | 国产草草视频 | 农村妇女毛片精品久久久 | www亚洲精品| 日本午夜在线视频 | 国产在线视频三区 | 一本一道久久a久久精品综合蜜臀 | 天天曰夜夜 | 天天草视频 | 久久综合激情 | 欧美精品一区二区三区四区 在线 | www.亚洲国产精品 | 国产99视频精品免视看9 | 在线免费黄色小视频 | 亚洲国产精品va在线看黑人 | 国产日韩一区 | 97偷拍视频 | 欧美激情国产日韩精品一区18 | 国产午夜在线 | 一区二区福利视频 | 国产精品一区二区三区在线 | 久久久久久综合 | 久久精品免费 | 一级片在线免费看 | 一道本一区二区 | 成人毛片在线观看 | 亚洲精品视频在线观看免费 | 99re在线视频 | 新91 | 国产精品免费一区二区三区四区 | 国产美女在线精品免费 | 91免费观看国产 | av播播| 黑人一级片视频 | 91精品国产乱码麻豆白嫩 | 蜜桃臀av一区二区三区 | 综合久久av| 国产成人免费 | 欧美精品在线一区 | 天天色综 | 青青久在线视频 |