日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

oracle自治事務(wù)

系統(tǒng) 2077 0
在觸發(fā)器中操作觸發(fā)此觸發(fā)器的表,用pragma autonomous_transaction選項(xiàng)。
1、為何使用自治事務(wù)
?無(wú)法回滾的審計(jì) : 一般情況下利用觸發(fā)器禁止某些對(duì)表的更新等操作時(shí),若記錄日志,則觸發(fā)器最后拋出異常時(shí)會(huì)造成日志回滾。利用自治事務(wù)可防止此點(diǎn)。
?避免變異表:????? 即在觸發(fā)器中操作觸發(fā)此觸發(fā)器的表
?在觸發(fā)器中使用ddl 寫(xiě)數(shù)據(jù)庫(kù):對(duì)數(shù)據(jù)庫(kù)有寫(xiě)操作(insert、update、delete、create、alter、commit)的存儲(chǔ)過(guò)程或函數(shù)是無(wú)法簡(jiǎn)單的用sql來(lái)調(diào)用的,
?????????????? 此時(shí)可以將其設(shè)為自治事務(wù),從而避免ora-14552(無(wú)法在一個(gè)查詢(xún)或dml中執(zhí)行ddl、commit、rollback)、ora-14551(無(wú)法在一個(gè)查詢(xún)中執(zhí)行dml操作)等錯(cuò)誤。
?????????????? 需要注意的是函數(shù)必須有返回值,但僅有in參數(shù)(不能有out或in/out參數(shù))。
?開(kāi)發(fā)更模塊化的代碼:? 在大型開(kāi)發(fā)中,自治事務(wù)可以將代碼更加模塊化,失敗或成功時(shí)不會(huì)影響調(diào)用者的其它操作,
?????????????? 代價(jià)是調(diào)用者失去了對(duì)此模塊的控制,并且模塊內(nèi)部無(wú)法引用調(diào)用者未提交的數(shù)據(jù)。
2、如何工作
??? 事務(wù)控制
?declare整個(gè)塊都是屬于父事務(wù)的,自治事務(wù)從離pragma后的第一個(gè)begin開(kāi)始,只要此begin塊仍在作用域,則都屬于自治事務(wù)。
?例如在declare模塊中聲明一個(gè)寫(xiě)數(shù)據(jù)庫(kù)的函數(shù),則此函數(shù)雖然在自治事務(wù)所在存儲(chǔ)過(guò)程執(zhí)行,但其屬于父事務(wù);而自治事務(wù)中調(diào)用的任何函數(shù)和存儲(chǔ)過(guò)程、激發(fā)的任何觸發(fā)器等均為此自治事務(wù)的一部分。
?自治事務(wù)可以嵌套,嵌套深度等只受init.ora參數(shù)transactions(同時(shí)并發(fā)的事務(wù)數(shù),缺省為sessions的1.1倍)制約。
?作用域
?2.1 包中的變量
?自治事務(wù)可看到并修改父事務(wù)的變量,父事務(wù)也會(huì)察覺(jué)到這一改變,且不存在回滾問(wèn)題。
?2.2 會(huì)話(huà)設(shè)置/參數(shù)
?自治事務(wù)與父事務(wù)共享同一個(gè)會(huì)話(huà)環(huán)境,通過(guò)alter session作的修改對(duì)整個(gè)會(huì)話(huà)均有效。但set transaction是事務(wù)級(jí)的,僅對(duì)提起修改的事務(wù)有效。
?2.3 數(shù)據(jù)庫(kù)修改
?父事務(wù)已提交的修改對(duì)自治事務(wù)可見(jiàn),未提交的對(duì)自治事務(wù)不可見(jiàn),自治事務(wù)的修改對(duì)父事務(wù)是否可見(jiàn)取決于隔離級(jí)別(isolation level)。
?對(duì)于游標(biāo),取決于其打開(kāi)的位置,若其在父事務(wù)中打開(kāi),則之前父事務(wù)未提交的修改對(duì)其是有效的,在自治事務(wù)中這些修改也可見(jiàn);而在自治事務(wù)中打開(kāi),則父事務(wù)未提交的修改不可見(jiàn)。
?若使用缺省的read committed隔離級(jí)別,則自治事務(wù)的修改對(duì)父事務(wù)可見(jiàn);若改用serializable,則不可見(jiàn)。
?2.4 鎖
?父事務(wù)與自治事務(wù)是完全不同的事務(wù),因此無(wú)法共享鎖等。
?結(jié)束一個(gè)自治事務(wù)必須提交一個(gè)commit、rollback或執(zhí)行ddl。
?保存點(diǎn)無(wú)法在自治事務(wù)中回滾到父事務(wù)中的一個(gè)保存點(diǎn),只能在內(nèi)部使用保存點(diǎn)。
3、最后說(shuō)明 不支持分布式事務(wù)截至8.1.7在自治事務(wù)中不支持分布式事務(wù)
?僅可用pl/sql 全部事務(wù)回滾若自治事務(wù)出錯(cuò),則全部回滾,即便父事務(wù)有異常處理模塊。
?事務(wù)級(jí)臨時(shí)表每個(gè)會(huì)話(huà)僅一個(gè)事務(wù)可訪(fǎng)問(wèn)事務(wù)級(jí)臨時(shí)表(多個(gè)會(huì)話(huà)中的事務(wù)可并發(fā)操作)。
4、可能遇到的錯(cuò)誤
?ora-06519 – 檢查到活動(dòng)自治事務(wù),回滾——退出自治事務(wù)時(shí)沒(méi)有提交、回滾或ddl操作
?ora-14450 – 試圖訪(fǎng)問(wèn)正在使用的事務(wù)級(jí)臨時(shí)表
?ora-00060 – 等待資源時(shí)檢查到死鎖
?本文來(lái)自csdn博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處: http://blog.csdn.net/alex197963/archive/2008/01/11/2036500.aspx

oracle自治事務(wù)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 顺平县| 陆河县| 修武县| 澄迈县| 淮滨县| 社会| 康马县| 河东区| 平远县| 涿鹿县| 四会市| 玉田县| 郑州市| 陇西县| 盐边县| 通州市| 金阳县| 阿拉善左旗| 平顺县| 观塘区| 庆安县| 延津县| 阳山县| 钦州市| 那坡县| 邻水| 定安县| 淮北市| 潢川县| 阜宁县| 鄂尔多斯市| 阆中市| 洪江市| 靖安县| 三河市| 涞源县| 普安县| 梅河口市| 房山区| 苍溪县| 绥芬河市|