rac 库遇到session阻塞

本文介绍了如何通过PL/SQL和SQLPlus两种方法来定位并解决Oracle数据库中的阻塞问题。首先,通过GV$SESSION确定阻塞的节点和进程,然后查询具体阻塞会话信息,并使用ALTER SYSTEM KILL SESSION语句结束会话。另一种方式是通过V$LOCK和V$SESSION视图来查找和杀死阻塞的会话。解决方法包括定位SID和SERIAL#,并执行ROLLBACK操作。
摘要由CSDN通过智能技术生成

问题描述:

解决方法1:通过pl/sql定位阻塞

1)确定节点(instance)和进程(session)

当出现阻塞时,4的位置和5的位置将出现数字,以此定位

2)确定阻塞session的具体信息

select * from gv$session where inst_id=1 and sid=2714;

看到osuser字段,明确为人名,于是这个session可直接kill;

同时从上面的得到sid,serial#字段,用于下一步kill session

3)kill session语句如下:

alter system kill session 'sid,serial#,@1';   

其中@1指明是节点1上的session进程,若是在oracle节点2上执行该语句,但未指明是节点1,Oracle将找不到该进程,但是在单实例上就没有这个担忧。

解决方法2:通过sqlplus定位

  • select * from v$lock; 查sid
  • select sid,serial#,sql_text from v$session where sid=上面得sid;
  • 接下来会对serial#进行kill操作,(因为sid会重复使用,无法准确定位)
  • alter system kill session 'sid,serial#'(上面查的数字)

而kill session动作是rollback,而非commit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值