现象:
系统突然报连接数过高,基本的现象就是有什么东西被锁了,导致后续的连接都在等待,那么到底是那个会话导致了阻塞那?
可以查看视图v$session ,关注以下几个字段
sid-------------------------被阻塞的进程id
status--------------------被阻塞的进程状态
COMMAND--------------被阻塞的进程执行的命令
ROW_WAIT_FILE#----被阻塞的进程对应的rowid所在的数据文件id
row_wait_block#-----row_wait_row#对应的rowid所在的表的object id
row_wait_obj#-------row_wait_row#对应的rowid所在的表的object id
row_wait_row#-----Current row being locked. This column is valid only if the session is currently waiting for another transaction to commit and the value of
ROW_WAIT_OBJ#
is not -1
.但是准确的说是对应的于rowid的rownum,并非是单纯的rownum
blocking_session -----阻塞进程id
STATE-------------------被阻塞进程的状态
EVENT#----------------被阻塞进程等待的事件号
EVENT------------------被阻塞进程等待的事件
-----注意create_time是程序自动添加的
select t.sid,t.status,t.COMMAND,t.ROW_WAIT_FILE#,t.row_wait_block#,t.row_wait_obj#,t.row_wait_row#,t.blocking_session ,t.STATE,t.EVENT#,t.EVENT from temp_session t where t.BLOCKING_SESSION_STATUS='VALID' and t.create_time=to_date('2012/3/20 18:47:16','yyyy/mm/dd
hh24:mi:ss');
SID
STATUS COMMAND
ROW_WAIT_FILE# ROW_WAIT_BLOCK#
ROW_WAIT_OBJ# ROW_WAIT_ROW#
BLOCKING_SESSION STATE
EVENT# EVENT
175 620
ACTIVE 3
8 571147
77418 17
885 WAITING
239 enq: TX - row lock contention
174 616
ACTIVE 3
8 571147
77418 17
885 WAITING
239 enq: TX - row lock contention
173 615
ACTIVE 3
8 571147
77418 17
885 WAITING
239 enq: TX - row lock contention
333 1050
ACTIVE 3
8 571147
77418 17
885 WAITING
239 enq: TX - row lock contention
179 632
ACTIVE 3
8 571147
77418 17
885 WAITING
239 enq: TX - row lock contention
178 629
ACTIVE 3
8 571147
77418 17
885 WAITING
239 enq: TX - row lock contention
332 1049
ACTIVE 3
8 571147
77418 17
885 WAITING
239 enq: TX - row lock contention
171 610
ACTIVE 3
8 571147
77418 17
885 WAITING
239 enq: TX - row lock contention
166 592
ACTIVE 3
8 571147
77418 17
885 WAITING
239 enq: TX - row lock contention
165 591
ACTIVE 3
8 571147
77418 17
885 WAITING
239 enq: TX - row lock contention
164 589
ACTIVE 3
8 571147
77418 17
885 WAITING
239 enq: TX - row lock contention
现在可以看到885进程阻塞了好多进程,那么要获得到底是那条记录被锁定了那?
想要知道某一个表具体被锁定的是哪一行,可以利用上面这几个值,查找出被锁定行的rowid。
使用dbms_rowidb包的一个子过程(Subprograms)rowid_create
DBMS_ROWID.ROWID_CREATE (
rowid_type IN NUMBER,
object_number IN NUMBER,
relative_fno IN NUMBER,
block_number IN NUMBER,
row_number IN NUMBER)
RETURN ROWID;
其中rowid_type的取值为 0 表示生成一个restricted ROWID(pre-oracle8 format); 取值为1 表示生成一个extended ROWID.
object_number取值是dba_objects视图中的data_object_id,并不是object_id,也就是说不能用row_wait_obj#.
relative_fno取值是Relative文件号,在dba_data_files里可以查到
block_number取值是数据文件的块号,也就是v$session中的row_wait_block#的值
row_number通过rowid对应出来的rownum,也就是row_wait_row#的值。
接下来找到这些数据
rowid_type=1(11g)
object_number
selectdata_object_id from dba_objects where object_id='77418'
OBJECT_ID
TT_BIGINT NOT NULL
Dictionary object number of the object.
DATA_OBJECT_ID
TT_BIGINT
Is ignored.----这是11g的文档说明,可以看出,使用object_id就可以
relative_fno=8
block_number=row_wait_block#
row_number =row_wait_row#
select * from table_name t where rowid=(
select DBMS_ROWID.ROWID_CREATE(1,77418,8,571147,17) from dual);---得到被锁定的记录;
此时查看885进程在做神马?
kill之就可以
分享到:
相关推荐
What is Locking? Unfortunately, a unique, rigorous definition of locking does not seem to exist. From a most simple an general point of view one could state that Locking means the effect of a ...
Biased Locking in HotSpot
$ java -jar locking_test-0.1.0-standalone.jar [args] 选项 FIXME:此应用程序接受的选项列表。 例子 ... 虫子 ... 任何其他部分 你以为 可能有用 执照 版权所有:copyright:2020 FIXME 该程序和随附的材料根据...
C++ and the Perils of Double-Checked Locking 关于单例模式C++实现的一些问题
深入理解linux内核中的锁机制,驱动编写必须要重视的问题
Mode-locking of a terahertz laser by direct phase synchronization
USB Type-C Locking Connector Specification
Sybase数据库性能优化:锁 Sybase Performance and Tuning:locking.pdf
C语言头文件 LOCKINGC语言头文件 LOCKINGC语言头文件 LOCKINGC语言头文件 LOCKINGC语言头文件 LOCKINGC语言头文件 LOCKINGC语言头文件 LOCKINGC语言头文件 LOCKINGC语言头文件 LOCKINGC语言头文件 LOCKINGC语言...
本资源是《Expert SQL Server Transactions and Locking》一书的源码。有需要的可以下载。
C++ and the Perils of Double Checked Locking.zip
该书比较系统的介绍了在linux内核编程中锁定使用方法,特别适合对linux内核开发感兴趣的读者。
MySQL Metadata Locking
信息安全_数据安全_Locking Them Out of Their Own Ho 金融安全 安全 法律法规 态势感知 安全防护
NULL 博文链接:https://huanyue.iteye.com/blog/2047294
详细叙述了ORACLE数据事务处理的实现机制、
信息安全_数据安全_A Knack for NAC:Locking Down Network A 安全感知 安全对抗 漏洞挖掘 安全架构 安全芯片
Master SQL Server’s Concurrency Model so you can implement high-throughput systems that deliver transactional consistency to your application customers. This book explains how to troubleshoot and ...
Locking.one
锁定(Locking)是一个关系型数据库系统的常规和必要的一部分,它防止对相同数据作 并发更新 或在更新过程中查看数据, 从而保证被更新数据的完整性。它也能防止用户读取正在被修改的数据 。Sql Server动态地管理...