锁_rac环境kill锁表会话后出现killed状态(解决)

在Oracle RAC环境中,当遇到大表因锁等待无法操作时,作者通过查询gv$session找到相关会话并尝试用alter system kill session命令结束会话,但发现会话处于killed状态。接着,通过查询gv$process找到对应进程ID,并在操作系统层面使用kill命令彻底结束进程,从而成功解锁表并完成操作。

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

原创作品,出自 “深蓝的blog” 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46876961

rac生产库杀掉锁表会话出现killed状态处理

 

环境:

操作系统:CentOS 6.4 64BIT

数据库:Oracle RAC 11.2.0.4 R2 64bit

 

       在某项目中,进行大数据抽取任务时,抽取出现错误,需要对大表进行重新抽取。于是取消insert操作,然后执行truncate操作。

如下,报错了,提示资源正忙,判断应该是之前的操作没有完全取消,出现了锁等待。

于是,尝试查询锁表的用户,如下:

注意:这里是rac环境,需要查询gv$类视图。

SELECT
  A.OWNER,                        --OBJECT所属用户
  A.OBJECT_NAME,                  --OBJECT名称
  B.XIDUSN,
  B.XIDSLOT,
  B.XIDSQN,
  B.SESSION_ID,                   --锁表用户的session
  B.ORACLE_USERNAME,              --锁表用户的Oracle用户名
  B.OS_USER_NAME,                 --锁表用户的操作系统登陆用户名
  B.PROCESS,
  B.LOCKED_MODE, 
  C.MACHINE,                      --锁表用户的计算机名称
  C.STATUS,                       --锁表状态
  C.SERVER,
  C.SID,
  C.SERIAL#,
  C.PROGRAM                       --锁表用户所用的数据库管理工具
FROM
  ALL_OBJECTS A,
  GV$LOCKED_OBJECT B,
  SYS.GV_$SESSION C 
WHERE
  A.OBJECT_ID = B.OBJECT_ID
  AND B.PROCESS = C.PROCESS 
--AND C.STATUS='ACTIVE'
ORDERBY1,2

在查询结果中,锁定到需要解锁的表的会话信息,如下:

于是,尝试查询锁表的用户,如下:

注意:这里是rac环境,需要查询gv$类视图。

SELECT
  A.OWNER,                        --OBJECT所属用户
  A.OBJECT_NAME,                  --OBJECT名称
  B.XIDUSN,
  B.XIDSLOT,
  B.XIDSQN,
  B.SESSION_ID,                   --锁表用户的session
  B.ORACLE_USERNAME,              --锁表用户的Oracle用户名
  B.OS_USER_NAME,                 --锁表用户的操作系统登陆用户名
  B.PROCESS,
  B.LOCKED_MODE, 
  C.MACHINE,                      --锁表用户的计算机名称
  C.STATUS,                       --锁表状态
  C.SERVER,
  C.SID,
  C.SERIAL#,
  C.PROGRAM                       --锁表用户所用的数据库管理工具
FROM
  ALL_OBJECTS A,
  GV$LOCKED_OBJECT B,
  SYS.GV_$SESSION C 
WHERE
  A.OBJECT_ID = B.OBJECT_ID
  AND B.PROCESS = C.PROCESS --AND C.STATUS='ACTIVE'
ORDER BY 1,2

在查询结果中,锁定到需要解锁的表的会话信息,如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值