数据的并发处理

本文介绍如何在Oracle数据库中处理两个并发更新同一记录的事务所导致的锁定情况,并展示如何查询锁定会话及通过kill session命令解除锁定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、会话1,更新emp表,empno=7566

SQL> update emp set sal= sal+1 where empno=7566;

 

1 row updated.

 

SQL> select userenv('sid') from dual

  2  /

 

USERENV('SID')

--------------

           199

 

2、会话2,更新emp表, empno=7566

 

SQL> update emp set comm=500 where empno=7566;

 

 

3、查询v$session获取未完成的,且造成其他事务被锁的会话

 

SELECT vs.sid  

      ,vs.serial#

      ,vs.seconds_in_wait    --通常等待时间超过2min需要考虑被锁

      ,vs.TADDR

  FROM v$session vs

 WHERE vs.sid IN (SELECT vs2.blocking_session

                    FROM v$session vs2

                   WHERE vs2.blocking_session IS NOT NULL)

 

 

4、将上述会话,即会话1kill

在Oracle数据库中,可以通过kill session的方式来终止一个进程,其基本语法结构为:

alter system kill session 'sid,serial#' ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值