SQL> desc v$lock;

名称                                      是否为空? 类型

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

ADDR                                               RAW(8)

KADDR                                              RAW(8)

SID                                                NUMBER

TYPE                                               VARCHAR2(2)

ID1                                                NUMBER

ID2                                                NUMBER

LMODE                                              NUMBER

REQUEST                                            NUMBER

CTIME                                              NUMBER

BLOCK                                              NUMBER

锁的分类:

0、无

1、NULL,可以某些情况下,如分布式数据库的查询会产生此锁。

2、SS,表结构共享锁

3、SX,表结构共享锁+被操作的记录的排它锁

4、S, 表结构共享锁+所有记录共享锁

5、SRX 表结构共享锁+所有记录排它锁

6、X   表结构排它锁+所有记录排它锁

表上的5种锁的含义:

RS(SS):是一种纯粹的意向锁,它表征事务要通过SELECT FOR UPDATE访问某些行;

RX(SX):是一种纯粹的意向锁,它表征事务要通过 UPDATE/ DELETE/INSERT修改某些行;

S:全表范围的共享锁,不需要在每行上做出标识;

X:全表范围的排它锁,不需要在每行上做出标识;

SRX(SSX):是意向锁RX与S锁的组合,它表征事务既对表加S锁,同时要修改个别行,即要在个别行上加X锁;(如果你使用ORACLE8,可以在一个表上建立一个自引用,如EMP表上的MGR引用EMPNO,删除一条记录,可以观察到SRX锁)

在行上,ORALCE只有X锁,

但由SELECT FOR UPDATE 获得的X锁在表级表征为RS锁,

由INSERT/UPDATE/DELETE 获得的X锁在表级表征为RX锁,

窗口1:

SQL> conn myfmis/myfmis

已连接。

SQL> update xtdwcs set MC='单位本部ok' where dh='0114';

窗口2:

SQL> conn myfmis/myfmis

已连接。

SQL> update xtdwcs set MC=单位本部ok' where dh='0114';

处理过程:

查看是否有session阻塞:

select * from v$lock where BLOCK=1

ADDR KADDR SID TYPE ID1 ID2 LMODE REQUEST CTIME BLOCK

1 1FE0C654 1FE0C770 151 TX 131115 520 6 0 669 1

查看TX锁的SID与Serial#:

select * from v$session where event like'%TX%';

select sid,serial#,username,state,blocking_session_status,blocking_session from v$session where event like'%TX%';

SID SERIAL# USERNAME STATE BLOCKING_SESSION_STATUS BLOCKING_SESSION

1 137 6 FMISMAIN WAITING VALID 150

临时KILL这个session:

分两类,

第一:kill掉137,6,则是kill掉之后被等的session。

alter system kill session '137,6';

第二:kill掉150,则是kill掉之前阻塞别人的session。

因此通过前面的137,6所查到的SQL语句,则是后面运行被等待的SQL语句,而不是阻塞别人的SQL语句。

如果要查找原因,操作如下:

查找相应的SQL语句:

select a.sql_text from v$sqlarea a,v$session b where a.sql_id=b.sql_id

select a.sql_text from v$sqlarea a,v$session b where a.sql_id=b.sql_id and b.event like'%TX%'

SQL_TEXT

1 update xtdwcs set MC='单位本部ok'  where dh='0114'

select * from v$sqlarea where SQL_ID='gf1472pj5wnzj'

找出相应的SQL语句后,即可处理。

#######################################################################

在巡检期间,检查如果发现有相关的session_wait锁,可按以下步骤查找相应的锁

1. 使用V$LOCK找出session持有的锁。

2. 使用V$SESSION找出持有锁或等待锁的session执行的sql语句。

3. 使用V$SESSION_WAIT找出什么原因导致session持有锁堵塞。

4. 使用V$SESSION获取关于持有锁的程序和用户的更多信息。

V$LOCK中的常用列

? SID:表示持有锁的会话信息。

? TYPE:表示锁的类型。值包括TM和TX等。

? LMODE:表示会话等待的锁模式的信息。用数字0-6表示,和表1相对应。

? REQUEST:表示session请求的锁模式的信息。

? ID1,ID2:表示锁的对象标识。

1、查看相应的v$session_wait信息

select event,count(*) from V$SESSION_WAIT group by event order by count(*) desc;

select event,count(*) from V$SESSION_WAIT group by event order by count(*) asc;

如果如下(第3条):

EVENT COUNT(*)

1 smon timer 1

2 Streams AQ: qmn coordinator idle wait 1

3 enq: TX - row lock contention 1

4 jobq slave wait 1

5 Streams AQ: waiting for time management or cleanup tasks 1

6 pmon timer 1

7 Streams AQ: qmn slave idle wait 1

8 SQL*Net message from client 3

9 rdbms ipc message 9

查看当前被锁的session正在执行的sql语句

select /*+ NO_MERGE(a) NO_MERGE(b) NO_MERGE(c) */ a.username, a.machine, a.sid, a.serial#, a.last_call_et "Seconds", b.id1, c.sql_text "SQL"

from v$session a, v$lock b, v$sqltext c

where a.username is not null and a.lockwait = b.kaddr and c.hash_value =a.sql_hash_value

oracle授权v$lock,Oracle八大性能视图之v$lock相关推荐

  1. Oracle八大性能视图之v$sort_usage_temp

    1.表结构 SQL> desc v$sort_usage 名称                                      是否为空? 类型 ------------------- ...

  2. Oracle八大性能视图之v$transaction

    1.表结构 SQL> desc v$transaction; 名称                                      是否为空? 类型 ----------------- ...

  3. oracle授权同义词权限,Oracle授权 同义词

    语法结构:授权 GRANT  角色|权限 TO 用户(角色) 代码演示:授权 SQL> GRANT CONNECT TO jerry; 授权成功. SQL> GRANT RESOURCE ...

  4. oracle授权只读用户,Oracle创建只读用户(账号)的方法

    第一步:创建用户(需要使用有dba管理员权限的用户创建一个新的用户,比如system) create user 用户名 identified by 密码 default tablespace 表空间; ...

  5. Oracle授权允许远程访问--Oracle配置允许远程连接

    团队协作开发时,经常使用一个oracle服务器.这就需要配置Oracle服务支持远程连接.否则除了本机,网内的其他机器是无法访问Orcale数据库的. 本文介绍如何配置Oracle允许远程连接. 1. ...

  6. Oracle 动态性能视图 (x$, v$, gv$, v_$, gv_$)

    sys :  x$(内存对象))--->v$(内存对象)---->v_$(view)----->v$(public sysnonym) 一. 动态性能视图 1.1 动态性能图 动态性 ...

  7. oracle 条件动态视图,oracle最重要的9个动态性能视图

    oracle最重要的9个动态性能视图 v$session v$session_wait (在10g里功能被整合,凑合算1个吧.) v$process v$sql v$sqltext v$bh (更宁愿 ...

  8. ORACLE常用的动态性能视图

    V$FIXED_TABLE用于列出所有可用的动态性能视图和动态性能表. V$INSTANCE用于获取当前例程的详细信息. V$SGA用于取得SGA更详细的信息. V$PARAMETER用于取得初始化参 ...

  9. Oracle 原理 : 动态性能视图和数据字典

    Oracle 的数据字典包含了两部分:数据字典表和数据字典视图.数据字典基本表是由$ORACLE_HOME\RDBMS\ADMIN\sql.bsq这文件所创建.表名大多以$结尾,属于sys用户,放在S ...

最新文章

  1. JSP中base href=%=basePath%作用
  2. semantic ui要装什么才能使用
  3. matlab 从 excel读取 日期_MATLAB批量修改文件名和选择性复制/剪切文件
  4. 可是笑声太响了的64391111
  5. 纯css 无视宽高设置垂直水平居中
  6. 剑指 Offer II 108. 单词演变
  7. 2009年IT行业最重要的十大认证
  8. 服务器安装动易组件,动易SiteWeaver6.8安装方法
  9. 用几何语言表示线段ab的中点c,七年级上册数学第四章教案
  10. 物联网期末大作业—睡眠质量检测系统(精修版)
  11. 技术圈大佬,带你用技术赚到副业的第一桶金!
  12. Julia1.4文档 —— 2. Julia的基本数值类型
  13. Hark的数据结构与算法练习之冒泡排序
  14. Python全栈开发【基础-09】深浅拷贝+while循环
  15. 体育赛事直播系统的实践之路
  16. BP神经网络的Java实现
  17. 有苦有乐的算法 --- 计数排序
  18. 基于微信运动场地预约小程序 毕业设计毕业论文 开题报告和效果图(基于微信小程序毕业设计题目选题课题)
  19. 《Python语言程序设计》王恺 王志 机械工业出版社 第二章 Python的基础语法 课后习题答案
  20. 网络安全与网站安全及计算机安全:如何使用Kali Linux进行内网或局域网安全演练?

热门文章

  1. python-jenkins 操作
  2. MVC (jsp + servlet + javabean) 以及jdbc
  3. Win8Metro(C#)数字图像处理--2.7图像伪彩色
  4. 2017-10-湖南套题1
  5. window自动备件软件
  6. 第十四章----面向对象equals和toString的重写
  7. LeetCode——Maximum Depth of Binary Tree
  8. The source attachment does not contain the source for the file  ActionSupport.class 错误
  9. PHP合并2个数字键数组的值
  10. Codeforces Round #295 (Div. 1) C. Pluses everywhere