Oracle锁
2008-09-01 12:46:09 来源:WEB开发网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参数值。
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
赞助商链接