查看Oracle中是否有锁表的sql

1、查看是否有锁表的sql


代码如下:

select 'blocker('||lb.sid||':'||sb.username||')-sql:'|| qb.sql_text blockers,
'waiter ('||lw.sid||':'||sw.username||')-sql:'|| qw.sql_text waiters
from v$lock lb,
v$lock lw,
v$session sb,
v$session sw,
v$sql qb,
v$sql qw
where lb.sid=sb.sid
and lw.sid=sw.sid
and sb.prev_sql_addr=qb.address
and sw.sql_address=qw.address
and lb.id1=lw.id1
and sw.lockwait is not null
and sb.lockwait is null
and lb.block=1 ;

2、查看被锁的表


代码如下:

select p.spid,a.serial#,c.object_name,b.session_id,b.oracle_username,b.os_user_name
from v$process p,v$session a, v$locked_object b,all_objects c
where p.addr=a.paddr and a.process=b.process and c.object_id=b.object_id ;

3、查看那个用户那个进程造成死锁,锁的级别


代码如下:

select b.owner,b.object_name,l.session_id,l.locked_mode fromv$locked_object l, dba_objects

4、查看连接的进程


代码如下:

SELECT sid, serial#, username, osuser FROMv$session;

5、查看是哪个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;

6、杀掉进程


代码如下:

alter system kill session 'sid,serial#';

sid是第5步查询出的sid和serid

(0)

相关推荐

  • Oracle对于死锁的处理方法

    Oracle数据库出现死锁的时候可以按照以下处理步骤加以解决: 第一步:尝试在sqlplus中通过sql命令进行删除,如果能够删除成功,则万事大吉!但通常情况下,出现死锁时,想通过命令行或者通过Oracle的管理工具删除有死锁的session,oracle只会将该session标记为killed,但无法清除掉,往往需要通过第二步在操作系统层级进行删除! Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0 Connected as

  • ORACLE锁机制深入理解

    数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性. 加锁是实现数据库并发控制的一个非常重要的技术.当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁.加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作. 在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Lo

  • Oracle外键不加索引引起死锁示例

    --创建一个表,此表作为子表 create table fk_t as select *from user_objects; delete from fk_t where object_id is null; commit; --创建一个表,此表作为父表 create table pk_t as select *from user_objects; delete from pk_t where object_id is null; commit; --创建父表的主键 alter table PK

  • 快速查出Oracle数据库中锁等待的方法

    通常在大型数据库系统中,为了保证数据的一致性,在对数据库中的数据进行操作时,系统会进行对数据相应的锁定. 这些锁定中有"只读锁"."排它锁","共享排它锁"等多种类型,而且每种类型又有"行级锁"(一次锁住一条记录),"页级锁"(一次锁住一页,即数据库中存储记录的最小可分配单元),"表级锁"(锁住整个表).若为"行级排它锁",则除被锁住的该行外,该表中其它行均可被其它的

  • 在命令行下进行Oracle用户解锁的语句

    在DBA的日常工作中,经常遇到为Oracle用户解锁的操作:这篇文章给出在命令行下进行Oracle用户解锁的操作方法,通过几条简单的解锁语句就能完成此项工作.下面是具体的过程: 默认的scott用户是被锁定的,先解锁就能登陆上了. 使用下面的语句解锁scott: 复制代码 代码如下: alter user scott account unlock; 解锁之后可能会要求你该密码: 复制代码 代码如下: alter user scott identified by tiger; 再登陆: 复制代码

  • oracle scott 解锁步骤

    运行cmd sqlplus/nolog 回车 SQL>conn/as sysdba 回车 SQL>alter user scott account unlock; 回车 SQL>disconnect 回车 SQL>conn scott/tiger@orcl;回车 然后输入两次新定义的口令分别回车确认: window SQL>$cls (清屏)

  • 深入探讨:Oracle中如何查询正锁表的用户以及释放被锁的表的方法

    可在PL/SQL中用如下SQL语句来查询当前数据库中哪些表被锁住了,并且是哪些用户来锁的这些表: SELECT  A.OWNER,                        --OBJECT所属用户  A.OBJECT_NAME,                  --OBJECT名称(表名)  B.XIDUSN,  B.XIDSLOT,  B.XIDSQN,  B.SESSION_ID,                   --锁表用户的session  B.ORACLE_USERNAME

  • oracle查看会话锁定的所有对象代码分享

    复制代码 代码如下: select session_id sid, owner, name, type, mode_held held, mode_requested request from DBA_DDL_LOCKS where session_id=(select sid from V$mystat where rownum=1) / (注:owner 列是所锁定对象的所有者)

  • oracle查看被锁的表和被锁的进程以及杀掉这个进程

    -- 1. 查看被锁的表 SELECT p.spid, a.serial#, c.object_name, b.session_id, b.oracle_username,b.os_user_name FROM v$process p, v$session a, v$locked_object b, all_objects c WHERE p.addr = a.paddr AND a.process = b.process AND c.object_id = b.object_id -- 2.

  • Oracle解锁的方式介绍

    1. 查看当前被解锁的对象 示例: 将表aa加锁 执行 select * from aa for update; 方式一:通过SQL查询 select 'alter system kill session ',''''||trim(t2.sid)||','||trim(t2.serial#)||''';' from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time; 执行结果  方式

随机推荐