信息化
新闻日历
图片新闻
Meat Card:饿了就吃点你的名片吧(图)
你的名片够特别吗?可以吃吗?Meat Cards是100%的牛肉...
2009/05/31
Q-Sound太阳能蓝牙耳机 你准备好迎接了吗(图)
所有为了环保节能尽份心力的产品都都值得嘉许,更何况...
2009/05/31
科学家将公布证明黑洞存在照片 揭秘神秘阴影(图)
美国一个研究小组日前表示,他们有望在未来几个月公布...
2009/05/31
地球磁气圈是"汪洋大盗" 偷走大气层气体
科学家通常认为对地球具有防护屏作用的磁气圈能够保护...
2009/05/31
分析评论
惠普让计算器在iPhone、Windows重生(图)
这项要价14.99美元的应用程序还可搭配一个29.99美元的...
2009/06/30
投资者看好没有乔布斯的苹果
自苹果CEO史蒂夫-乔布斯休病假以来,苹果股价已经上涨...
2009/06/22

Oracle锁




作者: perry_shi IT专家网
CNETNews.com.cn
2008-09-04 13:19:27
关键词: Oracle

 v$lock视图的各个列及其说明

  ADDR

  RAW(4)

  在内存中定的对象的地址

  KADDR

  RAW(4)

  在内存中锁的地址

  SID

  NUMBER

  保持或申请锁的会话的标识号

  TYPE

  VARCHAR2(2)

  锁的类型。

  TX=行锁或事务锁;TM=表锁或DML锁;UL=PL/SQL用户锁

  ID1

  NUMBER

  锁的第1标识号。

  如果锁的类型是TM,该值表示将要被锁定的对象的标识号;

  如果锁的类型是TX,该值表示撤销段号码的十进制值

  ID2

  NUMBER

  锁的第2标识号。

  如果锁的类型是TM,该值为0;

  如果锁的类型是TX,该值表示交换次数

  LMODE

  NUMBER

  会话保持的锁的模式。

0=None;1=Null;2=Row-S (SS);3=Row-X (SX);
  4=Share;5=S/Row-X (SSX);6=Exclusive
  REQUEST
  NUMBER
  会话申请的锁的模式。与LMODE中的模式相同
  CTIME
  NUMBER
  以秒为单位的,获得当前锁(或转换成当前锁的模式)以来的时间
  BLOCK
  NUMBER
  当前锁是否阻塞另一个锁。
  0=不阻塞;1=阻塞
  V$LOCKED_OBJECT视图的各个列及其说明
  列名
  数据类型
  说明
  XIDUSN
  NUMBER
  撤销段号码
  XIDSLOT
  NUMBER
  被锁定的对象在撤销段中的位置
  XIDSQN
  NUMBER
被锁定的对象的标识号
  SESSION_ID
  NUMBER
  会话的标识号
  ORACLE_USERNAME
  VARCHAR2(30)
  Oracle用户名
  OS_USER_NAME
  VARCHAR2(30)
  操作系统用户名
  PROCESS
  VARCHAR2(12)
  操作系统进程标识号
  LOCKED_MODE
  NUMBER
  对象被锁定的模式。
      0=None;1=Null;2=Row-S (SS);3=Row-X (SX);
  4=Share;5=S/Row-X (SSX);6=Exclusive

  DBA_LOCKS视图的各个列及其说明
  列名
  数据类型
说明
  SESSION_ID
  NUMBER
  保持或申请锁的会话的标识号
  LOCK_TYPE
  VARCHAR2(26)
  锁的类型
  MODE_HELD
  VARCHAR2(40)
  保持的锁的模式
  MODE_REQUESTED
  VARCHAR2(40)
  申请的锁的模式
  LOCK_ID1
  VARCHAR2(40)
  锁的第1标识号
  LOCK_ID2
  VARCHAR2(40)
  锁的第2标识号
  LAST_CONVERT
  NUMBER
  以秒为单位的,获得当前锁(或转换成当前锁的模式)以来的时间
  BLOCKING_OTHERSVARCHAR2(40)
  当前锁是否阻塞另一个锁。
  Not Blocking=不阻塞;Blocking=阻塞
  DBA_WAITERS视图的各个列及其说明
  列名
  数据类型
  说明
  WAITING_SESSION
  NUMBER
  等待锁的会话(被阻塞的会话)的标识号
  HOLDING_SESSION
  NUMBER
  保持锁的会话(阻塞的会话)的标识号
  LOCK_TYPE
  VARCHAR2(26)
  锁的类型
  MODE_HELD
  VARCHAR2(40)
  保持的锁的模式
  MODE_REQUESTED
  VARCHAR2(40)
  申请的锁的模式
  LOCK_ID1
  NUMBER
锁的第1标识号
  LOCK_ID2
  NUMBER
  锁的第2标识号
  DBA_BLOCKERS视图的各个列及其说明
  列名
  数据类型
  说明
  HOLDING_SESSION
  NUMBER
  显示阻塞了其他会话的那些会话的标识号
  -----------------------------------------------------------------------------------------------------
  由sys用户通过查询与锁相关的视图来了解锁,了解阻塞会话与被阻塞会话的sid、serial#、用户名及其所使用的DML操
  作语句。
      -----------------------------------------------------------------------------------------------------
  set pagesize 40 linesize 150
  column blockers format a45
  column waiters format a45
  select "阻塞者("||sb.sid||":"||sb.serial#||"-"||sb.username||")-"||qb.sql_text blockers,
  "等待者("||sw.sid||":"||sw.serial#||"-"||sw.username||")-"||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 sb.lockwait is null
  and sw.lockwait is not null
  and lb.block=1;
  -------------------------------------------------------------------------------------------------------

  要了解哪些数据库用户的会话锁定了对象、锁定的模式是什么、对应的操作系统用户是在哪台计算机上进行操作的、被锁
定的对象及其类型等信息
      -------------------------------------------------------------------------------------------------------
  set pagesize 40 linesize 150
  column username format a9
  column sid format 9999
  column serial# format 99999999
  column mode_locked format a12
  column os_user_name format a16
  column object_name format a12
  column object_type format a12
  select s.username,s.sid,s.serial#,
  decode(lo.locked_mode,
  0,"none",
  1,"null",
  2,"row-s(ss)",
  3,"row-x(sx)",
  4,"share",
  5,"s/row-x(ssx)",
  6,"exclusive",
  to_char(lo.locked_mode)) mode_locked,
  lo.os_user_name,
  do.object_name,do.object_type
  from v$session s,v$locked_object lo,dba_objects do
  where
  lo.object_id=do.object_id;
  --------------------------------------------------------------------------------------------------------
  要了解阻塞者会话的sid、serial#信息
  --------------------------------------------------------------------------------------------------------
  set pagesize 40 linesize 150
  column username format a9
  column sid format 9999
  column serial# format 99999999
  select s.username,s.sid,s.serial#
  from v$session s,dba_blockers dbab
  where s.sid=dbab.holding_session;
  ---------------------------------------
  解锁
  ---------------------------------------
  alter system kill session "sid,serial#";

  补充:
  TX:行级锁,事务锁
  在改变数据时必须是排它模式(mode 6)。
  每一个活动事务都拥有一个锁。它将在事务结束(commit/rollback)时释放
  如果一个块包括的列被改变而没有ITL(interested transaction list)槽位(entries),那么session将锁置于共享模式(mode 4)。当session获得块的ITL槽位时释放。
  当一个事务首次发起一个DML语句时就获得一个TX锁,该锁保持到事务被提交或回滚。当两个或多个会话在表的同一条记录上执行DML语句时,第一个会话在该条记录上加锁,其他的会话处于等待状态。当第一个会话提交后,TX锁被释放,其他会话才可以加锁。
  指出回滚段和事务表项
  按下列项以避免竞争:
  避免TX-6类型竞争,需要根据您的应用而定。
  避免TX-4类型竞争,可以考虑增加对象INITRANS参数值。

用户评论

  • 用户名
  • 评论内容