oracle10g经典实战第10章其他概念

oracle10g经典实战第10章其他概念

ID:39974389

大小:856.00 KB

页数:40页

时间:2019-07-16

oracle10g经典实战第10章其他概念_第1页
oracle10g经典实战第10章其他概念_第2页
oracle10g经典实战第10章其他概念_第3页
oracle10g经典实战第10章其他概念_第4页
oracle10g经典实战第10章其他概念_第5页
资源描述:

《oracle10g经典实战第10章其他概念》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第10章其他概念这一章讨论概念包括事务、锁、快照和序列等,事务与锁概念与Oracle的并发控制有关。序列定义存储在数据字典中。序列通过提供唯一数值的顺序表用来简化程序设计工作。可以使用快照把远程数据库的本地拷贝提供给用户。10.1事务事务是Oracle操作完成的逻辑单位。事务的处理必须满足以下原则:(1)可分性事务只有两种状态,即完成和未完成。(2)一致性事务必须完成全部的操作,事务开始时系统为一个确定的状态,完成后则成为另一个确定的状态;未完成则回到事务开始时的确定状态;不允许出现未知的、不一致的“中间”状态。(3)孤立性事务的这个原则很好理解,即事务之间不

2、能相互干扰。这种要求有时也被称为事务的串行性。10.2锁多用户在访问相同的资源时,锁是用于防止事务之间的有害性交互的机制。当用户对数据库并发访问时,为了确保事务完整性和数据库一致性,需要使用锁,它是实现数据库并发控制的主要手段。锁可以防止用户读取正在由其他用户更改的数据,并可以防止多个用户同时更改相同数据。如果不使用锁,则数据库中的数据可能在逻辑上不正确,并且对数据的查询可能会产生意想不到的结果。Oracle通过获得不同类型的锁,允许或阻止其他用户对相同资源的同时存取,并确保不破坏数据的完整性,从而自动满足了数据的完整性、并行性和一致性。为了在实现锁时不在系统

3、中形成瓶颈和不阻止对数据的并行存取,Oracle根据所执行的数据库操作自动地要求不同层次的锁定,以确保最大的并行性。10.2.1锁机制和死锁1.锁机制在Oracle中,提供了两种锁机制:(1)共享锁(sharelock)共享锁通过数据存取的高并行性来实现。如果获得了一个共享锁,那么用户就可以共享相同的资源。许多事务可以获得相同资源上的共享锁。(2)独占锁(exclusivelock)独占锁防止共同改变相同的资源。假如一个事务获得了某一资源上的一个专用锁,那么直到该锁被解除,其他的事务才能修改那个资源。但允许对资源进行共享。所有的锁在事务期间被保持,事务中的SQ

4、L语句所做的修改只有在事务提交时才能对其他事务可用。Oracle在事务提交和回滚事务时,释放事务所使用的锁。2.死锁当两个或者多个用户等待其中一个被锁住的资源时,就有可能发生死锁现象。对于死锁,Oracle自动进行定期搜索,通过回滚死锁中包含的其中一个语句来解决死锁问题,也就是释放其中一个冲突锁,同时返回一个消息给对应的事务。用户在设计应用程序时,要遵循一定的锁规则,尽力避免死锁现象的发生。10.2.2锁的类型Oracle自动提供几种不同类型的锁,控制对数据的并行访问。一般情况下,Oracle的锁可以分为以下几种类型:1.DML锁DML锁的目标是保证并行访问的

5、数据完整性,DML锁防止同步冲突的DML和DDL操作的破坏性交互。2.DDL锁DDL锁保护方案对象的定义,调用一个DDL语句将会隐式提交事务。DDL锁有多种形式:(1)独占DDL锁:当CREATE、ALTER和DROP等语句用于一个对象时使用该锁。(2)共享DDL锁:当GRANT与CREATEPACKAGE等语句用于一个对象时使用此锁。(3)可破的分析DDL锁:库高速缓存区中语句或PL/SQL对象有一个用于它所引用的每一个对象的锁。假如被引用的对象改变了,可破的分析DDL锁会持续。3.内部锁内部锁包含内部数据库和内存结构。对用户来说,它们是不可访问的。因为用户

6、不需要控制它们的发生。10.2.3表锁和事务锁为了使事务能够保护表中的DML存取以及防止表中产生冲突的DDL操作,Oracle获得表锁(TM)。表10.1列出了不同的模式。当执行特定的语句时,由RDBMS获得这些模式的表锁。通过V$lock动态表可以查看锁的相关信息。模式列的值分别为2、3或6。数值2表示一个行共享锁(RS);3表示一个行独占锁(RX);6表示一个独占锁(X)。表10.1使用的语句与获得的锁10.2.3表锁和事务锁当一个事务发出表10.2所列出的语句时,将获得事务锁(TX)。事务锁总是在行级上获得。事务锁独占地锁住该行,并阻止其他事务修改改行,

7、直到持有该锁的事务回滚或提交数据为止。注意:要想获得事务锁(TX),事务首先必须获得该表锁(TM)。表10.2事务锁语句10.2.4实例分析Oracle在动态状态表V$lock中存储与数据库中的锁有关的所有信息。使用DESCRIBE命令可查看表V$lock的结构:SQL>DESCRIBEV$lock;结果为:名称是否为空?类型ADDRRAW(4)KADDRRAW(4)SIDNUMBERTYPEVARCHAR2(2)ID1NUMBERID2NUMBERLMODENUMBERREQUESTNUMBERCTIMENUMBERBLOCKNUMBER10.2.4实例分析

8、其中:(1)SID:会话标识符。(2)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。