Oracle 存储过程解锁及表解锁和停止执行
查看进程:
select * from v$process;
根据存储过程名称查找是否被锁:
select * FROM dba_ddl_locks where name =upper('sp_1');
select * FROM dba_ddl_locks where name like upper('%sp_1%');
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;
select s.*
from v$locked_object l, dba_objects o, v$session s, v$process p
where l.object_id = o.object_id
and l.session_id = s.sid
and s.paddr = p.addr
AND object_name= upper(''表或存储过程名字');
查找 SID:
select t.sid,t.serial# from v$session t
where t.sid=550;
杀死 session 解锁:
alter system kill session '550,10047' immediate; --sid,t.serial#
如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:
select spid, osuser, s.program from v$session s,v$process p where
s.paddr=p.addr and s.sid=550
(550就是上面的sid)
单机:
SELECT A.PID, B.SID, B.SERIAL#, C.SQL_TEXT,A.SPID
FROM V$PROCESS A, V$SESSION B, V$SQLAREA C
WHERE A.ADDR = B.PADDR
AND B.SQL_ADDRESS = C.ADDRESS rac: SELECT A.PID, B.SID, B.SERIAL#, C.SQL_TEXT,A.SPID
FROM GV$PROCESS A, GV$SESSION B, GV$SQLAREA C
WHERE A.ADDR = B.PADDR
AND B.SQL_ADDRESS = C.ADDRESS
再到 linux 下执行 kill 命令:
kill -9 pid
杀 会话:
select a.USERNAME,a.MACHINE, sql_text,'alter system kill session '''||a.SID||','||a.SERIAL#||',@'||a.INST_ID||'''immediate;' ,status
from gV$session a inner join GV$sql b on a.sql_id=b.sql_id
WHERE status = 'ACTIVE'
定时任务,杀掉特定服务器上执行超过一个小时的语句:
create or replace procedure ks_kill_sp_timeout
/******************************************************************
存储过程名称:
存储过程内容:监控存储过程是否正常
作者姓名:
编写时间: 2017年4月17日
输入参数: 输出参数:
*******************************************************************/
as
v_sql varchar2(2000);
v_count number;
begin select count(distinct 'alter system kill session '''||a.SID||','||a.SERIAL#||',@'||a.INST_ID||''' immediate;') into v_count
from gV$session a inner join GV$sql b on a.sql_id=b.sql_id
WHERE a.status = 'ACTIVE'
and a.MACHINE = 'db'
and ceil( (sysdate - a.SQL_EXEC_START) * 24 * 60) >= 60 ; if v_count > 0 then
select distinct 'alter system kill session '''||a.SID||','||a.SERIAL#||',@'||a.INST_ID||''' immediate;' into v_sql
from gV$session a inner join GV$sql b on a.sql_id=b.sql_id
WHERE a.status = 'ACTIVE'
and a.MACHINE = 'db'
and ceil( (sysdate - a.SQL_EXEC_START) * 24 * 60) >= 60 ; dbms_output.put_line(v_sql);
execute immediate v_sql;
else
dbms_output.put_line(v_count);
end if; end;
来源:https://www.cnblogs.com/linn/p/4208893.html
Oracle 存储过程解锁及表解锁和停止执行的更多相关文章
- ORACLE 存储过程解及表解锁和停止执行
查看进程: select * from v$process 根据存储过程名称查找是否被锁: select * FROM dba_ddl_locks where name =upper('sp_1'); ...
- Oracle 存储过程动态建表
动态sql,顾名思义就是动态执行的sql,也就是说在没执行之前是动态的拼接的. 任务 传入参数:新建的表名hd+当前的年和月,例如hd_201105表结构是:字段1:id ,类型是number,可以自 ...
- oracle存储过程--导出数据库表的说明文档
Oracle查询表的名字和comments select a.table_name,b.comments from user_tables a,ALL_TAB_COMMENTS b where a.t ...
- oracle查询锁表解锁语句
--oracle查询锁表解锁语句--首先要用dba权限的用户登录,建议用system,然后直接看sql吧 --1. 如下语句 查询锁定的表: SELECT l.session_id sid, s.se ...
- Oracle数据库表解锁语句
--表解锁select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_m ...
- Oracle创建表语句(Create table)语法详解及示例、、 C# 调用Oracle 存储过程返回数据集 实例
Oracle创建表语句(Create table)语法详解及示例 2010-06-28 13:59:13| 分类: Oracle PL/SQL|字号 订阅 创建表(Create table)语法详解 ...
- 在oracle存储过程中创建暂时表
在oracle的存储过程中,不能直接使用DDL语句,比方create.alter.drop.truncate等. 那假设我们想在存储过程中建立一张暂时表就仅仅能使用动态sql语句了: create o ...
- ORACLE动态sql在存储过程中出现表或视图不存在的解决方法
Oracle动态sql在存储过程中出现表或视图不存在的解决方法 CREATE OR REPLACE PROCEDURE P_test is strsql varchar2(2000); BEGIN ...
- oracle存储过程和游标的使用
oracle存储过程和游标的使用 (2011-04-19 14:52:47) 转载▼ 游标: 用来查询数据库,获取记录集合(结果集)的指针,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情 ...
随机推荐
- 初级知识六——C#事件通知系统实现(观察者模式运用)
观察者模式,绝对是游戏中十分重要的一种模式,运用这种模式,可以让游戏模块间的通信变得简单,耦合度也会大大降低,下面讲解如何利用C#实现事件通知系统. 补充,首先说下这个系统的实现原理,不然一头扎进去就 ...
- Unity中接收服务器消息并广播事件的实现
最近接触的项目,是一个棋牌游戏,棋牌游戏需要在前端进行一些操作,然后向服务器发送数据包,在服务器接收到客户端的数据后,会在服务端进行一系列的判断之后,然后发送给客户端一个返回数据,客户端接收到这个返回 ...
- 机器学习,详解SVM软间隔与对偶问题
今天是机器学习专题的第34篇文章,我们继续来聊聊SVM模型. 我们在上一篇文章当中推导了SVM模型在硬间隔的原理以及公式,最后我们消去了所有的变量,只剩下了\(\alpha\).在硬间隔模型当中,样本 ...
- jQuery提供的Ajax方法
jQuery提供了4个ajax方法:$.get() $.post() $.ajax() $.getJSON() 1.$.get() $.get(var1,var2,var3,var4): 参数1 ...
- Java生成1,2,2,3,3,3,4,4,4,4,5...序列
程序很简单,无须赘述. 竖向输出方式: public class Test { public static void main(String[] args) { int n=0; for(n=1;n& ...
- Sentinel使用
Sentinel控制台的功能主要包括:流量控制.降级控制.热点配置.系统规则和授权规则等 # 安装sentinel的控制台 ## 下载地址 Sentinel控制台下载地址: https://githu ...
- Ubuntu 16.04 安装Python 3.6
1.配置软件仓库,因为python 3.6 新版没有发布到ubuntu的正式仓库中,咱们通过第3方仓库来做.在命令行中输入: sudo add-apt-repository ppa:jonathonf ...
- Sympy解方程-求极限-微分-积分-矩阵运算
简介 Sympy是一个Python的科学计算库,用一套强大的符号计算体系完成诸如多项式求值.求极限.解方程.求积分.微分方程.级数展开.矩阵运算等等计算问题.虽然Matlab的类似科学计算能力也很强大 ...
- 解Bug之路-串包Bug
解Bug之路-串包Bug 笔者很热衷于解决Bug,同时比较擅长(网络/协议)部分,所以经常被唤去解决一些网络IO方面的Bug.现在就挑一个案例出来,写出分析思路,以飨读者,希望读者在以后的工作中能够少 ...
- sql注入 --显错注入
前提知识 数据库:就是将大量数据把保存起来,通过计算机加工而成的可以高效访问数据库的数据集合数据库结构:库:就是一堆表组成的数据集合表:类似 Excel,由行和列组成的二维表字段:表中的列称为字段记录 ...