Oracle数据库锁表及解锁进程

下午代码迁移,更新数据库记录时for update语句无法执行,数据库被锁,KILL掉几个进程搞定。

Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?简要介绍一下。

锁表查询的代码有以下的形式: 

 select count(*) from v$locked_object;

  select * from v$locked_object;

查看哪个表被锁

select b.owner,b.object_name,a.session_id,a.locked_mode

from v$locked_object a,dba_objects b

where b.object_id = a.object_id;

查看是哪个session引起的

select b.username,b.sid,b.serial#,logon_time

 from v$locked_object a,v$session b

 where a.session_id = b.sid order by b.logon_time;

杀掉对应进程

执行命令:

alter system kill session'1025,41';

其中1025为sid,41为serial#。

 

 

时间: 2024-09-19 09:36:52

Oracle数据库锁表及解锁进程的相关文章

oracle查询锁表与解锁情况提供解决方案_oracle

如果发生了锁等待,我们可能更想知道是谁锁了表而引起谁的等待 以下的语句可以查询到谁锁了表: 复制代码 代码如下: SELECT /*+ rule */ s.username, decode(l.type,'TM','TABLE LOCK', 'TX','ROW LOCK', NULL) LOCK_LEVEL, o.owner,o.object_name,o.object_type, s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser F

sql 锁表和解锁 mysql语句

sql 锁表和解锁 mysql教程语句 对于MySQL来说,有三种锁的级别:页级.表级.行级 页级的典型代表引擎为BDB. 表级的典型代表引擎为MyISAM,MEMORY以及很久以前的ISAM. 行级的典型代表引擎为INNODB. -我们实际应用中用的最多的就是行锁. 行级锁的优点如下: 1).当很多连接分别进行不同的查询时减小LOCK状态. 2).如果出现异常,可以减少数据的丢失.因为一次可以只回滚一行或者几行少量的数据. 行级锁的缺点如下: 1).比页级锁和表级锁要占用更多的内存. 2).进

介绍了Oracle数据库锁的种类及研究

本文通过对Oracle数据库锁机制的研究,首先介绍了Oracle数据库锁的种类,并描述了实际应用中遇到的与锁相关的异常情况,特别对经常遇到的由于等待锁而使事务被挂起的问题进行了定位及解决,并对死锁这一比较严重的现象,提出了相应的解决方法和具体的分析过程. 数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性. 加锁是实现数据库并发控制的一个非常重要的技术.当事务在对某

oracle 数据库锁类型 TM锁和TX锁

问题描述 oracle 数据库锁类型 TM锁和TX锁 oracle 9i 10g 编程艺术书中对oracle 的锁类型有三种分类:DML锁,DDL 锁 以及 内部锁和闩 针对DML 锁并没有详细的介绍,只说明有TM(表)锁 和TX(行)锁 网上搜索了很多资料,在资料中有具体的分类 问题是:表头说这些锁都是TM锁... 但是我怎么感觉2,3 都属于TX锁呢?2,3 到底是TM 锁还是 TX 锁呢? 解决方案 TX锁和TM锁不是互斥的,DML 锁 先由TM锁获取表级锁,然后TX 在对具体行修改. 这

[ASP.NET]对Oracle数据库创建表/判断数据表是否已存在

asp.net|oracle|创建|数据|数据库 对Oracle数据库创建表: Dim myConnectionString As String Dim myConnection As OleDbConnection Dim myCommand As OleDbCommand Dim myCreateSQL As String myConnectionString = "Provider='OraOLEDB.Oracle.1';User ID=[User ID];Data Source=[Dat

sql oracle数据库关联表查询

问题描述 sql oracle数据库关联表查询 现在有一个教师表(教师号 教师名) 课程号(教师号 课程号 课程名) 教室表(教师号 课程号 教室号 教室名) 想显示所有教室的教师名和课程名. 就是想问这种关联的查询语句 排除表中一些矛盾的存在哈 谢谢 解决方案 select b.教师名,c.课程名 from 教室表 a LEFT JOIN 教师表 b ON a.教师号=b.教师号 LEFT JOIN 课程表 c ON 教师表 b ON a.教师号=c.教师号 这个才是对的,刚刚没看清楚写错了.

Oracle数据库两表更新

问题描述 Oracle数据库两表更新 问个问题:在一个数据库中把两个表结构相同的表更新一下:把A中的数据更新到表B中,B中有而A中没有的则把B中的删除,A中有而B中没有的则插入到B中,B中与A不相同的则修改.数据量比较大,该怎么样才能高效率的完成? 解决方案 还有就是,把B中删除,再插入A中这个不行

java 查询oracle数据库所有表DatabaseMetaData的用法(详解)_java

一 . 得到这个对象的实例 Connection con ; con = DriverManager.getConnection(url,userName,password); DatabaseMetaData dbmd = con.getMetaData(); 二. 方法getTables的用法 原型: ResultSet DatabaseMetaData.getTables(String catalog,String schema,String tableName,String []type

Oracle数据库DROP表的时候出现的报错!急急急……

问题描述 Oracle数据库DROP表的时候出现的报错!急急急-- 删除数据库的时候就报这个错,OEA-00604 递归SQL级别1-- 我截了图了,大家帮我看一下. 哇靠 上传不上图片 报错如下 ORA-00604: 递归 SQL 级别 1 出现错误 ORA-00942: 表或视图不存在 ORA-06512:在line 19 解决方案 急急 解决方案二: 1.没事别乱删除表 2.请检查一下是否有约束