`
yanzilee9292
  • 浏览: 538624 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Oracle锁表查询及解锁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; 

 

 

 ORACLE中查看当前系统中锁表情况 
select * from v$locked_object 
可以通过查询v$locked_object拿到sid和objectid,然后用sid和v$session链表查询是哪里锁的表,用v$session中的objectid字段和dba_objects的id字段关联,查询详细的锁表情况。

查询SQL如下: 
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, v$process p 
where ao.object_id = lo.object_id 
   and lo.session_id = sess.sid;


查询是什么SQL引起了锁表的原因,SQL如下: 
select l.session_id sid, 
       s.serial#, 
       l.locked_mode, 
       l.oracle_username, 
       s.user#, 
       l.os_user_name, 
       s.machine, 
       s.terminal, 
       a.sql_text, 
       a.action 
  from v$sqlarea a, v$session s, v$locked_object l 
where l.session_id = s.sid 
   and s.prev_sql_addr = a.address 
order by sid, s.serial#;

 

杀掉对应进程

执行命令:alter system kill session'1025,41';

其中1025为sid,41为serial#。

关于Oracle锁表查询及解锁kill进程的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!

 

分享到:
评论

相关推荐

    Oracle的锁表与解锁

    本文将深入探讨Oracle中的锁机制,特别是如何锁表与解锁,以及相关的SQL查询语句,帮助数据库管理员和开发人员更好地理解和管理Oracle数据库的锁状态。 #### 锁的类型 在Oracle中,锁主要分为两种类型: 1. **TX...

    oracle锁表及解锁

    ### Oracle锁表与解锁详解 在Oracle数据库管理中,锁是一种关键机制,用于控制多个用户对数据资源的并发访问,防止数据冲突和不一致。本文将深入探讨Oracle中检查锁表的方法以及如何对表进行解锁。 #### Oracle锁...

    oracle锁表后,如何解锁

    因此,在不知道谁锁的情况下,可以通过查询锁定信息和杀掉锁定进程来解锁表。 在实际操作中,需要注意的是,杀掉锁定进程可能会导致锁定用户的会话中断,因此需要小心地进行操作。同时,需要注意锁定表的实际情况,...

    oracle存储过程解锁

    总结来说,解锁Oracle存储过程的过程涉及到识别锁定会话、查询锁定详情,并最终终止锁定会话以释放锁定。这一系列操作需要对Oracle数据库的系统视图有深入的理解,同时也需要具备一定的数据库管理经验。通过遵循上述...

    oracle锁表处理

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

    oracle锁表解决

    ### Oracle锁表解决 在Oracle数据库管理中,锁表是一个常见的问题,特别是在高并发的应用场景下。当一个表被锁定时,其他用户或进程可能无法访问该表,从而导致应用程序出现延迟或者错误。因此,了解如何有效地解锁...

    MySQL锁类型以及子查询锁表问题、解锁1

    如果查询条件未指定主键或者无法唯一确定一行,如使用`<>`或`LIKE`操作符,MySQL可能会退化为表级锁,锁定整个表。例如: ```sql SELECT * FROM products WHERE id<>'3' FOR UPDATE; SELECT * FROM products WHERE ...

    oracle数据表解锁

    B.SESSION_ID 锁表SESSION_ID, B.ORACLE_USERNAME 锁表用户名, decode(D.type, 'XR', 'NULL', 'RS', 'SS(Row-S)', 'CF', 'SS(Row-S)', 'TM', 'TABLE LOCK', 'PW', 'TABLE LOCK', 'TO', 'TABLE LOCK',...

    oracle锁表查询

    ### Oracle锁表查询知识点 #### 一、Oracle锁机制简介 在Oracle数据库中,为了确保数据的一致性和并发性,采用了一种称为“锁”的机制来控制对数据资源的访问。锁可以防止多个用户同时修改同一数据,从而避免数据...

    Oracle表死锁与解锁

    要检测Oracle中的表死锁,可以使用以下SQL查询: 1. 查询锁定对象的详细信息: ```sql SELECT object_name, session_id, os_user_name, Oracle_username, process, locked_mode, status FROM v$locked_object l, ...

    ORACLE解锁方法的一点资料

    ### ORACLE解锁方法详解 #### 一、引言 在Oracle数据库管理中,锁机制是用于控制并发访问的重要手段之一。然而,在某些情况下,不当的锁可能会导致性能问题甚至系统故障,因此掌握如何解锁变得至关重要。本文将...

    oracle解锁及查已执行SQL语句

    在Oracle数据库管理中,解锁资源和查询已执行的SQL语句是常见的操作需求,尤其是在处理数据库性能问题或恢复被锁定的用户时。根据给定的文件信息,我们可以深入探讨几个关键的知识点,包括如何解锁Oracle中的资源、...

    oracle查看被锁的表和解锁

    ### Oracle查看被锁的表与解锁方法 在Oracle数据库管理及开发过程中,有时会遇到表被锁的问题,这种情况可能会导致应用程序出现性能瓶颈甚至完全无法执行某些操作。因此,掌握如何查看哪些表被锁以及如何解锁变得尤...

    表是否被锁住

    在Oracle数据库管理中,了解如何查询表是否被锁定以及如何执行解锁操作是至关重要的技能,尤其是在处理并发事务、性能调优或解决死锁问题时。本文将深入探讨Oracle中的表锁机制,包括如何识别锁定的表,理解不同类型...

    oracle解锁

    当oracle出现死锁时,查询死锁的内容,kill死锁进程。

    oracle表解锁

    本文将详细介绍如何解锁Oracle表,并提供相关的SQL命令和步骤。 首先,了解Oracle表锁定的原因是必要的。锁定主要是为了实现多用户并发访问数据库时的数据一致性。在Oracle中,锁定机制用于控制对数据的访问,防止...

    快速查找oracle锁对象

    Oracle数据库提供了多种类型的锁,如行级锁(Row Locks)、表级锁(Table Locks)、共享锁(Shared Locks)和独占锁(Exclusive Locks)等。这些锁用于确保数据的一致性和完整性,防止数据被不恰当的方式修改。在...

    Oracle 查找被锁的表并解锁

    本文将详细介绍如何查找被锁的表以及如何解锁这些表,以确保数据库系统的稳定性和效率。 首先,要查找被锁的表,可以使用以下SQL查询: ```sql select b.owner, b.object_name, a.session_id, a.locked_mode from ...

    Oracle 查询死锁并解锁的终极处理方法

    - 在**Unix**上,作为root用户执行`kill -9`命令来终止进程,如`#kill -9 12345`(12345是查询到的SPID)。 - 在**Windows**上,可以使用Oracle提供的`orakill`命令来杀死线程,格式为`orakill <sid> <thread>`,...

Global site tag (gtag.js) - Google Analytics