`
lxy2330
  • 浏览: 468550 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ORACLE查解锁

阅读更多
--查看锁
select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;


--杀
--alter system kill session 'sid,serial#';

alter system kill session '100,21177';

帐户解锁

alter user uum_admin account unlock;

 

oracle会话被锁是经常的。可以使用alter system kill session 'sid,serial#'杀死会话,

如果服务器是Linux还可以使用杀死Linux上对应的进程.上网查到了2篇详细的解决方法。

就转了过来:

SELECT 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

FROM v$session s,v$lock l,dba_objects o

WHERE l.sid = s.sid

AND l.id1 = o.object_id(+)

AND s.username is NOT Null

 

 --kill session语句

alter system kill session'50,492';

--以下几个为相关表

SELECT * FROM v$lock;

SELECT * FROM v$sqlarea;

SELECT * FROM v$session;

SELECT * FROM v$process ;

SELECT * FROM v$locked_object;

SELECT * FROM all_objects;

SELECT * FROM v$session_wait;

--1.查出锁定object的session的信息以及被锁定的object名

SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username,

l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time

FROM v$locked_object l, all_objects o, v$session s

WHERE l.object_id = o.object_id

AND l.session_id = s.sid

ORDER BY sid, s.serial# ;

--2.查出锁定表的session的sid, serial#,os_user_name, machine name, terminal和执行的语句

--比上面那段多出sql_text和action

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#;

--3.查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode

SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,

s.terminal, s.logon_time, l.type

FROM v$session s, v$lock l

WHERE s.sid = l.sid

AND s.username IS NOT NULL

ORDER BY sid;

 

 这个语句将查找到数据库中所有的DML语句产生的锁,还可以发现,

任何DML语句其实产生了两个锁,一个是表锁,一个是行锁。

杀锁命令

alter system kill session 'sid,serial#'

SELECT 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

FROM v$session s,v$lock l,dba_objects o

WHERE l.sid = s.sid

AND l.id1 = o.object_id(+)

AND s.username is NOT NULL

如果发生了锁等待,我们可能更想知道是谁锁了表而引起谁的等待

以下的语句可以查询到谁锁了表,而谁在等待。

以上查询结果是一个树状结构,如果有子节点,则表示有等待发生。

如果想知道锁用了哪个回滚段,还可以关联到V$rollname,其中xidusn就是回滚段的USN

col user_name format a10

col owner format a10

col object_name format a10

col object_type format a10

SELECT lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username User_name,

o.owner,o.object_name,o.object_type,s.sid,s.serial#

FROM v$locked_object l,dba_objects o,v$session s

WHERE l.object_id=o.object_id

AND l.session_id=s.sid

ORDER BY o.object_id,xidusn DESC

 

下面是根据需要改写后的脚本,生成了相应的killl命令:

--4.查出锁定object的session的信息以及被锁定的object名,生成kill

select b.owner,

       b.object_name,

       l.session_id,

       x.SERIAL#,

       x.username,

       x.logon_time,

       l.locked_mode,

       'alter system kill session ''' || x.sid || ',' || x.serial# || '''' killsql

  from v$locked_object l, dba_objects b, v$session x

 where b.object_id = l.object_id

   and l.SESSION_ID = x.SID

 order by x.LOGON_TIME asc;

 

 

 

--5.查出锁定object的session的信息以及被锁定的object名,生成kill和Linux系统kill

select b.owner,

       b.object_name,

       l.session_id,

       x.SERIAL#,

       x.username,

       x.logon_time,

       l.locked_mode,

       'alter system kill session ''' || x.sid || ',' || x.serial# || '''' killsql,

       c.spid AS os_process_id,c.pid,

       'ps -ef | grep ' ||c.spid as check_os_process_command,

       'kill -9 ' ||c.spid as kill_os_process_command

  from v$locked_object l, dba_objects b, v$session x,v$process c

 where b.object_id = l.object_id

   and l.SESSION_ID = x.SID

   and c.addr=x.paddr

 order by x.LOGON_TIME asc;

  

 

分享到:
评论

相关推荐

    oracle存储过程解锁

    在IT领域,尤其是在数据库管理与优化中,存储过程的解锁是一项关键技能,尤其对于Oracle数据库而言。当存储过程被锁定时,可能会影响系统的性能和稳定性,因此掌握如何解锁存储过程至关重要。以下是对“oracle存储...

    oracle用户解锁

    综上所述,Oracle用户解锁涉及多个步骤,包括登录数据库、使用SQL命令解锁用户、设置新密码以及查询锁定对象和强制终止会话。掌握这些操作对于Oracle数据库管理员来说至关重要,有助于确保数据库的正常运行和数据的...

    查询ORACLE死锁以及解锁语句

    查询ORACLE死锁以及解锁语句查询ORACLE死锁以及解锁语句

    oracle解锁,死锁

    ### Oracle解锁与死锁解析 #### 一、Oracle解锁与死锁概述 在Oracle数据库管理过程中,解锁与处理死锁是常见的操作需求之一。当多个事务请求对同一资源进行访问时,可能会出现等待的情况,即一个事务正在等待另一...

    oracle查锁和解锁命令

    ### Oracle查锁与解锁命令详解 #### 一、Oracle锁机制简介 在Oracle数据库中,锁是用来控制多个用户对同一数据资源访问的一种机制,目的是为了防止并发操作导致的数据不一致问题。锁分为多种类型,包括行级锁、表...

    oracle 解锁 语句

    ### Oracle解锁语句详解 #### 一、Oracle解锁语句概述 在Oracle数据库管理中,锁定与解锁是常见的操作之一,特别是在处理并发控制时尤为重要。当一个会话长时间占用资源导致其他会话无法正常工作时,可能需要进行...

    oracle查询锁表和解锁byxiaoheng

    oracle查询锁表和解锁。oracle在操作的过程中经常会遇到锁表的情况,一般能够用kill命令消除。

    查询Oracle是否有死锁及解锁

    执行查询语句查询Oracle是否有死锁,以及叫你如何解锁。

    oracle解锁及查已执行SQL语句

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

    ORACLE解锁方法的一点资料

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

    Oracle的锁表与解锁

    ### Oracle的锁表与解锁:深入理解与操作 在Oracle数据库管理中,锁是一个至关重要的概念,用于控制多个用户或进程对数据的并发访问,确保数据的一致性和完整性。锁可以分为行级锁(Row Level Lock)和表级锁...

    ORACLE 如何查询被锁定表及如何解锁释放session

    ### ORACLE 如何查询被锁定表及如何解锁释放session 在Oracle数据库管理中,了解如何查询被锁定的表以及如何解锁这些锁定对于确保数据库高效运行至关重要。本文将详细介绍如何使用Oracle SQL查询锁定的表,并提供一...

    oracle锁表及解锁

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

    oracle解锁

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

    oracle表解锁

    了解如何解锁Oracle中的锁定表是一项重要的数据库管理技能。以下是对这一主题的详细阐述: 1. **锁定类型与原因** Oracle数据库提供多种锁定机制,包括行级锁、表级锁和模式锁等,用于确保数据的一致性和完整性。...

    oracle 解锁 imp等学习

    "Oracle 解锁 imp等学习"这个标题暗示了我们将探讨Oracle数据库的一些关键操作,包括用户解锁、数据导入(IMP)以及可能涉及的权限授予。下面我们将详细解释这些概念及其在实际工作中的应用。 首先,我们来谈谈...

    Oracle表死锁与解锁

    Oracle数据库在运行过程中,可能会遇到一种情况,那就是“表死锁”,这会导致多个事务相互等待对方释放资源,从而无法继续执行。死锁不仅影响数据库的正常运行,还可能导致数据一致性问题。本文将深入探讨Oracle表...

    oracle锁表查询oracle锁表查询oracle锁表查询

    ### Oracle锁表查询详解 #### 一、Oracle锁机制简介 在Oracle数据库中,锁是一种重要的并发控制机制,用于管理多个用户对同一数据资源的访问。通过锁机制,Oracle能够确保数据的一致性和完整性,避免多用户操作时...

Global site tag (gtag.js) - Google Analytics