您现在的位置是:首页 >其他 >oracle执行grant授权sql被阻塞问题处理网站首页其他
oracle执行grant授权sql被阻塞问题处理
简介oracle执行grant授权sql被阻塞问题处理
一 问题描述
执行普通的grant授权sql(grant select,update on 表名 to 用户名)好几分钟都没反应,跟被阻塞了似的。
二 问题排查
#排查是否有阻塞
用OEM可以看到阻塞信息:
点‘性能’-‘阻塞会话’:


下面那个会话2958是我执行grant sql的会话。
/*
在执行grant前,先查询下当前会话的sid:
select userenv('sid') from dual;
2958
*/
所以猜测是上面那个实例的那个会话id为6730的会话阻塞了下面那个2958的会话。
三 解决办法-终止阻塞源端会话
点击阻塞源会话的sql_id,可以看到该sql的文本,跟开发同事确认下能否kill,可以kill的话,将其kill。
选中该会话,点击上面的‘终止会话’的按钮进行kill。
有时发现终止该会话不管用,还能看到这种阻塞。手动用alter system kill session也不管用。
这时可以用kill -9 进程号的方式在操作系统层面进行kill。
#生成kill sql
select a.inst_id,a.sid,a.serial#,b.spid, 'kill -9 '||b.spid
from gv$session a
inner join gv$process b on a.paddr = b.addr
where sid=6730
and a.sql_id in('9wr2bqm4j3q37')
and a.inst_id=2
#执行上面的kill -9 命令即可
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。





U8W/U8W-Mini使用与常见问题解决
QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结