淑昊柠 发表于 2018-9-14 06:24:17

一些与oracle相关的关于查询锁的信息

  1、查询那些表被锁住了
  10:16:41 sys@PORTALDB> 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;
  no rows selected
  2、查处引起死锁的会话
  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;
  这里会列出SID
  或者用dba用户执行以下语句
  select username,lockwait,status,machine,program from v$session where sid in (select session_id from v$locked_object);
  3、 查出SID和SERIAL#:
  查V$SESSION视图:
  10:17:53 sys@PORTALDB> select sid,serial#,paddr from v$session where sid='1214';
  SIDSERIAL# PADDR
  ----- ---------- ----------------
  1214   62237 070000177152E338
  4、用dba用户执行以下语句,可以查看到被死锁的语句。
  select sql_text from v$sql where hash_value in (select sql_hash_value from v$session where sid in (select session_id from v$locked_object));
  5、查V$PROCESS视图:
  SELECT SPID FROM V$PROCESS WHERE ADDR='刚才查到的PADDR';
  这一步得到SPID
  10:19:51 sys@PORTALDB> select spid from v$process where addr='070000177152E338';
  SPID
  ------------------------
  10420360
  6、杀死进程
  (1)在数据库中,杀掉ORACLE进程:
  ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#';
  (2)如果在ORACLE中不能杀死进程,我们只能到操作系统中,使用操作系统命令杀死进程
  KILL -9 “刚才查出的SPID”
  在WINDOWS平台,可以是偶那个orakill。
  Elapsed: 00:00:00.01

页: [1]
查看完整版本: 一些与oracle相关的关于查询锁的信息