美文网首页
自治事务

自治事务

作者: o0O不吹空调会死的少年胖O0 | 来源:发表于2019-07-18 19:25 被阅读0次

一、摘要


嵌套事物:指在一个Parent事务中嵌套的一个或多个Sub Transaction.并且主事务与其相互影响,这种事务就称为嵌套事务。以Commit作为事务的结束

自治事物:指在function,procedure等subprograms中对事务进行自治管理,当在别的pl/sql block里去调用这些subprograms的时候这些subprograms并不随着父pl/sql block的失败而回滚,而是自己管自己commit。以Commit作为事务的结束。自治事务常用于写入LOG或TRAC信息便于查找错误。

个人感觉,一般嵌套事物因为采用savepoint&rollback这种方式进行回滚,会破坏程式的可读性及模块化,特别有多个savepoint&rollback在程式中,可能连自己写的人会混淆,更何况项目运维过程中的维护人员,所以一般在写程式标准中,会禁止使用嵌套事物

而自治事物可将程式的模块化,一般来说是推荐的写法,将主事物和子事物进行隔离,所以后面也会对自治事物做详细的解读

二、嵌套事物 SavePoint


1. 基本作用:建立回滚节点,之后如回滚直接回滚此节点,此节点之前仍会Commit

2. 基本语法

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

3. 因是开发过程中不推荐的写法,所以案列就略去了;)

三、自治事物 autonomous_transation


1. 基本作用:

当proc1调用proc2后,proc1执行Rollback后,proc2仍旧会进行Commit;

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

2. 基本语法

申明proc2为自治事务

<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. 自治事务的一个例子

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; --自治事务中commit
12 
13  end;</pre>

3.2 申明一个主事物,在主事物中调用自治事物,


<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; --主事务中rollback
12 
13  end; </pre>

3.3 在主事物中进行rollback,并不影响自治事务的commit和rollback,实现了事物间的隔离

image.png

4. 自治事务的概念

(1) 带 ALTER SESSION 的自治事务 自治事务应该与主事务共享一个会话,因此通过 ALTER SESSION 语句,对该会话的任何修改,对自治事务和主事务应该都是可见的。但自治事务执行与主事务不同的上下文中。任何从自治块中引发的自治子程序调用都与自治事务共享相同的事务上下文

(2) 自治事务与死锁 必须以下面的这种方式定义自治事务: 死锁在自治事务试图访问一个被主事务占用的资源时发生,这时主事务会挂起,直到自治事务结束。自治事务死等主事务释放资源,结果可能导致死锁

(3) 定义自治事务的条件 只有顶层匿名块才能包括 PRAGMA AUTONOMOUS_TRANSTRACTION(4) COMMIT 或 ROLLBACK 行为与自治事务 自治事务是以 commit 或 rollback 语句结束的。因此,应该在自治事务程序的内部显式地包含一个 commit 或 rollback 语句。如果没有这样做,任何一个未确定的事务都会回滚。这是一个事务级的回滚,而不是一个语句级的回滚

(5) 异常与自治事务 当自治事务以一个异常的方式退出时,就发生一个事务级的回滚,自治事务中所有未确定的改变都会回滚

(6) 多个自治事务 一个自治事务的上下文中,初始化多个自治事务。可以在一个自治块内定义多个 commit 或 rollback 语句来完成这项任务,当包含一个 rollback 时,它就会属于当前事务,而不属于主事务

(7) 自治事务的并发问题 自治事务与主事务是并发运行的,初始化文件 init.ora 中的 transactions 参数决定着每个会话中并发事务的数量

相关文章

  • 自治事务

    一、摘要 嵌套事物:指在一个Parent事务中嵌套的一个或多个Sub Transaction.并且主事务与其相互影...

  • 六、事务处置与法律行为

    第一、自治原则与事务处置 私法自治之要义,一体现于意志自由,二体现于各人只能处置自己的事务,即处分自己的权利,为自...

  • 民族区域自治制度

    1、民族区域自治制度简介 为了保障少数民族当家做主,让其管理本民族、本地方事务,我国在各少数民族聚居的地方设立自治...

  • 着眼改革创新 加强互联互通

    ——新疆方面与广西自治区相关单位召开办会办展经验交流会 2017年7月10日,广西国际博览事务局、广西自治区警卫局...

  • 自治

    风遏制住了我的呼吸, 睫毛飞到了耳窝里。 我想着爱人的名字, 可惜他不是英雄。 现实刻在我身上的伤疤一重重。 他说...

  • 自治

    耳鸣好久,不能耳聋,开始自治

  • 2018年约束村干部有“新规”,征迁中可对村委会提起行政诉讼!

    村级行政单位是群众自治组织,村干部由村民选举产生,管理着村级事务。俗话说,别拿豆包不当干粮,别拿村官不当干部。随着...

  • 唐生智是如何把自己搞成孤家寡人的

    要说民国有哪个地方最乱,那么湖南当然是首当其冲,但是自从赵恒锡主持大局一来,奉行联省自治原则,不参与中央事务,湖南...

  • 中世纪的自治

    所谓自治,就是自己管理自己,自己的事自行管理或处理。一般讲除接受政府或上级单位领导外,对自己的事务行使一定的权力。...

  • 公务员与事业单位备考-行测整理上

    常识部分: 1 民族自治地方的自治机关是自治区、自治州、自治县的人民代表大会和人民政府。民族自治地方的人民代表大会...

网友评论

      本文标题:自治事务

      本文链接:https://www.haomeiwen.com/subject/ulnclctx.html