WEB开发网
开发学院数据库Oracle Oracle锁 阅读

Oracle锁

 2008-09-01 12:46:09 来源:WEB开发网   
核心提示: NUMBER显示阻塞了其他会话的那些会话的标识号-由sys用户通过查询与锁相关的视图来了解锁,了解阻塞会话与被阻塞会话的sid、serial#、用户名及其所使用的DML操作语句,Oracle锁(3),-setpagesize40linesize150columnblockersformat

NUMBER

显示阻塞了其他会话的那些会话的标识号

-----------------------------------------------------------------------------------------------------

由sys用户通过查询与锁相关的视图来了解锁,了解阻塞会话与被阻塞会话的sid、serial#、用户名及其所使用的DML操

作语句。

   -----------------------------------------------------------------------------------------------------
  setpagesize40linesize150
  columnblockersformata45
  columnwaitersformata45
  select'阻塞者('||sb.sid||':'||sb.serial#||'-'||sb.username||')-'||qb.sql_textblockers,
  '等待者('||sw.sid||':'||sw.serial#||'-'||sw.username||')-'||qw.sql_textwaiters
  fromv$locklb,v$locklw,v$sessionsb,v$sessionsw,v$sqlqb,v$sqlqw
  wherelb.sid=sb.sid
  andlw.sid=sw.sid
  andsb.prev_sql_addr=qb.address
  andsw.sql_address=qw.address
  andlb.id1=lw.id1
  andsb.lockwaitisnull
  andsw.lockwaitisnotnull
  andlb.block=1;
  -------------------------------------------------------------------------------------------------------

要了解哪些数据库用户的会话锁定了对象、锁定的模式是什么、对应的操作系统用户是在哪台计算机上进行操作的、被锁

定的对象及其类型等信息

   -------------------------------------------------------------------------------------------------------
  setpagesize40linesize150
  columnusernameformata9
  columnsidformat9999
  columnserial#format99999999
  columnmode_lockedformata12
  columnos_user_nameformata16
  columnobject_nameformata12
  columnobject_typeformata12
  selects.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
  fromv$sessions,v$locked_objectlo,dba_objectsdo
  where
  lo.object_id=do.object_id;
  --------------------------------------------------------------------------------------------------------
  要了解阻塞者会话的sid、serial#信息
  --------------------------------------------------------------------------------------------------------
  setpagesize40linesize150
  columnusernameformata9
  columnsidformat9999
  columnserial#format99999999
  selects.username,s.sid,s.serial#
  fromv$sessions,dba_blockersdbab
  wheres.sid=dbab.holding_session;
  ---------------------------------------
  解锁
  ---------------------------------------
  altersystemkillsession'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参数值。

上一页  1 2 3 

Tags:Oracle

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接