Oracle的表锁死以及解锁

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;

--解锁

--用dba权限的用户登陆数据库。

1、select * from v$locked_object 查出被锁定的对象,其中object_id是对象的ID,session_id是被锁定对象有session ID;

2、select object_name, object_type from dba_objects where object_id = 刚才查出来的object_id;(根据v$locked_object里的object_id提出来的)
这样来查被锁定这个对象的名字,如果能确定是哪个TABLE被锁并且要解锁,则再执行
3、select sid, serial#, machine, program from v$session where sid =第1步中查出来的session_id;(是根据v$locked_object对应锁定记录的session_id找出来的) 然后
4、alter system kill session ‘sid,serial#‘;用来杀死这个会话;
以上几个步骤即能解决对象被锁定问题。

另外附上锁定一个表的语句:
LOCK TABLE tablename IN EXCLUSIVE MODE;将锁定整个表

  

时间: 2024-10-10 05:26:06

Oracle的表锁死以及解锁的相关文章

Oracle锁表查询和解锁方法

数据库操作语句的分类 DDL:数据库模式定义语言,关键字:create DML:数据操纵语言,关键字:Insert.delete.update DCL:数据库控制语言 ,关键字:grant.remove DQL:数据库查询语言,关键字:select oracle表在什么情况下会被锁住 DML锁又可以分为,行锁.表锁.死锁 行锁:当事务执行数据库插入.更新.删除操作时,该事务自动获得操作表中操作行的排它锁. 表级锁:当事务获得行锁后,此事务也将自动获得该行的表锁(共享锁),以防止其它事务进行DDL

Oracle 锁表查询及解锁

如果对 Oracle 数据表中的数据进行 增删改 操作时卡住无响应,很可能是表已被锁定.使用下面的命令可以解决锁定问题. 锁表状态查询. 直接复制粘贴就可以. --锁表查询SQL 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;

Oracle查看表锁定及解锁

在对Oracle数据库的Update或者Insert等操作没有反应时,很有可能是因为被操作的表被锁定,导致无法进行操作.这个时候需要解锁. 首先查看具体有哪些表被锁定 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; 查询结果如下: 然

oracle 锁表查看与解锁

查看被锁的表: select l.session_id,o.owner,o.object_name from v$locked_object l,dba_objects o where l.object_id=o.object_id; 查看被锁表的serial: select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid ord

Oracle锁表查询与解锁

1.查看锁表进程:select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID; 2.杀掉锁表进程:  记录下SID和serial# ,分别替换掉下面的1155,39095,即可解除锁表 alter system kill session '1155,39095'; 原文地址:https://www.cnblogs.com/banxian-yi/p/11023729.html

Oracle数据库锁表查询以及解锁进程

Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?本文我们主要就介绍一下这部分内容. 锁表查询的代码有以下的形式: select count(*) from v$locked_object; select * from v$locked_object; 查看哪个表被锁 1.select b.owner,b.object_name,a.session_id,a.locked_mode 2. from v$locked_object a,dba

oracle数据库表被锁的解锁方法

亲测可用 Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?本文我们主要就介绍一下这部分内容.(1)锁表查询的代码有以下的形式:select count(*) from v$locked_object;select * from v$locked_object;(2)查看哪个表被锁select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,db

oracle表锁住 解锁办法

第一种方法: 用系统账户如sys      as  SYSDBA 登录进去 1.查看数据库锁,诊断锁的来源及类型:  select object_id,session_id,locked_mode from v$locked_object;  或者用以下命令:  select b.owner,b.object_name,l.session_id,l.locked_mode  from v$locked_object l, dba_objects b  where b.object_id=l.ob

oracle 锁表 及 解锁

很久没有写博客了.不知道写什么 今天,让我清一张表的数据,结果清了之后,系统直接不动了,就好像服务器挂死了一样. 后来找了半天才发现,原来是我删除数据之后没有提交事物造成了数据库锁表,然后又不明白了, 什么是锁表呢,于是就上网去查 查了半天,大多数都是说怎么解决锁表和查询锁表的,但是只了解方法还不够,又想知道原理,于是 就继续往深里查查到了oracle的锁机制 由于数据库是多用户同时使用的共享资源,当多个用户并发的存取事物的时候,数据库中就会发生多个进程 同时操作同一个数据的情况,若对并发操作不