自治事務(wù)

一注竿、摘要


嵌套事物:指在一個Parent事務(wù)中嵌套的一個或多個Sub Transaction.并且主事務(wù)與其相互影響,這種事務(wù)就稱為嵌套事務(wù)蔓搞。以Commit作為事務(wù)的結(jié)束

自治事物:指在function胰丁,procedure等subprograms中對事務(wù)進(jìn)行自治管理,當(dāng)在別的pl/sql block里去調(diào)用這些subprograms的時候這些subprograms并不隨著父pl/sql block的失敗而回滾,而是自己管自己commit喂分。以Commit作為事務(wù)的結(jié)束。自治事務(wù)常用于寫入LOG或TRAC信息便于查找錯誤蒲祈。

個人感覺甘萧,一般嵌套事物因為采用savepoint&rollback這種方式進(jìn)行回滾梆掸,會破壞程式的可讀性及模塊化扬卷,特別有多個savepoint&rollback在程式中,可能連自己寫的人會混淆酸钦,更何況項目運(yùn)維過程中的維護(hù)人員怪得,所以一般在寫程式標(biāo)準(zhǔn)中,會禁止使用嵌套事物

而自治事物可將程式的模塊化卑硫,一般來說是推薦的寫法徒恋,將主事物和子事物進(jìn)行隔離,所以后面也會對自治事物做詳細(xì)的解讀

二欢伏、嵌套事物 SavePoint


1. 基本作用:建立回滾節(jié)點入挣,之后如回滾直接回滾此節(jié)點,此節(jié)點之前仍會Commit

2. 基本語法

SAVE_POINT my_savepoint;
... ...
ROLLBACK to my_savepoint;

3. 因是開發(fā)過程中不推薦的寫法硝拧,所以案列就略去了;)

三径筏、自治事物 autonomous_transation


1. 基本作用:

當(dāng)proc1調(diào)用proc2后,proc1執(zhí)行Rollback后障陶,proc2仍舊會進(jìn)行Commit;

采用的基本語法是在申明proc2時加入 pragma autonomous_transaction;

2. 基本語法

申明proc2為自治事務(wù)

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: &quot;Courier New&quot; !important; font-size: 12px !important;"> 1 create or replace procedure proc2 23 as pragma autonomous_transaction; 45 begin
 67 insert into log_info values (user, sysdate, 'insert');
 89 commit; 10 
11 end;</pre>

3. 自治事務(wù)的一個例子

3.1 申明一個自治事物xxautonomouse_insert


<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: &quot;Courier New&quot; !important; font-size: 12px !important;"> 1  procedure xxautonomouse_insert is
 2 
 3   pragma autonomous_transaction;
 4 
 5  begin
 6 
 7   insert into xxap_viktor_autonomous 8 
 9        values(001, 'xxap_invoice_20140410_01'); 10 
11   commit; --自治事務(wù)中commit
12 
13  end;</pre>

3.2 申明一個主事物滋恬,在主事物中調(diào)用自治事物,


<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: &quot;Courier New&quot; !important; font-size: 12px !important;"> 1 procedure xxautonomouse_main is
 2 
 3  begin
 4 
 5   xxautonomouse_insert;
 6 
 7   insert into xxap_viktor_autonomous 8 
 9         values(002, 'xxap_invoice_20140410_02'); 10 
11   rollback; --主事務(wù)中rollback
12 
13  end; </pre>

3.3 在主事物中進(jìn)行rollback咸这,并不影響自治事務(wù)的commit和rollback夷恍,實現(xiàn)了事物間的隔離

image.png

4. 自治事務(wù)的概念

(1) 帶 ALTER SESSION 的自治事務(wù) 自治事務(wù)應(yīng)該與主事務(wù)共享一個會話,因此通過 ALTER SESSION 語句,對該會話的任何修改酿雪,對自治事務(wù)和主事務(wù)應(yīng)該都是可見的遏暴。但自治事務(wù)執(zhí)行與主事務(wù)不同的上下文中。任何從自治塊中引發(fā)的自治子程序調(diào)用都與自治事務(wù)共享相同的事務(wù)上下文

(2) 自治事務(wù)與死鎖 必須以下面的這種方式定義自治事務(wù): 死鎖在自治事務(wù)試圖訪問一個被主事務(wù)占用的資源時發(fā)生指黎,這時主事務(wù)會掛起朋凉,直到自治事務(wù)結(jié)束。自治事務(wù)死等主事務(wù)釋放資源醋安,結(jié)果可能導(dǎo)致死鎖

(3) 定義自治事務(wù)的條件 只有頂層匿名塊才能包括 PRAGMA AUTONOMOUS_TRANSTRACTION(4) COMMIT 或 ROLLBACK 行為與自治事務(wù) 自治事務(wù)是以 commit 或 rollback 語句結(jié)束的杂彭。因此,應(yīng)該在自治事務(wù)程序的內(nèi)部顯式地包含一個 commit 或 rollback 語句吓揪。如果沒有這樣做亲怠,任何一個未確定的事務(wù)都會回滾。這是一個事務(wù)級的回滾柠辞,而不是一個語句級的回滾

(5) 異常與自治事務(wù) 當(dāng)自治事務(wù)以一個異常的方式退出時团秽,就發(fā)生一個事務(wù)級的回滾,自治事務(wù)中所有未確定的改變都會回滾

(6) 多個自治事務(wù) 一個自治事務(wù)的上下文中叭首,初始化多個自治事務(wù)习勤。可以在一個自治塊內(nèi)定義多個 commit 或 rollback 語句來完成這項任務(wù)焙格,當(dāng)包含一個 rollback 時图毕,它就會屬于當(dāng)前事務(wù),而不屬于主事務(wù)

(7) 自治事務(wù)的并發(fā)問題 自治事務(wù)與主事務(wù)是并發(fā)運(yùn)行的眷唉,初始化文件 init.ora 中的 transactions 參數(shù)決定著每個會話中并發(fā)事務(wù)的數(shù)量

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末予颤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子厢破,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件见坑,死亡現(xiàn)場離奇詭異捏检,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)贯城,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門能犯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來犬耻,“玉大人执泰,你說我怎么就攤上這事〖萍茫” “怎么了排苍?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵淘衙,是天一觀的道長。 經(jīng)常有香客問我幔翰,道長,這世上最難降的妖魔是什么叫惊? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任霍狰,我火速辦了婚禮,結(jié)果婚禮上蔗坯,老公的妹妹穿的比我還像新娘燎含。我一直安慰自己,他們只是感情好屏箍,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布赴魁。 她就那樣靜靜地躺著,像睡著了一般榄棵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疹鳄,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天尚辑,我揣著相機(jī)與錄音,去河邊找鬼杠茬。 笑死,一個胖子當(dāng)著我的面吹牛瓢喉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播决左,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼佛猛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了继找?” 一聲冷哼從身側(cè)響起逃沿,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤凯亮,失蹤者是張志新(化名)和其女友劉穎边臼,沒想到半個月后柠并,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體富拗,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了葵擎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡寓涨,死狀恐怖丽猬,靈堂內(nèi)的尸體忽然破棺而出德谅,到底是詐尸還是另有隱情糯崎,我是刑警寧澤河泳,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布拆挥,位于F島的核電站,受9級特大地震影響纸兔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜汉矿,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一负甸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧打月,春花似錦、人聲如沸蚕捉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽敛熬。三九已至,卻和暖如春话原,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背繁仁。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留稚矿,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓晤揣,卻偏偏與公主長得像碉渡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子母剥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容