ITPub博客

首页 > 数据库 > Oracle > 如何KILL SESSION时保证不中断正在进行的事务

如何KILL SESSION时保证不中断正在进行的事务

原创 Oracle 作者:bob_oracle 时间:2018-02-11 22:02:08 0 删除 编辑
通过在ALTER SYSTEM DISCONNECT SESSION 后增加 POST_TRANSACTION来实现事务提交或回滚后,会话才会被KILL掉。

node2:
SQL> conn sh/sh
Connected.
SQL> select sid ,serial# from v$session where sid=userenv('sid');
       SID    SERIAL#
---------- ----------
       142   63
SQL> insert into test select a.* from all_objects a ,all_objects b;

node1:
SQL> alter system disconnect session '142,63,@2' post_transaction;
System altered.

node2:
SQL> insert into test select a.* from all_objects a ,all_objects b;
^Cinsert into test select a.* from all_objects a ,all_objects b
            *
ERROR at line 1:
ORA-01013: user requested cancel of current operation

SQL> rollback;
rollback
*
ERROR at line 1:
ORA-00028: your session has been killed


ORACLE DOC:

The POST_TRANSACTION setting allows ongoing transactions to complete before the session is disconnected. If the session has no ongoing transactions, then this clause has the same effect described for as KILL SESSION.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31448585/viewspace-2151052/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2017-03-29

  • 博文量
    5
  • 访问量
    8784