Oracle查锁表(史上最全)

Oracle查锁表

  • Oracle分两种锁,一种是DDL锁,一种是DML锁。
  • 一、Oracle DDL锁的解锁(dba_ddl_locks视图)
    • 1.1、查表的DDL锁的详情(kill session脚本、表名、执行锁表的SQL等)
    • 1.2、解锁表的DDL锁
      • 1.2.1、解锁表的DDL锁 - 1、执行kill session脚本
        • Ⅰ、打开命令窗口
        • Ⅱ、执行上面生成好的kill session脚本
      • 1.2.2、解锁表的DDL锁 - 2、调用auto_server_pkg包的kill_session存过执行杀会话kill session。
  • 二、Oracle DML锁的解锁(gv$locked_object视图)
    • 2.1、查表的DML锁的详情(kill session脚本、表名、执行锁表的SQL等)
    • 2.2、解锁表的DML锁
      • 2.2.1、解锁表的DML锁 - 1、执行kill session脚本
        • Ⅰ、打开命令窗口
        • Ⅱ、执行上面生成好的kill session脚本
      • 2.2.2、解锁表的DML锁 - 2、调用auto_server_pkg包的kill_session存过执行杀会话kill session。
  • 三、附录
    • 3.1、根据sid查sql_text(gv\$session、gv$sqlarea)
    • 3.2、查锁表的详情(dba_locks视图)
    • 3.3、Oracle查询锁定表的会话信息(gv\$session、gv\$process、gv$sqlarea)
    • 3.4、gv$lock视图


Oracle分两种锁,一种是DDL锁,一种是DML锁。

一、Oracle DDL锁的解锁(dba_ddl_locks视图)

1.1、查表的DDL锁的详情(kill session脚本、表名、执行锁表的SQL等)

查DDL锁的数据字典,SQL如下:

SELECT DISTINCT 'alter system kill session ''' || s.sid || ',' || s.serial# || ',@' ||s.inst_id || ''' immediate;' AS kill_session_scripts,s.sql_id,a.sql_text,s.sid,s.serial#FROM dba_ddl_locks l,gv$session    s,gv$sqlarea     aWHERE 1 = 1AND l.session_id = s.sidAND s.sql_id = a.sql_idAND lower(a.sql_text) NOT LIKE '%alter system kill session %'
-- AND l.owner IN ('TZQ','LOG')
;

查表的DDL锁的详情的查询结果如下图所示:
在这里插入图片描述

1.2、解锁表的DDL锁

有两种方式可以解锁表的DDL锁。

  • 一是:执行kill session脚本。
  • 二是:调用auto_server_pkg包的kill_session存过执行杀会话kill session。

1.2.1、解锁表的DDL锁 - 1、执行kill session脚本

Ⅰ、打开命令窗口

在这里插入图片描述

Ⅱ、执行上面生成好的kill session脚本

alter system kill session '314,93,@1' immediate;

在这里插入图片描述

1.2.2、解锁表的DDL锁 - 2、调用auto_server_pkg包的kill_session存过执行杀会话kill session。

auto_server_pkg包的代码详见博客:Oracle解锁表、包、用户、杀会话、停job
打开命令行窗口,执行下面命令:

AUTO_SERVER_PKG
execute sys.auto_server_pkg.kill_session(6335,15519);

二、Oracle DML锁的解锁(gv$locked_object视图)

2.1、查表的DML锁的详情(kill session脚本、表名、执行锁表的SQL等)

查DML锁的数据字典,SQL如下:

SELECT DISTINCT 'alter system kill session ''' || s.sid || ',' || s.serial# || ',@' ||s.inst_id || ''' immediate;' AS kill_session_scripts,o.owner,o.object_name,s.sql_id,a.sql_text,s.sid,s.serial#FROM gv$locked_object l,dba_objects      o,gv$session       s,gv$sqlarea        aWHERE l.object_id = o.object_idAND l.session_id = s.sidAND l.inst_id = s.inst_idAND s.sql_id = a.sql_id-- AND o.owner IN ('TZQ','LOG')
;

查表的DML锁的详情的查询结果如下图所示:
在这里插入图片描述

2.2、解锁表的DML锁

有两种方式可以解锁表的DML锁。

  • 一是:执行kill session脚本。
  • 二是:调用auto_server_pkg包的kill_session存过执行杀会话kill session。

2.2.1、解锁表的DML锁 - 1、执行kill session脚本

Ⅰ、打开命令窗口

在这里插入图片描述

Ⅱ、执行上面生成好的kill session脚本

alter system kill session '314,93,@1' immediate;

在这里插入图片描述

2.2.2、解锁表的DML锁 - 2、调用auto_server_pkg包的kill_session存过执行杀会话kill session。

auto_server_pkg包的代码详见博客:Oracle解锁表、包、用户、杀会话、停job
打开命令行窗口,执行下面命令:

AUTO_SERVER_PKG
execute sys.auto_server_pkg.kill_session(6335,15519);

三、附录

3.1、根据sid查sql_text(gv$session、gv$sqlarea)

SELECT s.sid,s.serial#,s.sql_id,s.sql_hash_value,s.username,a.sql_textFROM gv$session sLEFT JOIN gv$sqlarea aON s.sql_id = a.sql_idWHERE s.sql_id IS NOT NULLAND a.sql_text NOT LIKE '%AND a.sql_text NOT LIKE %';

在这里插入图片描述

3.2、查锁表的详情(dba_locks视图)

SELECT DISTINCT 'alter system kill session ''' || s.sid || ',' || s.serial# || ',@' ||s.inst_id || ''' immediate;' AS kill_session_scripts,l.session_id,s.serial#,l.lock_TYPE,l.mode_held,l.mode_requested,CASEWHEN o1.object_name IS NOT NULLTHEN o1.owner||'.'||o1.object_nameELSE NULLEND AS id1_object_name,CASEWHEN o2.object_name IS NOT NULLTHEN o2.owner||'.'||o2.object_nameELSE NULLEND AS id2_object_name,l.last_convert,l.blocking_others,a.SQL_TEXTFROM dba_locks lLEFT JOIN dba_objects o1ON l.lock_id1 = o1.OBJECT_IDLEFT JOIN dba_objects o2ON l.lock_id2 = o2.OBJECT_IDLEFT JOIN gv$session sON l.session_id = s.SIDLEFT JOIN v$sqlarea aON s.sql_id = a.sql_idWHERE 1=1AND a.SQL_TEXT IS NOT NULLAND (o1.owner IN ('TZQ','LOG') ORo2.owner IN ('TZQ','LOG'))
;

在这里插入图片描述

3.3、Oracle查询锁定表的会话信息(gv$session、gv$process、gv$sqlarea)

Oracle查询锁定表的会话信息,可以执行下面的SQL来进行查询:

SELECT s.sid,s.serial#,p.spid,s.username,s.osuser,s.program,s.module,s.action,s.logon_time,s.type,a.sql_textFROM gv$session s,gv$process p,gv$sqlarea aWHERE s.paddr = p.addrAND s.sql_id = a.sql_idAND s.status = 'ACTIVE'AND s.username IS NOT NULLAND s.type != 'BACKGROUND'AND a.sql_text NOT LIKE '%gv$sqlarea a%'ORDER BY s.logon_time DESC;

在这里插入图片描述

3.4、gv$lock视图

此查询将返回被锁定的表的会话ID、用户名、机器名、锁模式、锁定类型以及锁定对象的ID等信息。请注意,如果有多个锁定类型,则此查询可能会返回多行。

SELECT s.sid,s.serial#,s.username,s.osuser,s.machine,l.type,l.block,l.id1,l.id2,a.SQL_TEXT,CASEWHEN o1.object_name IS NOT NULLTHEN o1.owner||'.'||o1.object_nameELSE NULLEND AS id1_object_name,CASEWHEN o2.object_name IS NOT NULLTHEN o2.owner||'.'||o2.object_nameELSE NULLEND AS id2_object_nameFROM gv$session s,gv$lock    l,gv$sqlarea a,dba_objects o1,dba_objects o2WHERE s.sid = l.sidAND s.sql_id = a.sql_idAND l.id1 = o1.OBJECT_ID(+)AND l.id2 = o2.OBJECT_ID(+)AND a.SQL_TEXT NOT LIKE '%,gv$sqlarea a%'
;

查询结果如下图:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/53902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql入门-多表查询

案例涉及表 ----------------------------------建表语句之前翻看之前博客文章 多表查询 -- 学生表 create table studen ( id int primary key auto_increment comment id, name varchar(50) comment 姓名, no varchar(10) comment 学号 ) comment 学生表; insert…

卷积神经网络——下篇【深度学习】【PyTorch】【d2l】

文章目录 5、卷积神经网络5.10、⭐批量归一化5.10.1、理论部分5.10.2、代码部分 5.11、⭐残差网络(ResNet)5.11.1、理论部分5.11.2、代码部分 话题闲谈 5、卷积神经网络 5.10、⭐批量归一化 5.10.1、理论部分 批量归一化可以解决深层网络中梯度消失和…

使用PyMuPDF添加PDF水印

使用Python添加PDF水印的博客文章。 C:\pythoncode\new\pdfwatermark.py 使用Python在PDF中添加水印 在日常工作中,我们经常需要对PDF文件进行处理。其中一项常见的需求是向PDF文件添加水印,以保护文件的版权或标识文件的来源。本文将介绍如何使用Py…

Eureka:集群环境配置

创建三个集群 导包 <!-- 导包--><dependencies><!-- Eureka -server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId><version>1.…

[Open-source tool] 可搭配PHP和SQL的表單開源工具_Form tools(1):簡介和建置

Form tools是一套可搭配PHP和SQL的表單開源工具&#xff0c;可讓開發者靈活運用&#xff0c;同時其有數個表單模板和應用模組供挑選&#xff0c;方便且彈性。Form tools已開發超過20年&#xff0c;為不同領域的需求者或開發者提供一個自由和開放的平台&#xff0c;使他們可建構…

【C++】—— C++11之可变参数模板

前言&#xff1a; 在C语言中&#xff0c;我们谈论了有关可变参数的相关知识。在C11中引入了一个新特性---即可变参数模板。本期&#xff0c;我们将要介绍的就是有关可变参数模板的相关知识&#xff01;&#xff01;&#xff01; 目录 序言 &#xff08;一&#xff09;可变参…

电子电路学习笔记之SA1117BH-1.2TR——LDO低压差线性稳压器

关于LDO调节器&#xff08;Low Dropout Regulator&#xff09;是一种电压稳压器件&#xff0c;常用于电子设备中&#xff0c;用于将高电压转换为稳定的低电压。它能够在输入电压和输出电压之间产生较小的差异电压&#xff0c;因此被称为"低压差稳压器"。 LDO调节器通…

web基础http与apache

一、http相关概念&#xff1a; http概述&#xff1a; HTTP 是一种用作获取诸如 HTML 文档这类资源的协议。它是 Web 上进行任何数据交换的基础&#xff0c;同时&#xff0c;也是一种客户端—服务器&#xff08;client-server&#xff09;协议 为解决"用什么样的网络协…

Datawhale AI夏令营 - 用户新增预测挑战赛 | 学习笔记

任务1&#xff1a;跑通Baseline # 1. 导入需要用到的相关库 # 导入 pandas 库&#xff0c;用于数据处理和分析 import pandas as pd # 导入 numpy 库&#xff0c;用于科学计算和多维数组操作 import numpy as np # 从 sklearn.tree 模块中导入 DecisionTreeClassifier 类 # De…

【docker】运行registry

registry简介 Docker registry是docker镜像仓库的服务,用于存储和分发docker镜像。 Docker registry主要特点和功能: 存储docker镜像:提供持久化存储docker镜像的功能,存储镜像的各个layer。 分发镜像:拉取和推送镜像的去中心化存储和分发服务。 支持版本管理:给镜像打标签…

【Visual Studio】生成.i文件

环境 VS版本&#xff1a;VS2013 问题 如何生成.i预编译文件&#xff1f; 步骤 1、打开VS项目属性&#xff0c;打开C/C\预处理器页面&#xff0c;【预处理到文件】选择是&#xff0c;开启。 2、生成文件如下。 3、正常编译需要关闭此选项。

vue ui 创建项目没有反应

问题 cmd中输入 vue ui 没有反应 解决办法 vue ui命令需要vue3.0以上的版本才可以 1、查看当前版本 vue --version vue版本在3.0以下是没有ui命令的 2、查看版本所拥有的命令 vue -h 3、卸载之前版本的vue npm uninstall vue-cli -g 卸载完成&#xff0c;检查是否已经…

前端高频面试题 js中堆和栈的区别和浏览器的垃圾回收机制

一、 栈(stack)和 堆(heap) 栈(stack)&#xff1a;是栈内存的简称&#xff0c;栈是自动分配相对固定大小的内存空间&#xff0c;并由系统自动释放&#xff0c;栈数据结构遵循FILO&#xff08;first in last out&#xff09;先进后出的原则&#xff0c;较为经典的就是乒乓球盒结…

使用秘籍|如何实现图数据库 NebulaGraph 的高效建模、快速导入、性能优化

本文整理自 NebulaGraph PD 方扬在「NebulaGraph x KubeBlocks」meetup 上的演讲&#xff0c;主要包括以下内容&#xff1a; NebulaGraph 3.x 发展历程NebulaGraph 最佳实践 建模篇导入篇查询篇 NebulaGraph 3.x 的发展历程 NebulaGraph 自 2019 年 5 月开源发布第一个 alp…

Notion团队协作魔法:如何玩转数字工作空间?

Notion简介 Notion已经成为现代团队协作的首选工具之一。它不仅仅是一个笔记应用&#xff0c;更是一个强大的团队协作平台&#xff0c;能够满足多种工作场景的需求。 Notion的核心功能 Notion提供了丰富的功能&#xff0c;如文档、数据库、看板、日历等&#xff0c;满足团队的…

【日常积累】Linux下ftp服务安装

概述 FTP是一种在互联网中进行文件传输的协议&#xff0c;基于客户端/服务器模式&#xff0c;默认使用20、21号端口&#xff0c;其中端口20用于进行数据传输&#xff0c;端口21用于接受客户端发出的相关FTP命令与参数。FTP服务器普遍部署于内网中&#xff0c;具有容易搭建、方…

MyBatis与Spring整合以及AOP和PageHelper分页插件整合

目录 前言 一、MyBatis与Spring整合的好处以及两者之间的关系 1.好处 2.关系 二、MyBatis和Spring集成 1.导入pom.xml 2.编写配置文件 3.利用mybatis逆向工程生成模型层代码 三、常用注解 四、AOP整合pageHelper分页插件 创建一个切面 测试 前言 MyBatis是一个开源的…

uniapp - 全平台兼容实现上传图片带进度条功能,用户上传图像到服务器时显示上传进度条效果功能(一键复制源码,开箱即用)

效果图 uniapp小程序/h5网页/app实现上传图片并监听上传进度,显示进度条完整功能示例代码 一键复制,改下样式即可。 全部代码 记得改下样式,或直接

计算机安全学习笔记(II):自主访问控制 - DAC

书接上篇博客&#xff0c;自主访问方案是指一个实体可以被授权按其自己的意志使另一个实体能够访问某些资源。DAC的一种通常访问方式是在操作系统或数据库管理系统中运用的访问矩阵(access matrix)。 矩阵中的一维由试图访问资源的被标识的主体组成。这个列表一般由用户或用户…

无涯教程-进程 - 组会话控制

在本章中&#xff0c;我们将熟悉进程组&#xff0c;会话和作业控制。 进程组(Process Groups ) - 进程组是一个或多个进程的集合&#xff0c;一个进程组由一个或多个共享相同进程组标识符(PGID)的进程组成。 会话(Sessions) - 它是各种进程组的集合。…