老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

oracle如何回滾事務 數據庫事務回滾

如何使用Oracle回滾段

Oracle缺省用的是專用服務器模式,也就是說一個用戶連接進程對應一個服務器的進程.

專注于為中小企業提供成都網站設計、網站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業積石山保安族東鄉族免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了千余家企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。

記得某大醫院剛啟用的時候,我們曾經試過MTS.因為聽說MTS在不增加內存和CPU的情況下連接更多的客戶端,結果并不是我們預期的那樣.

因為我們對MTS不了解,并不是它有問題,而是它不是用來在這種情況下做這件事的.

oracle中數據是怎樣前滾和回滾的

保持數據一致性和完整性,是每一款成功商業數據庫軟件都必須要做到的基本要求。從故障中恢復,保證ACID原則,保證事務完整性,一直是Oracle數據庫核心功能組成部分。本篇主要介紹Oracle實例意外終止(斷電或者強制關閉)之后,重新啟動時發生的恢復過程,也可以稱作“前滾和回滾”。

基礎知識說明

為了更明確的說明問題,筆者首先介紹一下本文涉及到的一些重要知識。

數據庫實例失敗

我們經常說的數據庫服務器failure是有多層含義的。Oracle數據庫是一個由多進程組件共同構成的結構體系。最重要的部分包括監聽器、Oracle數據庫實例兩個部分,當然還包括各類文件,更廣義的還有硬件和操作系統OS。不同部分的Failure現象和處理方法都有所不同。本文所闡述的過程是Oracle實例失敗后的自動恢復過程。

在實例失敗的時候,往往是突然性的終止。此時Oracle數據庫可能在進行一系列完成或者未完成的事務。實例失敗恢復,就是要將這些狀態進行還原,恢復到數據完整性的狀態。

寫日志(RedoLog)在先機制

Oracle數據庫是采用“日志在先”機制的。當我們對數據庫數據進行修改時,并不是立即將修改寫入到文件中,而是寫入到共享內存SGA空間中的BufferCache里。同時,將修改的日志不斷的寫入到SGA中另一塊Log Buffer緩存中。有一個后臺進程LGWR不斷的將LogBuffer緩存中的日志內容寫入到online redo log文件中。

寫入LogBuffer緩存和LGWR寫入文件的過程是異步進行的。那么LGWR會在哪些情況下將日志緩沖區(全部內容)轉儲到日志文件呢?如下:--參考OCA認證考試指南(1Z0-052,P40)ü 用戶進行直接的commit操作;

ü RedoBuffer數據超過1/3;

ü DBWn啟動,將BufferCache中的臟數據寫入到文件中;ü 距離上次LGWR寫入操作超過三秒(三秒超時,DBWn每三秒鐘會對一些緩沖區清理一次,這個時候,剛好符合觸發LGWR的第三點);而數據文件寫入進程DBWn工作的觸發點(此處注意:DBWn會將高速緩沖區的臟緩沖區,即臟數據塊寫入數據文件,而不是緩沖區里頭的全部內容---參考OCA認證考試指南(1Z0-052,P38))。

因為考慮到磁盤I/O會降低性能,DBWn采用的是極懶算法執行寫入。如果對于經常變臟的緩沖區,即這邊緩沖區處于十分忙碌的狀態,那么DBWn不會將緩沖區寫入磁盤的。反而一段時間來,任何會話都未曾關注的一些緩沖區,DBWn會將其寫入到磁盤。因此DBWn寫臟緩沖區比較平緩和低頻率。但如果出現檢查點的情況例外:DBWn會將所有臟緩沖區全部寫入磁盤。---參考OCA認證考試指南(1Z0-052,P38中,P39)。

ü 當BufferCache中沒有任何可用緩沖區;ü 臟緩沖區過多;

ü 遇到三秒超時(DBWn每三秒鐘會對一些緩沖區清理一次)ü 遇到檢查點

綜合DBWn和LGWR工作的特點,我們可以得到日志文件的幾個特點:

首先,日志文件的寫入是很頻繁的。LGWR會不斷將日志信息從LogBuffer中寫入Online Redo Log;其次,在日志文件上,可以有三個類型的事務事件。

1、事務結束,已經被commit,之后打過checkpoint檢查點。這種事務記錄在LogFile上,但是變化信息已經被DBWn寫入進數據文件;2、事務結束,已經被commit,之后沒有打入checkpint檢查點。這種情況下,LogFile已經寫入了日志項目,數據文件可能包括臟數據,也可能沒有寫入臟數據;3、事務未結束,沒有commit。這種時候,數據塊DirtyBlock上面是有事務槽信息,表示未結束事務,是不會將數據寫入到數據文件中。但是,日志LogBuffer可能將部分未提交的DML操作項目寫入到Log File中;檢查點Checkpoint

檢查點Checkpoint是數據庫一致性檢查的一個標記。簡單的說,就是在這個點上,Oracle保證各個文件(數據、控制、日志等)是一致的。檢查點的作用就是在進行實例恢復的時候,告訴SMON進程,這個點之前的內容不需要進行恢復。

前滾和回滾介紹

“前滾和回滾”是Oracle數據庫實例發生意外崩潰,重新啟動的時候,由SMON進行的自動恢復過程。下面通過模擬實例和講解介紹這個過程。

失敗前場景說明

日志中記錄過程如下:

1、事務A進行之后,結束commit。之后系統進行了一次checkpointA;2、Checkpoint之后,進行事務B,結束commit;3、進行事務C,C事務量較大,其中進行了一定量的RedoLog文件寫入。之后系統斷電;--按照LGWR的工作機制,C事務量比較大,所以應用程序將在幾分之一秒內的時間里生成足以填充1/3秒的重做內容,因此這會觸發LGWR將日志緩沖區的內容轉儲到日志文件,但始終得不到針對C事務的提交記錄,這是需要回滾的。

4、還有種可能,事務B和D,事務D所用的緩沖區處于高速緩沖區不活躍的位置,而且事務B已提交,但其所用的緩沖區處于高速緩沖區活躍的位置。因此DBWn會將D事務緩沖區數據寫入數據文件,而沒將B事務的數據寫入。此種情況需要回滾D事務,保留B事務。---參考OCP認證考試指南全冊(P358下半部分內容).

1、系統啟動過程,進入實例恢復階段

當實例意外中斷的時候,各類型文件,包括控制文件、數據文件和日志文件上,會存在不一致的問題。這種不一致主要體現在SCN值的差異上。

實例在啟動的時候,經過三階段(nomount、mount和open)。在open之前,會進行這種不一致現象的檢查,如果出現不一致,要啟動SMON進程的恢復流程。

SMON是Oracle實例的一個后臺進程,主要負責進行系統監控恢復。進行恢復的依據主要是RedoLog記錄。

2、前滾進程

SMON首先找到最后SCN記錄的Redo LogFile。尋找最后一個打入的Checkpoint。

順序找到CheckPointA之后,表示A之前的所有事務都是完全寫入到數據文件中,不存在不一致性問題。恢復過程從CheckpointA開始,Oracle開始依據重做日志Redo Log的系列條目,進行推進。

首先遇到了事務B信息,由于事務B已經commit,所以事務B所有相關的Redo Log條目已經全都寫入到Redo LogFile中。所以,按照日志繼續條目推進,完全可以重演replay,并且應用apply事務B的全部過程。

這樣,事務B全部實現,最終將通過DBWn完全寫入到數據文件中。所以,實例失敗之前提交commit的事務B,完全恢復。

進入事務C的范疇,由于一部分事務C的RedoLog條目已經進入Redo LogFile中(根據LGWR和DBWn的工作機制,事務C有可能將部分數據塊寫入日志文件和數據文件,但這時候C事務始終沒提交,這是比較嚴重的訛誤,所以需要回滾),所以在進行前滾的時候,一定會replay到這部分的內容。不過,這部分內容中不可能出現commit的標記。所以,前滾的結果一定是遇到實例突然中斷的那個時點。此時replay的結果是,事務C沒有提交。這樣結束了前滾過程,進入回滾階段。

3、回滾過程(與普通的回滾一樣(當事務執行失敗后自動回滾或者命令:ROLLBACK.)---參考OCP認證考試指南全冊)對事務C(針對DML的update,當然其他同理),要進行回滾過程,釋放所有相關資源。在前滾中,利用日志填充了的撤銷塊和表數據塊的值,然后在回滾的時候,會將撤銷塊的值復制回表數據塊中(因為此事務沒提交記錄),以此來進行SGA中BufferCache數據塊恢復。

4、說說恢復過程的損耗

很多時候,由于我們事務規模較大,當出現實例崩潰的時候,重啟所需要的時間很多。有一種經驗說法是,事務有多長,前滾和回滾所消耗的時間有多長×2。而且,如果不能完成SMON恢復過程,數據庫是不能算作正常的Open的。

SMON的恢復過程是Oracle強制進行的一個過程,即使恢復中發生斷電或者其他中斷失敗事件。Oracle在下一次啟動的時候,還是會繼續這個過程,只有耐心等待。

通過檢查一些內部視圖(X$視圖),可以觀察到恢復進程和速度,但是絲毫不能影響到最終恢復的過程。

這個過程雖然可以保證數據一致性,但是也帶來了系統不能啟動,影響生產環境的問題。我們可以通過兩個方式進行緩解:

首先,我們在設計開發系統時,要保證事務規模的可控性,不要讓事務規模在技術層面上過大。避免一旦發生崩潰,大規模強制回滾的發生;其次,一旦出現了這個強制回滾,要注意對生產環境的影響。可以采用備庫standby進行頂替,讓主庫安靜的慢慢恢復;

oracle 如何通過事務回滾。

如果你的數據是相互不影響,就是沒有業務關聯的話,就回滾一條

如果相互有關系的話

那估計就回滾所有了

個人意見

希望對你有幫助


網站欄目:oracle如何回滾事務 數據庫事務回滾
轉載來源:http://www.xueling.net.cn/article/hijhig.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 男女精品国产乱淫高潮 | 天天在线干 | 激情久久网 | 精品人妻一区二区三区综合部 | 国产精品丝袜久久久久久不卡 | 日本丰满少妇BBB | 韩国黄色精品 | 国产成人一二三 | 国产一区二区三区精品毛片 | 逼逼爱插 | 在线免费黄色毛片 | 天堂AV无码大芭蕉伊人AV | 总裁与秘书高h肉 | jizz国产精品网站 | 日韩精品无码一区二区视频 | 精品亚洲自拍 | 欧美精品在线免费观看 | 最新国内精品自在自线视频 | 日产乱码一二三区别免费麻豆 | 白嫩人妻娇喘欲仙欲死 | 777欧美奇米网 | 欧美日韩一卡 | 91干b| 51社区精品视频在线视频观看软件 | 郎在远方免费观看 | 亚洲精品99久久久久久 | 亚洲V欧美V国产V在线观看 | 国产无套精品一区二区三区 | 热久久久 | 久久亚洲国产精品成人AV秋霞 | 日韩一区二区三区视频在线播放 | 国产精品88久久久久久妇女厕 | 成人久久影院 | 日日爱网站 | 麻豆精品传媒一二三区 | 98色花堂论坛最新地址 | 青青青青娱乐 | 一级久久19久久久区区区区区区 | 华人91视频 | 在野外被三个男人躁爽白浆视频 | 国产日韩在线免费观看 |