在联机(共享)服务器模式下死锁的产生并解锁

本文探讨了在联机(共享)服务器模式下,由于UGA存储在大型池或共享池中可能导致的死锁问题。当多个用户进程互相持有对方需要的资源时,就会形成死锁。通过查询和监控数据库会话、锁信息来定位死锁,然后通过杀死特定会话来解除。避免死锁的关键在于资源分配策略和进程调度的优化。

由于UGA是专门用于存放与用户会话相关信息,如登录信息、会话状态等。

专用服务器模式下,进程和会话是一对一的关系,UGA被包含在PGA中,

在联机(共享)服务器模式下,进程和会话是一对多的关系,所以UGA就不再属于 PGA了,而会在大型池(Large Pool)中分配。但如果从大型池中分配失败,如大型池太小,或是根本没有设置大型池,则从共享池(Shared Pool)中分配。

官方:deadlocking,多个用户(进程)分别锁定了一个资源,并又试图请求锁定对方已经锁定的资源,就产生了一个锁定请求环,导致多个用户(进程)都处于等待对方释放其锁定资源的状态。

死锁:多个人修改同一条记录,且没有执行提交或回滚操作,由数据库自动解锁,找出是哪两个会话和哪两个sql语句返回给业务。

ps -ef | grep LOCAL=    #查询进程  YES本地连接,NO非本地连接

oracle    2917  2913  0 11:34 ?        00:00:00 oracleora (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle    3060  2629  0 12:14 ?        00:00:00 oracleora (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

kill -9 进程号SID    #杀掉一个进程

select * from v$session where username='SCOTT';

select * from v$lock  #记录锁相关的视图

TX #type行级锁

6  #行锁

alter system kill session‘16,271’ #精准杀掉一个进程

#模拟一个死锁

session 1

SQL>  update emp

  2  set sal=8000

  3  where ename='SUNMENG';

1 row updated.

session2

SQL> update emp

  2  set sal=10000

  3  where ename='CATHERINE';

1 row updated.

session1

SQL> update SCOTT.EMP

  2  set sal=10000

  3  where ename='CATHERINE';

update SCOTT.EMP

session2

SQL> update emp

  2  set sal=9000

  3  where ename='SUNMENG';

update emp

session1

ERROR at line 1:

ORA-00060: deadlock detected while waiting for resource



SQL> set pages 200 lines 200;

SQL> col ADDR for a50;

SQL> select * from v$lock;  #查看有多少个锁,TM是同步访问对象用的,TX是和事务有关的.

ADDR                                               KADDR                   SID TY        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK

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

000000009118E708                                   000000009118E760          7 KD          0          0          6          0      12451          0

000000009118EB68                                   000000009118EBC0          7 KT      12876          0          4          0      12451          0

000000009118E628                                   000000009118E680         10 MR          3          0          4          0      12451          0

000000009118E9A8                                   000000009118EA00         10 MR          4          0          4          0      12451          0

000000009118E8C8                                   000000009118E920         10 MR          1          0        &nbs
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值