易截截图软件、单文件、免安装、纯绿色、仅160KB

深入浅出oracle锁 原理篇

    在现代的多用户多任务系统中,必然会出现多个用户同时访问共享的某个对象,这个对象可能是表,行,或者内存结构,为了解决多个用户并发性访问带来的数据的安全性,完整性及一致性问题,必须要有一种机制,来使对这些共享资源的并发性访问串行化,oracle中的锁就可以提供这样的功能,当事务在对某个对象进行操作前,先向系统发出请求,对其加相应的锁,加锁后该事务就对该数据对象有了一定的控制权限,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作(可以做select动作,但select 利用的是undo中的前镜像数据了).
    Oracle锁的分类
    Oracle锁基本上可以分为二类
    a:共享锁(share locks)  也称读锁,s锁
    b:排它锁 (exclusive locks) 也称写锁,x锁
    在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。
    按锁保护的内容分类
    oracle提供多粒度封锁机制,按保护对象来分,据此又可以分为
    a:dml锁, data locks 数据锁,用来保护数据的完整性和一致性
    b:ddl锁, dictionary locks 字典锁,用来保护数据对象的结构,如table,index的定义
    c:内部锁和闩 internal locks and latchs 用来保护数据库内部结构,如sga内存结构
    dml锁
    DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TM锁的种类有S,X,SR,SX,SRX五种,TX锁称为事务锁或行级锁。当Oracle执行delete,update,insert,select for update  DML语句时,oracle首先自动在所要操作的表上申请TM类型的锁。当TM锁获得后,再自动申请TX类型的锁,并将实际锁定的数据行的锁标志位(lb 即lock bytes)进行置位。在记录被某一会话锁定后,其他需要访问被锁定对象的会话会按先进先出的方式等待锁的释放,对于select操作而言,并不需要任何锁,所以即使记录被锁定,select语句依然可以执行,实际上,在此情况下,oracle是用到undo的内容进行一致性读来实现的。
    在 O


相关文档:

ORACLE常见问题1000问(之一)

ORACLE常见问题1000问(之一)
转贴 作者:  CCBZZP - ]8 L1 m: @) P9 }
大家在应用ORACLE的时候可能会与到很多看起来不难的问题,特别对新手来说,今天我简单把他总结一下,发布给大家,希望对大家有帮助!5 ]" z2 z0 ?( n6 q2 W
对ORACLE高手来说是不用看的.
- M/ D* W% x% f' H$ N* ]" m  I" W
4 ......

ORACLE常见问题1000问(之四)

174. /*+ALL_ROWS*/
   表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.例如:
SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN from BSEMPMS WHERE EMP_NO='CCBZZP';
   175. /*+FIRST_ROWS*/
   表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.例如:
SEL ......

ORACLE常见问题1000问(之七)

ORACLE内部函数篇
   255. CHARTOROWID(CHAR)
   将包含外部语法ROWID的CHAR或VARCHAR2数值转换为内部的二进制语法,参数CHAR必须是包含外部语法的ROWID的18字符的字符串.
   SELECT NAME from BSEMPMS WHERE ROWID=CHARTOROWID('AAAAfZAABAAACp8AAO');
   NAME : LEIXUE
   256. CONVERT(CHAR,DEST_CHA ......

ORACLE ROWID的一点知识

oracle8的ROWID结构
2004-04-23 15:18 pm
来自:Linux文档
地址:http://linux.sheup.com/linux/linux3983.htm
1、为什么使用ROWID
ORACLE把ROWID作为B-树和其内部算法标示ROW的唯一标示。
在ORACLE8以前的版本中,ROWID标示FILE、BLOCK、ROW NUMBER,只用一个数字代
表FILE号。
在ORACLE8中,一个DATAFILE有两 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号