這篇文章主要介紹“oracle事務(wù)知識(shí)點(diǎn)整理”,在日常操作中,相信很多人在oracle事務(wù)知識(shí)點(diǎn)整理問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”oracle事務(wù)知識(shí)點(diǎn)整理”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
創(chuàng)新互聯(lián)建站專注于三原企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城開(kāi)發(fā)。三原網(wǎng)站建設(shè)公司,為三原等地區(qū)提供建站服務(wù)。全流程按需求定制制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)DML語(yǔ)句流程
1 獲取事務(wù)鎖和ITL
2 鎖定候選行
3 生成redo
4 生成undo
5 生成redo record寫入log buffer并更改數(shù)據(jù)塊
事務(wù)提交
1 分配SCN
2 更新事務(wù)表,將事務(wù)槽狀態(tài)改為0x09
3 回收undo塊
4 創(chuàng)建commit redo record
5 將redo從log buffer刷新
6 釋放表鎖和行鎖
鎖
一個(gè)事務(wù)由1個(gè)TX和若干TM組成,而回滾savepoint不會(huì)釋放TX鎖;
ITL通過(guò)XID指向事務(wù)槽,進(jìn)而指向undo記錄,其UBA也指向undo記錄;
兩者區(qū)別在于:事務(wù)槽指向undo chain起始位置,而UBA指向事務(wù)最近一次改動(dòng);
Undo chain:同一事務(wù)的undo record形成單向鏈表,新生成的插入隊(duì)首;
一個(gè)undo塊只能由1個(gè)事務(wù)使用;
構(gòu)造CR塊
會(huì)話A對(duì)塊做DML尚未提交,會(huì)話B此時(shí)讀取該塊則會(huì)探測(cè)到1個(gè)open ITL,檢查回滾段頭的事務(wù)表發(fā)現(xiàn)狀態(tài)為active,則需構(gòu)造1個(gè)CR塊;
克隆當(dāng)前塊,通過(guò)回滾段頭和回滾塊撤銷其最近操作;
通過(guò)x$bh.state可查看buffer狀態(tài)
0 FREE no valid block image
1 XCUR a current mode block, exclusive to this instance
2 SCUR a current mode block, shared with other instances
3 CR a consistent read (stale) block image
4 READ buffer is reserved for a block being read from disk
5 MREC a block in media recovery mode
6 IREC a block in instance (crash) recovery mode
延遲塊清除
事務(wù)提交時(shí)只保證將事務(wù)槽狀態(tài)改為inactive,若此時(shí)塊已經(jīng)不在buffer中,則ITL仍為open;
下次讀取時(shí)依據(jù)事務(wù)槽信息更新ITL的flag和Commit SCN,以及釋放行鎖和fsc(free space credit),期間會(huì)產(chǎn)生redo;
有2種例外:
1 事務(wù)表槽已被重用,即wrap#>XID.wrap#,則使用回滾段頭的CSCN作為upper bound SCN;
2 回滾段已刪除,則用undo$中的SCN更新(ITL的flag為CU--);
http://www.laoxiong.net/about-block-delay-cleanout-and-consistent-reads.html
快速塊清除
提交時(shí)塊仍在內(nèi)存,更新其ITL的commit SCN(鎖標(biāo)志不更新)和flag(-U--),涉及的塊最多達(dá)到buffer cache的10%;
若塊已經(jīng)同步到磁盤即狀態(tài)為clean,此操作會(huì)讓其重新為dirty需要二次刷新;
下次讀取該塊時(shí),通過(guò)檢查事務(wù)槽確認(rèn)已提交,則將ITL關(guān)閉;若對(duì)應(yīng)回滾段已刪除,則從undo$中尋找SCN記錄;
事務(wù)恢復(fù)
1 rollback
反向掃描所有的undo記錄(latest first)并依次應(yīng)用,ITL會(huì)隨之更新;
2 進(jìn)程crash
PMON負(fù)責(zé)恢復(fù);可通過(guò)10012事件查看;
3 數(shù)據(jù)庫(kù)crash
SMON負(fù)責(zé)恢復(fù);再次啟動(dòng)時(shí),優(yōu)先恢復(fù)system回滾段的事務(wù) ,先將其他回滾段事務(wù)設(shè)為DEAD,待數(shù)據(jù)庫(kù)OPEN后再次掃描這些回滾段并執(zhí)行回滾;
可通過(guò)x$ktuxe.ktuxecfl=’DEAD’查詢死事務(wù),其事務(wù)槽的cflags=0x10;
10013事件可跟蹤數(shù)據(jù)庫(kù)啟動(dòng)時(shí)的事務(wù)恢復(fù);10015則dump事務(wù)恢復(fù)前后的回滾段頭;
10153可禁止數(shù)據(jù)塊啟動(dòng)時(shí)回滾死事務(wù);
隱含參數(shù)
_offline_rollback_segments & _corruupted_rollback_segments
指定的回滾段在數(shù)據(jù)庫(kù)啟動(dòng)時(shí)不會(huì)被掃描,其包含的active事務(wù)也不會(huì)被回滾;
若塊包含open ITL指向_offline回滾段,重新讀取該塊時(shí)會(huì)訪問(wèn)事務(wù)表,若事務(wù)已提交則執(zhí)行塊清除,若active只可構(gòu)造CR塊;
到此,關(guān)于“oracle事務(wù)知識(shí)點(diǎn)整理”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
當(dāng)前名稱:oracle事務(wù)知識(shí)點(diǎn)整理-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://www.chinadenli.net/article20/dhscjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站設(shè)計(jì)公司、微信小程序、網(wǎng)站內(nèi)鏈、營(yíng)銷型網(wǎng)站建設(shè)、軟件開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容