xmxm76 发表于 2018-9-26 07:43:19

oracle查看锁和解锁

方法一
  如何查找锁

  从V$lock里面找到锁所属于的session>
  select   sid   from   v$lock    where>  在v$session里面查找相应session的所有者或者process,联系所有者或者kill process
  select   *   from   v$session   where   sid   =   刚才的sid;
方法二
ORA-02049: timeout: distributed transaction waiting for lock
  步骤1:如果是第一次使用该方法,则需要以SYS帐号运行如下代码创建一些视图,以后不需要了:
  rdbms/admin/catblock.sql,位置一般在/u03/devp/devpdb/9.2.0/rdbms/admin/catblock.sql,在SQLPLUS中可以通过 @再加上该文件位置运行该脚本,比如@D:\ catblock.sql
  步骤2:使用脚本utllockt.sql就可以查看死锁情况了,最好用管理员身份,该文件一般在/u03/devp/devpdb/9.2.0/rdbms/admin/utllockt.sql,同样可以使用@的方法运行该脚本。
  步骤3:杀锁。使用如下代码查询,
  SELECT sid, serial#
  FROM v$session
  WHERE sid in (SELECT holding_session FROM dba_waiters);
  然后使用命令
  ALTER SYSTEM KILL SESSION '128,23396';
  杀锁,蓝色部分为前面找出来的sid和serial#参数,
  杀锁后,被杀的进程会抛出异常:ORA-00028: 您的会话己被删去
  附:查看某人运行的会话可以通过如下方法:
  登陆操作系统的用户名:
  select * from v$session where osuser='ly4962'
  登陆的计算机:
  select * from v$session where terminal='YYKFK-LY-454'
  登陆的oracle数据库的帐号,但是这种方法会查出可能很多使用这个帐号登陆的用户信息:
  select * from v$session where USERNAME='APPS'

页: [1]
查看完整版本: oracle查看锁和解锁