oracle 结束被锁的包或存储过程
oracle 结束被锁的包或存储过程| Id | Title | DateAdded | SourceUrl | PostType | Body | BlogId | Description | DateUpdated | IsMarkdown | EntryName | CreatedTime | IsActive | AutoDesc | AccessPermission |
| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------|
| 15802867| oracle 结束被锁的包或存储过程| 2022-01-14T17:44:00| | BlogPost|
问题现象:
在pl/sql编译包或者是存储过程procedure等,编译一直未响应。
问题原因:
ORACLE 存储过程或包被锁,编译不了
问题解决方法:
select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_mode from v$locked_object lo, dba_objects ao, v$session sess where ao.object_id = lo.object_id and lo.session_id = sess.sid;
第一步:查找存储过程被哪些session锁住而无法编译
select * FROM dba_ddl_locks where name =upper('heb_sdb_pay_opr_pkg');
1.
第二步:通过第一步得到的session_id,得到sid和serial#
select t.sid,t.serial# from v$session t where t.sid=&session_id;
1.
第三步: kill 相关session
alter system kill session 'sid,serial#'
结束被锁的表
问题现象:
后台数据库操作某一个表时发现一直出于假死状态,可能是该表被某一用户锁定。
问题解决步骤:
第一步:查询哪些表被用户锁住
SELECT object_name, machine, s.sid, s.serial#
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;
1.
2.
3.
4.
第二步:找到被锁的表,解锁
--alter system kill session 'sid, serial#';
ALTER system kill session '23, 1647';
1.
2.
| 648658| | 2022-03-03T09:33:00| false| | 2022-01-14T17:44:10.64| true| 问题现象: 在pl/sql编译包或者是存储过程procedure等,编译一直未响应。 问题原因: ORACLE 存储过程或包被锁,编译不了 问题解决方法: select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.o| Anonymous|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现