0:none 
  1:null 空 
  2:Row-S 行共享(RS):共享表锁 
  3:Row-X 行专用(RX):用于行的修改 
  4:Share 共享锁(S):阻止其他DML操作 
  5:S/Row-X 共享行专用(SRX):阻止其他事务操作 
  6:exclusive 专用(X):独立访问使用 
   
  数字越大锁级别越高, 影响的操作越多。 
  一般的查询语句如select ... from ... ;是小于2的锁, 有时会在v$locked_object出现。 
   
  select ... from ... for update; 是2的锁。 
   
  当对话使用for update子串打开一个游标时, 
  所有返回集中的数据行都将处于行级(Row-X)独占式锁定, 
  其他对象只能查询这些数据行,不能进行update、delete或select...for update操作。 
   
  insert / update / delete ... ; 是3的锁。 
   
  没有commit之前插入同样的一条记录会没有反应, 
  因为后一个3的锁会一直等待上一个3的锁, 我们必须释放掉上一个才能继续工作。 
   
  创建索引的时候也会产生3,4级别的锁。 
   
  locked_mode为2,3,4不影响DML(insert,delete,update,select)操作, 
  但DDL(alter,drop等)操作会提示ora-00054错误。 
   
  有主外键约束时 update / delete ... ; 可能会产生4,5的锁。 
   
  DDL语句时是6的锁。 
   
  以DBA角色, 查看当前数据库里锁的情况可以用如下SQL语句:

  select object_id,session_id,locked_mode from v$locked_object;

  select t2.username,t2.sid,t2.serial#,t2.logon_time 
  from v$locked_object t1,v$session t2 
  where t1.session_id=t2.sid order by t2.logon_time;

  如果有长期出现的一列,可能是没有释放的锁。 
   
  我们可以用下面SQL语句杀掉长期没有释放非正常的锁:

  alter system kill session 'sid,serial#';

  如果出现了锁的问题, 某个DML操作可能等待很久没有反应。 
   
  当你采用的是直接连接数据库的方式, 
  也不要用OS系统命令 $kill process_num 或者 $kill -9 process_num来终止用户连接, 
  因为一个用户进程可能产生一个以上的锁, 杀OS进程并不能彻底清除锁的问题。 
   
  记得在数据库级别用alter system kill session 'sid,serial#';杀掉不正常的锁。

ORACLE里锁的几种模式的更多相关文章

  1. ORACLE里锁有以下几种模式,v$locked_object,locked_mode【转】

    ORACLE里锁有以下几种模式:0:none1:null 空2:Row-S 行共享(RS):共享表锁,sub share 3:Row-X 行独占(RX):用于行的修改,sub exclusive 4: ...

  2. ORACLE里锁有以下几种模式,v$locked_object,locked_mode

    ORACLE里锁有以下几种模式: 0:none 1:null 空 2:Row-S 行共享(RS):共享表锁,sub share  3:Row-X 行独占(RX):用于行的修改,sub exclusiv ...

  3. 【Oracle】锁表处理 SQL 错误: ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效

    问题描述有时候ORACLE数据的某些表由于频繁操作,而且比较大,会导致锁表(死锁). 问题分析(1)锁的分析ORACLE里锁有以下几种模式:0:none1:null 空2:Row-S 行共享(RS): ...

  4. ORACLE中常见的几种锁

    ORACLE中常见的几种锁: 0:none 1:null 空 2:Row-S 行共享(RS):共享表锁,sub share 3:Row-X 行独占(RX):用于行的修改,sub exclusive 4 ...

  5. Oracle DG 三种模式(转)

    DG有下面三种模式– Maximum protection– Maximum availability– Maximum performance 在Maximum protection下, 可以保证从 ...

  6. Oracle DG 三种模式

    DG有下面三种模式– Maximum protection– Maximum availability– Maximum performance 在Maximum protection下, 可以保证从 ...

  7. 04 关于oracle的锁的级别以及介绍

    关于oracle的锁的级别以及介绍 oracle造成锁表的情况: 一.查看锁的对象视图:select object_id,session_id,locked_mode from v$locked_ob ...

  8. oracle 事务 锁机制

    原文地址:http://www.cnblogs.com/quanweiru/archive/2013/05/24/3097367.html 本课内容属于Oracle高级课程范畴,内容略微偏向理论性,但 ...

  9. 从浅到深掌握Oracle的锁

      1.分别模拟insert,update和delete造成阻塞的示例,并对v$lock中的相应的信息进行说明,给 出SQL演示. Insert示例 会话:SQL> select * from ...

随机推荐

  1. 2015.03.12,外语,读书笔记-《Word Power Made Easy》 10 “如何讨论交谈习惯”学习笔记 SESSION 25

    1.about keeping one's mouth shut taciturn,名词形式taciturnity,沉默寡言. 美国第30任总统库里奇,以沉默寡言著称.他来自新英格兰,那里视tacit ...

  2. HTML5游戏实战之20行代码实现打地鼠

    之前写过一篇打地鼠的博客70行的代码实现打地鼠游戏,细致思考过后,发现70行代码都有点多余了,应用tangide的控件特性,能够将代码量缩减到20行左右. 先show一下终于成果,点击试玩:打地鼠.或 ...

  3. 杂项-报表:Formula One(Active电子表格控件)

    ylbtech-杂项-报表:Formula One(Active电子表格控件) Formula One是一款应用软件,是由Visual Components公司开发的基于Windows平台的.类似于E ...

  4. JSP页面动态查询添加数据与分页数据显示

    1 . <%@ page language="java" contentType="text/html; charset=UTF-8"%> < ...

  5. HTML5学习笔记(三):标识文本的语义元素

    1.<time>元素:标注日期和时间 日期格式:YYYY-MM-DD,如2016-04-13: 时间格式(24小时制):HH-MM,如15:31: 最后,组合以上规则就可以制定具体的日期和 ...

  6. Python笔记(三)

    # -*- coding:utf-8 -*- # 运算符 a,b=10,20 # 算术运算符:包括+.-.*./.%.**.//运算 print "********************1 ...

  7. mysql定时清理binlog

    一.没有主从同步的情况下清理日志 mysql -uroot -p123456 -e 'PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ),INTERVAL 5 DAY) ...

  8. luogu P2000 拯救世界 生成函数_麦克劳林展开_python

    模板题. 将所有的多项式按等比数列求和公式将生成函数压缩,相乘后麦克劳林展开即可. Code: n=int(input()) print((n+1)*(n+2)*(n+3)*(n+4)//24)

  9. C learn questions list

    \主 题: C语言面试题大汇总,个人觉得还是比较全地!!! 作 者: free131 (白日?做梦!) 信 誉 值: 100 最近因为找工作,收集了很多C语言方面方面的面试题以及答案.现在新工作搞定了 ...

  10. redis 篇 - set

    set 无序集合 sadd key value 127.0.0.1:6379[7]> sadd s 3 (integer) 1 127.0.0.1:6379[7]> smembers s ...