抓取锁的sql语句-第三次修改

CREATE OR REPLACE PROCEDURE SOLVE_LOCK

AS

V_SQL VARCHAR2(3000); --定义 v_sql 接受抓取锁的sql语句
CUR_LOCK SYS_REFCURSOR; --定义游标变量,循环执行抓取锁的sql语句

TYPE TP_LOCK IS RECORD( --定义 record类型的 变量
V_SID NUMBER,
V_TYPE VARCHAR2(10),
V_ID1 NUMBER,
V_ID2 NUMBER,
V_LMODE VARCHAR2(200),
V_REQUEST VARCHAR2(200),
V_LOCK_TIME NUMBER,
V_BLOCK NUMBER );

RECORDS_LOCK TP_LOCK;

BEGIN
V_SQL:=‘SELECT SID,TYPE,ID1,ID2,
DECODE(LMODE,0, ‘‘NONE‘‘,1,‘‘NULL‘‘, 2, ‘‘ROW SHARE‘‘ ,3, ‘‘ROW EXCLUSIVE‘‘ ,4, ‘‘SHARE‘‘ ,5, ‘‘SHARE ROW EXCLUSIVE‘‘ ,6 ,‘‘EXCLUSIVE‘‘ ,‘‘HAHA‘‘) LOCK_TYPE,
DECODE(REQUEST,0, ‘‘NONE‘‘,1,‘‘NULL‘‘, 2, ‘‘ROW SHARE‘‘ ,3, ‘‘ROW EXCLUSIVE‘‘ ,4, ‘‘SHARE‘‘ ,5, ‘‘SHARE ROW EXCLUSIVE‘‘ ,6 ,‘‘EXCLUSIVE‘‘ ,‘‘HAHA‘‘) LOCK_REQUEST,
CTIME,BLOCK FROM V$LOCK WHERE TYPE IN (‘‘TM‘‘,‘‘TX‘‘)‘ ;

OPEN CUR_LOCK FOR V_SQL;
LOOP
FETCH CUR_LOCK INTO RECORDS_LOCK;

EXIT WHEN CUR_LOCK%NOTFOUND;

IF RECORDS_LOCK.V_REQUEST <> ‘NONE‘ THEN --抓取发出请求锁的会话
DBMS_OUTPUT.PUT_LINE(‘SID: ‘||RECORDS_LOCK.V_SID||‘ is request a lock ,lock_mode is ‘||RECORDS_LOCK.V_REQUEST||‘ and being locked ‘|| RECORDS_LOCK.V_LOCK_TIME||‘s‘);
END IF;

IF RECORDS_LOCK.V_BLOCK <> 0 THEN --抓取发生锁阻塞的会话
DBMS_OUTPUT.put_line(‘SID: ‘||RECORDS_LOCK.V_SID||‘ is make a lock , lock_mode is ‘||RECORDS_LOCK.V_LMODE);
END IF;

END LOOP;
CLOSE CUR_LOCK;

END SOLVE_LOCK;
/

时间: 2024-10-03 06:44:49

抓取锁的sql语句-第三次修改的相关文章

抓取锁的sql语句-第六次修改

增加异常处理 CREATE OR REPLACE PROCEDURE SOLVE_LOCK AS V_SQL VARCHAR2(3000); --定义 v_sql 接受抓取锁的sql语句V_SQL02 VARCHAR2(3000); KILL_SID NUMBER;KILL_SERIAL NUMBER; CUR_LOCK SYS_REFCURSOR; --定义游标变量,循环执行抓取锁的sql语句CUR_LOCK02 SYS_REFCURSOR; TYPE TP_LOCK IS RECORD( -

抓取锁的sql语句-第五次修改

CREATE OR REPLACE PROCEDURE SOLVE_LOCK AS V_SQL VARCHAR2(3000); --定义 v_sql 接受抓取锁的sql语句V_SQL02 VARCHAR2(3000);V_SQL03 VARCHAR2(3000); KILL_SID NUMBER;KILL_SERIAL NUMBER; CUR_LOCK SYS_REFCURSOR; --定义游标变量,循环执行抓取锁的sql语句CUR_LOCK02 SYS_REFCURSOR; TYPE TP_L

抓取锁的sql语句-第四次修改

--完成情况   变量V_BLOCKING_SID 用来动态抓取 产生锁的会话id,输出参数没有任何问题,但是执行报错  标识符无效! CREATE OR REPLACE PROCEDURE SOLVE_LOCK123 AS V_SQL VARCHAR2(3000); --定义 v_sql 接受抓取锁的sql语句V_SQL02 VARCHAR2(3000);V_SQL03 VARCHAR2(3000); KILL_SID NUMBER;KILL_SERIAL NUMBER; CUR_LOCK S

抓取锁的sql语句-第二次修改

CREATE OR REPLACE PROCEDURE SOLVE_LOCK AS V_SQL VARCHAR2(3000);  --定义 v_sql 接受抓取锁的sql语句 CUR_LOCK SYS_REFCURSOR; --定义游标变量,循环执行抓取锁的sql语句 TYPE TP_LOCK IS RECORD(   --定义 record类型的 变量  V_SID NUMBER, V_TYPE VARCHAR2(10), V_ID1 NUMBER, V_ID2 NUMBER, V_LMODE

PDO中执行SQL语句的三种方法

在PDO中,我们可以使用三种方式来执行SQL语句,分别是 exec()方法,query方法,以及预处理语句prepare()和execute()方法~大理石构件来图加工 在上一篇文章<使用PDO构造函数连接数据库及DSN详解>中,我们介绍了如何使用构造函数连接数据库和DSN的详解,那么我们这篇文章跟大家介绍在PDO中执行SQL语句的三种方式,下面我们将一一介绍! 第一种方法:exec()方法 exec()方法返回执行SQL 语句后受影响的行数,其语法格式如下: 1 int PDO::exec(

SQL语句汇总(二)——数据修改、数据查询

首先创建一张表如下,创建表的方法在上篇介绍过了,这里就不再赘述. 添加新数据: INSERT INTO <表名> (<列名列表>) VALUES (<值列表>)  如: INSERT INTO t_student (student_id,student_name,student_age,student_sex) VALUES (1,'大毛',18,'男'); 其中列名可以省略,省略之后要求插入的值必须与列一一对应: INSERT INTO t_student VALUE

SQL语句增加列、修改列、删除列

SQL语句增加列.修改列.删除列 1.增加列: 1.alter table tableName add columnName varchar(30) 2.ALTER TABLE dbo.doc_exa ADD column_b VARCHAR(20) NULL, column_c INT NULL ; 2.1. 修改列类型: 1.alter table tableName alter column columnName varchar(4000) 2.2. 修改列的名称: 1.EXEC sp_r

sql server抓取表结构的语句

sql server 2008抓取方法: --------------------------------------- SELECT 表名 = Case When A.colorder=1 Then D.name Else '' End, 表说明 = Case When A.colorder=1 Then isnull(F.value,'') Else '' End, 字段序号 = A.colorder, 字段名 = A.name, 字段说明 = isnull(G.[value],''), 标

SQL语句汇总(三)——聚合函数、分组、子查询及组合查询 - Darly

–COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均值 –MAX:计算列的最大值 –MIN:计算列的最小值 首先,创建数据表如下: 执行列.行计数(count): 标准格式 SELECT COUNT(<计数规范>) FROM <表名> 其中,计数规范包括: - * :计数所有选择的行,包括NULL值: - ALL 列名:计数指定列的所有非空值行,如果不写,默认为ALL: - DISTINCT 列名:计数指定列的唯一非空值行. 例,计算班里共有多少学生: