Oracle锁机制及与事务的关系
文章平均质量分 73
haiross
这个作者很懒,什么都没留下…
展开
-
乐观锁和悲观锁(不太有用)
乐观锁和悲观锁分类: 数据库架构 为什么需要锁(并发控制)?在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这会产生冲突。这就是著名的并发性问题。典型的冲突有:l 丢失更新:一个事务的更新覆盖了其它事务的更新结果,就是所谓的更新丢失。例如:用户A把值从6改为2,用户B把值从2改为6,则用户A丢失了他的更新。l 脏读:当一个事务读取其转载 2013-10-15 15:05:26 · 879 阅读 · 0 评论 -
为什么索引能快速查找数据行及索引也涉及锁的机制
1、索引之所以能快速查找数据,就是因为比如B树索引就是利用二叉树(这里确切的说是B树)[这种数据结构及在此基础上的算法]能进行快速高效查找的特点。故而Oracle设计出了索引这种数据对象。2、当更新位图所在的列时,由于要在不同的索引条目之间修改bit位,比如将第一条记录从01变为02,则必须将01所在的索引条目的第一个bit位改为0,再将02所在的索引条目的第一个bit位改为1。因此,原创 2013-10-11 10:11:56 · 1503 阅读 · 0 评论 -
oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT
ORA-00054 的解决方法(2010-09-21 15:31:29)转载▼ 分类:OracleTroubleShooting系统有一个不用的索引,想删除这个索引,SQL> drop index GPSTIME_GLOBAL_INDEX 2 /drop index GPSTIME_GLOBAL_INDEX转载 2014-02-24 16:09:08 · 10349 阅读 · 0 评论 -
Oracle查看锁表进程,以及杀掉锁表进程的方法
Oracle查看锁表进程,以及杀掉锁表进程的方法查看锁表进程SQL语句: Java代码 select s.sid, s.serial#, lo.oracle_username, lo.os_user_name, do.object_name, lo.locked_mode from v转载 2014-04-11 13:20:02 · 1031 阅读 · 0 评论 -
2013.12.24并行继续 锁
oracle fts 百度全表扫描(Full Table Scans, FTS)http://blog.csdn.net/huanghui22/article/details/1344714http://www.cnblogs.com/jianggc/articles/2029854.htmlhttp://blog.itpub.net/12020513/viewspace原创 2013-12-24 16:08:32 · 805 阅读 · 0 评论 -
同时插入同一行记录,产生阻塞的处理分析(4号锁分析之Unique key的约束)
同时插入同一行记录,产生阻塞的处理分析(4号锁分析之Unique key的约束)之前有个客户提出,在insert的时候被hang住了,碰到这样的问题很可能是锁的问题。对于这样的问题我一般就会想到几个常用的视图:v$lock/v$transaction/v$session/v$sql,仔细观察就可以查出问题的所在。 好,那我们现在去分析一下上面的现象,分析问题的一个常规手段转载 2014-11-26 14:44:46 · 1279 阅读 · 0 评论 -
Oracle中会话的状态
Oracle session active 和 inactive 状态 说明参考:oracle 会话状态 谷歌一. Session 状态说明 可以通过v$session 视图的status列查看session 的状态。 关于该视图的使用,参考联机文档:V$SESSIONhttp://download.oracle.com/docs/转载 2015-02-03 11:38:21 · 13696 阅读 · 1 评论 -
Oracle 阻塞会话的查看与解除
关于Oracle 阻塞会话的查看与解除,这里只讲操作步骤,不讲原理。Session 1 更新对象单没有提交Session 2 更新的时候由于等待session1 锁更新行的tx 锁而陷入阻塞Session 3更新的时候由于等待session1 锁更新行的tx 锁也陷入阻塞问题的根源可以通过以下的查询获取。可以看出sid 100和sid 33 都在以mode6(排转载 2015-02-03 11:41:44 · 14574 阅读 · 0 评论 -
oracle手动锁表
[转载]oracle手动锁表 手工锁表:lock table tbl_t1 in row share mode nowait; --2lock table tbl_t1 in share update mode nowait; --2lock table tbl_t1 in row exclu转载 2015-06-04 08:41:17 · 8086 阅读 · 0 评论 -
oracle数据库自动提交事务(autocommit)
oracle数据库自动提交事务(autocommit)为OFF,但事务自动提交了 问题描述:如上图所示,以scott账号登陆,执行delete from dept where deptno=50后,再换system账号登陆,发现deptno=50的数据行已经被删除了,而show autocommit=OFF;原因:切换用户,用的是connect命令,是会提原创 2015-08-13 10:36:14 · 40253 阅读 · 2 评论 -
[Oracle] 分布式事务和两阶段提交(2PC)
[Oracle] 分布式事务和两阶段提交(2PC) 分布式事务是指发生在多台数据库之间的事务,Oracle中通过dblink方式进行事务处理,分布式事务比单机事务要复杂的多。大部分的关系型数据库通过两阶段提交(2 Phase Commit 2PC)算法来完成分布式事务,下面重点介绍下2PC算法。1、分布式事务的组成在分转载 2015-08-04 14:09:11 · 6681 阅读 · 0 评论 -
[数据库原理] 事务的隔离等级 (ANSI标准)
[数据库原理] 事务的隔离等级 (ANSI标准)并发与数据读取当多个会话同时访问(操作)相同的数据时,将会出现一些意想不到的结果,这包括:– 脏读 -- Dirty reads– 不可重复度-- Non-repeatable reads– 幻读 -- Phantom reads1、脏读脏读就是指当一个事务正在访问数据,并且对数据进转载 2015-08-04 14:10:05 · 892 阅读 · 0 评论 -
oracle latch工作原理
无双小宝首页新随笔联系管理随笔- 192 文章- 0 评论- 16 oracle latch工作原理latch是一种轻量级用于保护oracle共享内存结构,用户并发操作一致性的串行化锁定机制,如SGA中,各种数据被反复从磁盘读取到内存,又被重新写回到磁盘上,如果有并发用户做相同的事情,oracle必须使用一种机制来转载 2015-08-07 14:09:26 · 646 阅读 · 0 评论 -
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
错误: ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效 ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired =================================================oracle之转载 2015-09-22 13:58:04 · 28664 阅读 · 1 评论 -
TX锁模式为4的情况模拟及探讨(三、进一步了解TX锁(未看))
论坛 ›大数据与云计算 ›Oracle数据库与大数据解决方案 › TX锁模式为4的情况模拟及探讨返回列表分享到 查看: 287|回复: 7分享| 收藏 [笔记]TX锁模式为4的情况模拟及探讨[复制链接] sxitsxit转载 2013-09-24 17:11:46 · 1875 阅读 · 0 评论 -
找出 alter system kill session ‘sid,serial#’ kill 掉的数据库会话对应进程
找出 alter system kill session ‘sid,serial#’ kill 掉的数据库会话对应进程发表于 2012 年 05 月 22 日 由惜分飞链接:http://www.xifenfei.com/3197.html标题:找出 alter system kill session ‘sid,serial#’ kill 掉的数据库会话对应进程转载 2014-01-03 09:20:40 · 7180 阅读 · 0 评论 -
bitmap索引的深入研究(自我改版)
bitmap索引的深入研究上一篇 /下一篇 2008-06-10 17:28:21 / 个人分类:工作技术查看( 952 ) /评论( 9 ) / 评分( 30 / 1 ) 位图(bitmap)索引是另外一种索引类型,它的组织形式与B树索引相同,也是一棵平衡树。与B树索引的区别在于叶子节点里存放索引条目的方式不同。从前面我们知道,B树索引的叶子节点里,对于原创 2013-10-08 15:52:48 · 955 阅读 · 0 评论 -
Know More About Oracle Row Lock(二、解决疑惑,说明行级锁和TX锁即事务锁是不同概念的两个东西)
Know More About Oracle Row Lock2012/05/16 BY MACLEAN LIU 16条评论我们都知道在Oracle中实现了细粒度的行锁row lock,且在ORACLE的内部实现中没有使用基于内存的行锁管理器,row lock是依赖于数据块本身实现的。换句话说判定一行数据究竟有没有没锁住,要求Server Process去pin住相应的bl转载 2013-09-25 15:46:07 · 3216 阅读 · 0 评论 -
行锁原理 [不错的总结]
行锁原理2012-04-10 11:46:05 分类: OracleOracle的锁机制是一种轻量级的锁定机制,不是通过构建锁列表来进行数据的锁定管理,而是直接将锁作为数据块的属性,存储在数据块首部。这个是通过ITL来实现的,一个事务要修改块中的数据,必须获得该块中的一个itl(通过initrans预先分配的或者是通过free space构建的)。通过itl和und转载 2013-09-03 11:10:29 · 1153 阅读 · 0 评论 -
常见的ORACLE锁模式汇总(一般)
常见的ORACLE锁模式汇总分类: 数据库架构 ORACLE是目前数据库领域里应用最广泛的数据库,现在让我们快速解析一下这些强大的ORACLE锁有哪些模式 。 ORACLE锁有以下几种模式0:none 1:null 空 2:Row-S 行共享(RS):共享表锁 3:Row-X 行专用(RX):用于行的修改 4:Share 共享锁(S):阻转载 2013-10-15 15:07:11 · 972 阅读 · 0 评论 -
深入研究B树索引
深入研究B树索引(一)上一篇 /下一篇 2008-05-27 13:03:41 / 个人分类:工作技术查看( 15908 ) /评论( 76 ) / 评分( 218 / 103 ) 摘要:本文对B树索引的结构、内部管理等方面做了一个全面的介绍。同时深入探讨了一些与B树索引有关的广为流传的说法,比如删除记录对索引的影响,定期重建索引能解决许多性能问题等。1.转载 2013-09-27 13:23:48 · 1171 阅读 · 0 评论 -
事务的事务锁保护的是该事务提交前所有被该事务所操作过的数据行?
一个会话里的当前事务的当前DML操作操作的对象,比如是一数据行。而该数据行已经被另一个会话里的事务所操作过,所以这个另一个会话里的事务的事务锁会锁定保护着该数据行。即使例如在一个事务开始前, savepoint a; 之后进行了对该数据行的操作,最后rollback to a;这样,该数据行上的行级锁已经被撤销了,但是该事务还没有结束,只是他的undo快被撤销了,所以该事务的事务锁还是保护着该数据原创 2013-09-24 08:38:48 · 1873 阅读 · 0 评论 -
为什么要引入锁(无论什么数据库软件引入锁的目的都是因数据不一致的三种情况,这里介绍的是MS-SQLSERVER )
一. 为什么要引入锁多个用户同时对数据库的并发操作时会带来以下数据不一致的问题:丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统脏读A用户修改了数据,随后B用户又读出该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致不可重复读A用户读取数据,随后B用户读出该数转载 2013-10-17 15:47:17 · 2411 阅读 · 0 评论 -
Select ..for update(nowait)语句在表级别上产生RS锁,在数据行上产生行级锁(是一种X锁)
一、悲观封锁锁在用户修改之前就发挥作用:Select ..for update(nowait)Select * from tab1 for update用户发出这条命令之后,oracle将会对返回集中的数据建立行级封锁,以防止其他用户的修改。如果此时其他用户对上面返回结果集的数据进行dml或ddl操作都会返回一个错误信息或发生阻塞。1:对返回结果集进行update或dele原创 2013-09-24 08:27:58 · 3311 阅读 · 0 评论 -
TX锁是区别于行级锁的(实验)
1、会话A: //A先获得TM(RX),再得TX(X),最后在id=1的数据行(的锁位)上加上行级锁(RLS)。 savepoint a; Update table_name ......where id=1;2原创 2013-11-26 09:57:16 · 1635 阅读 · 0 评论 -
Oracle多粒度封锁机制研究(一、研究锁机制的开始和基本篇)
Oracle多粒度封锁机制研究Oracle多粒度封锁机制研究1 引言—数据库锁的基本概念为了确保并发用户在存取同一数据库对象时的正确性(即无丢失修改、可重复读、不读“脏”数据),数据库中引入了锁机制。基本的锁类型有两种:排它锁(Exclusive locks记为X锁)和共享锁(Share locks记为S锁)。排它锁:若事务T对数据D加X锁,则其它任何事务都不能再对转载 2013-09-25 15:50:48 · 2317 阅读 · 0 评论 -
关于锁总结杂记2
1、锁,与一共享资源(即数据库对象)对应,是后者的一个标记。类似于,购房摇号时,房子与号码的对应。2、锁类型,分为TX、TM(用于保护表结构)、RLS(即行级锁); 锁模式,如基本的为S和X(排他锁)。 不同类型的锁对应加在不同的数据库对象上; 不同SQL操作语句对应产生锁(如TM)的不同模式。3、修改操作只能在原版块上,不能在CR块上。原创 2013-11-25 16:37:55 · 763 阅读 · 0 评论 -
关于锁的总结杂记1
同一个事务里的先后相邻的两个操作相遇时,这两个操作对应的锁模式相遇结合得到什么锁模式。 两种相遇的锁模式(不分先后)相遇的结果X 和 S X(替代)X 和 SRXX (替代)X 和 RXX (替代)SRX 和原创 2013-11-22 17:26:12 · 885 阅读 · 0 评论 -
Oracle KSL Latch 管理层 与 Latch管理(未看)
Oracle KSL Latch 管理层 与 Latch管理1作者:eygle |English 【转载时请标明出处和作者信息】|【恩墨学院 OCM培训传DBA成功之道】链接:http://www.eygle.com/archives/2009/08/oracle_ksl_latch.html站内相关文章|Related Arti转载 2013-10-17 09:02:45 · 2864 阅读 · 0 评论 -
关于锁的总结杂记3
除了select操作在实际访问表前可以对表这个数据库对象(索引也是可以加锁的)不用加锁外,其他操作都是先要对表加上表级锁,成功后,才能实际执行该操作。锁模式考虑的规则是,比如在表级别上,加了该锁模式的锁后,还能允许再加其他什么锁模式的锁。S锁,还是不要理解为读锁的好。因为S锁的定义是,事务A对表加了S锁后,其他事务也只能对表加了S锁。但是可以产生S模式锁的SQL操作语句原创 2013-11-26 14:39:30 · 635 阅读 · 0 评论 -
oracle一个事务的完整流程
oracle一个事务的完整流程服务进程如何处理用户进程的请求服务器进程在完成用户进程的请求过程中,主要完成如下7个任务:0.sql语句的解析1.数据块的读入db buffer2.记日志3.为事务建立回滚段4.本事务修改数据块5.放入dirty list6.用户commit或rollback 0.sql语转载 2013-12-10 10:28:05 · 1565 阅读 · 0 评论 -
查询oracle被锁对象并解锁
← oracle常用hint的用法Redhat 中裸设备(raw) 的配置和oracle中使用→查询oracle被锁对象并解锁发表于 2010 年 12 月 16 日 由惜分飞链接:http://www.xifenfei.com/607.html标题:查询oracle被锁对象并解锁作者:惜分飞©版权所有[文章允许转载,但必须以链接方式注明源地址,转载 2014-01-03 09:15:04 · 1179 阅读 · 0 评论 -
ORACLE关于锁和V$LOCK的分析
ORACLE关于锁和V$LOCK的分析 为了实现并发,oracle数据库使用了锁机制。要了解锁,首先要了解视图v$lock。v$lock这个视图列出 Oracle 服务器当前拥有的锁以及未完成的锁请求。如果你觉着 session 处于等待事件队列当中,那你应该检查视图v$lock。v$lock中的常用列有以下列:转载 2016-09-29 17:27:14 · 6138 阅读 · 0 评论