• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

大浪淘沙

黄河之水天上来,极目楚天舒
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

Oracle 编译、调用或调试Procedure、Function或Package时卡死问题

Oracle 编译、调用或调试Procedure、Function或Package时卡死问题

在对Procedure、Function或Package进行Debug时,如果长时间没有操作,这个时候数据库不会主动的释放会话的资源,如果再次对Procedure、Function或Package进行Debug的话,就会产生等待产生数据库锁。只有等到数据库回收上次Debug的会话资源或者DBA手动将会话KILL掉。

以下是手动KILL会话的方法:

1: 查询V$DB_OBJECT_CACHE

SELECT * FROM V$DB_OBJECT_CACHE WHERE NAME='PROCEDURE_NAME' AND LOCKS!='0';

注意: PROCEDURE_NAME为存储过程的名称。

2: 通过对象查询SID

SELECT SID FROM V$ACCESS WHERE OBJECT='PROCEDURE_NAME';

注意: PROCEDURE_NAME为存储过程的名称。

3: 查询SID,SERIAL#

SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='SID';

注意: SID为第二步查询出的SID。

4: KILL死锁的会话

ALTER SYSTEM KILL SESSION 'SID,SERIAL#' IMMEDIATE;

posted on 2020-08-07 10:49  shchenzl  阅读(455)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3