试谈Oracle的性能优化_第1页
试谈Oracle的性能优化_第2页
试谈Oracle的性能优化_第3页
试谈Oracle的性能优化_第4页
试谈Oracle的性能优化_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle的性能优化本章学习习目标本章将介介绍优化化和调整整Oracle数据库库系统的的一些相相关命令令和方法法。第九章Oracle的性性能优化化本章内容容安排9.1数数据据库性能能优化概概述9.2SQL语句句的优化化9.3Oracle运行行环境的的优化9.4并并发发事件处处理9.5数数据据完整性性9.7常常见见问题处处理

9.1数数据据库性能能优化概概述9.1..1数数据库库性能优优化的内内容9.1..2不不同类类型系统统的优化化(1)调调整数据据结构的的设计。。(2)调调整应用用程序结结构设计计。(3)调调整数据据库SQL语句句。(4)调调整服务务器内存存分配。。(5)调调整硬盘盘I/O,这一一步是在在信息系系统开发发之前完完成的。。(6)调调整操作作系统参参数。9.1..1数数据库库性能优优化的内内容1.在线线事务处处理信息息系统((OLTP)这种类型型的信息息系统一一般需要要有大量量的Insert、Update操操作。OLTP系统需需要保证证数据库库的并发发性、可可靠性和和最终用用户的速速度,这这类系统统使用的的Oracle数据库库需要主主要考虑虑下述因因素或参参数:(1)数数据库回回滚段是是否足够够?(2)是是否需要要建立Oracle数数据库索索引、聚聚集、散散列?(3)系系统全局局区(SGA))大小是是否足够够?(4)SQL语语句是否否高效??9.1..2不不同类类型系统统的优化化2.数据据仓库系系统(DataWarehousing)这种信息息系统的的主要任任务是从从Oracle的海量量数据中中进行查查询,得得到数据据之间的的某些规规律。数数据库管管理员需需要为这这种类型型的Oracle数据据库着重重考虑下下述因素素或参数数:(1)是是否采用用B*--索引或或者bitmap索引引?(2)是是否采用用并行SQL查查询以提提高查询询效率??(3)是是否采用用PL//SQL函数编编写存储储过程??(4)是是否有必必要建立立并行数数据库,,来提高高数据库库的查询询效率。。9.2..2SQL语句优优化的具具体方法法9.2..1SQL语句的的优化规规则9.2SQL语句句的优化化9.2..1SQL语句的的优化规规则(1)去去掉不必必要的大大表、全全表扫描描。不必必要的大大表、全全表扫描描会造成成不必要要的输入入输出,,而且还还会拖垮垮整个数数据库;;(2)检检查优化化索引的的使用这这对于于提高查查询速度度来说非非常重要要;(3)检检查子查查询,考考虑SQL子查查询是否否可以用用简单连连接的方方式进行行重新书书写;(4)调调整PCTFREE和和PCTUSED等存存储参数数优化插插入、更更新或者者删除等等操作;;(5)考考虑数据据库的优优化器;;(6)考考虑数据据表的全全表扫描描和在多多个CPU的情情况下考考虑并行行查询。。1.索引引的使用用2.SQL语句句排序优优化3.选选择联合合查询的的联合次次序9.2..2SQL语句优优化的具具体方法法4.SQL子查查询的调调整

1、索引的使使用(1)尽量量使用索索引是全表扫扫描还是是索引范范围扫描描主要考考虑SQL的查查询速度度问题。。试比较较下面两两条SQL语句句:①语句A:SELECTdname,,deptnoFROMdeptWHEREdeptnoNOTIN(SELECTdeptnoFROMemp));②语句B:SELECTdname,,deptnoFROMdeptWHERENOTEXISTS(SELECTdeptnoFROMempWHEREdept.deptno==emp..deptno);

(2)索索引不起起作用的的情况①存在数数据类型型隐形转转换②列上有有数学运运算③使用不不等于((<>))运算④使用substr字字符串函函数⑤‘%’’通配符符在第一一个字符符⑥字符串串连接((||))

(3)函函数的索索引例如,日日期类型型是经常常用到的的,而且且在SQL语句句中会使使用to_char函函数以查查询具体体的的范范围日期期。如::select**fromstaff_memberwhereTO_CHAR(birth_day,’’YYYY’))=’2003’;可以建立立基于函函数的索索引如::CREATEINDEXInd_emp_birthONstaff_member((to_char(((birth_day,’’YYYY’)));2.SQL语句句排序优优化排序发生生的情况况如下::SQL中中包含groupby子子句SQL中中包含含orderby子子句SQL中中包含含distinct子句句SQL中中包含含minus或union操操作3.选择择联合查查询的联联合次序序联合查询询中如涉涉及到多多个表的的字段关关联及查查询,其其SQL查询语句句联合次次序的不不同写法法,会导导致语句句对各表表具体操操作的步步骤有不不同的次次序,所所以虽然然执行结结果相同同,但执执行效率率却不同同。4.SQL子查查询的调调整(1)关关联子查查询和非非关联子子查询非关联查查询的开开销———非关联联查询时时子查询询只会执执行一次次,而且且结果是是排序好好的,并并保存在在一个Oracle的的临时段段中,其其中的每每一个记记录在返返回时都都会被父父查询所所引用。。在子查查询返回回大量的的记录的的情况下下,将这这些结果果集排序序,以及及将临时时数据段段进行排排序会增增加大量量的系统统开销。。关联查询询的开销销——对对返回到到父查询询的记录录来说,,子查询询会每行行执行一一次。因因此,必必须保证证任何可可能的时时候子查查询用到到索引。。(2)在在子查询询中慎重重使用IN或者者NOTIN语句在子查询询中慎重重使用IN或者者NOTIN语句,,使用where((NOT)exists的效效果要好好的多。。①带IN的关联联子查询询是多余余的,因因为IN子句和和子查询询中相关关的操作作的功能能是一样样的。②为非关关联子查查询指定定EXISTS子句是是不适当当的,因因为这样样会产生生笛卡尔尔乘积。。③尽量不不要使用用NOTIN子句。。(3)慎慎重使用用视图的的联合查查询慎重使用用视图的的联合查查询,尤尤其是比比较复杂杂的视图图之间的的联合查查询。一一般对视视图的查查询最好好都分解解为对数数据表的的直接查查询效果果要好一一些。可以在参参数文件件中设置置SHARED_POOL__RESERVED__SIZE参数数,这个个参数在在SGA共享池池中保留留一个连连续的内内存空间间,连续续的内存存空间有有益于存存放大的的SQL程序包包。9.3..2物物理I/O的的调整9.3..3CPU的优化化调整9.3..4网网络配配置的优优化9.3..1内内存结结构的调调整9.3Oracle运行行环境的的优化9.3..5Oracle碎片整整理9.3..6Oracle系统参参数的调调整内存参数数的调整整主要是是指Oracle数据据库的系系统全局局区(SGA))的调整整。SGA主要要由三部部分构成成:共享享池、数数据缓冲冲区、日日志缓冲冲区。1.共享享池共享池由由两部分分构成::共享SQL区区和数据据字典缓缓冲区。。共享SQL区区是存放放用户SQL命命令的区区域,数数据字典典缓冲区区存放数数据库运运行的动动态信息息。9.3..1内内存结结构的调调整(1)数数据库管管理员通通过执行行下述语语句,来来查看共共享SQL区的的使用率率。select((sum(pins-reloads)))/sum((pins)""LibCache"fromv$librarycache;共享SQL区的的使用率率应该在在90%%以上,,否则需需要增加加共享池池的大小小。(2)数数据库管管理员可可以执行行下述语语句,查查看数据据字典缓缓冲区的的使用率率。select((sum(--getmisses-usage-fixed))//sum(gets))"RowCache""fromv$rowcache;数据字典典缓冲区区的使用用率也应应该在90%以以上,否否则需要要增加共共享池的的大小。。2.数据据缓冲区区数据库管管理员可可以通过过下述语语句,来来查看数数据库数数据缓冲冲区的使使用情况况。SELECTname,FROMv$sysstatWHEREnameIN(('dbblockgets',''consistentgets',''physicalreads'');根据查询询出来的的结果可可以计算算出数据据缓冲区区的使用用命中率率:数据缓冲冲区的使使用命中中率=1–((physicalreads/(dbblockgets+consistentgets))这个命中中率应该该在90%以上上,否则则需要增增加数据据缓冲区区的大小小。3.日志志缓冲区区数据库管管理员可可以通过过执行下下述语句句,查看看日志缓缓冲区的的使用情情况。selectname,valuefromv$$sysstatwherenamein(''redoentries',''redologspacerequests'');根据查询询出的结结果可以以计算出出日志缓缓冲区的的申请失失败率::申请失败败率=requests/entries申请失败败率应该该接近于于0,否否则说明明日志缓缓冲区开开设太小小,需要要增加Oracle数数据库的的日志缓缓冲区。。(1)在在磁盘上上建立数数据文件件前首先先运行磁磁盘碎片片整理程程序为了安全全地整理理磁盘碎碎片,需需关闭打打开数据据文件的的实例,,并且停停止服务务。如果果有足够够的连续续磁盘空空间建立立数据文文件,那那么就很很容易避避免数据据文件产产生碎片片。(2)不不要使用用磁盘压压缩Oracle数数据文件件不支持持磁盘压压缩。(3)不不要使用用磁盘加加密加密象磁磁盘压缩缩一样增增加了一一个处理理层,降降低磁盘盘读写速速度。如如果担心心自己的的数据可可能泄密密,可以以使用dbms_obfuscation包和labelsecurity选择择性地加加密数据据的敏感感部分。。9.3..2物物理I/O的的调整(5)使使用RAIDRAID的使用用应注意意:①选择硬硬件RAID超超过软件件RAID;②日志文文件不要要放在RAID5卷卷上,因因为RAID5读性性能高而而写性能能差;③把日志志文件和和归档日日志放在在与控制制文件和和数据文文件分离离的磁盘盘控制系系统上。。(6)分分离页面面交换文文件到多多个磁盘盘物理卷卷跨越至少少两个磁磁盘建立立两个页页面文件件。可以以建立四四个页面面文件并并在性能能上受益益,确保保所有页页面文件件的大小小之和至至少是物物理内存存的两倍倍。1.查看看CPU的使用用情况使用操作作命令可可以看到到CPU的使用用情况,,一般UNIX操作系系统的服服务器,,可以使使用sar––u命令令查看CPU的的使用率率;NT操作系系统的服服务器,,可以使使用NT的性能能管理器器来查看看CPU的使用用率。出现CPU资源源不足的的情况是是很多的的:SQL语句句的重解解析、低低效率的的SQL语句、、锁冲突突都会引引起CPU资源源不足。。9.3..3CPU的优化化调整2.查看看SQL语句的的解析情情况(1)数数据库管管理员可可以执行行下述语语句来查查看SQL语句句的解析析情况::SELECT**FROMV$$SYSSTATWHERENAMEIN(''parse__time_cpu'','parse_time_elapsed'','parse_count_hard'));这里:①parse__time_cpu::是系统统服务时时间。②parse__time_elapsed:是响响应时间间。而用户等等待时间间为:waite_time=parse__time_elapsed–parse__time_cpu由此可以以得到用用户SQL语句句平均解解析等待待时间::用户SQL语句句平均解解析等待待时间==waite__time/parse_count(2)数数据库管管理员还还可以通通过下述述语句,,查看低低效率的的SQL语句::SELECTBUFFER_GETS,,EXECUTIONS,SQL__TEXTFROMV$$SQLAREA;优化这些些低效率率的SQL语句句也有助助于提高高CPU的利用用率。3.查看看Oracle数据库库的冲突突情况数据库管管理员可可以通过过v$system__event数数据字典典中的““latchfree”统统计项查查看Oracle数据据库的冲冲突情况况,如果果没有冲冲突的话话,latchfree查查询出来来没有结结果。如如果冲突突太大的的话,数数据库管管理员可可以降低低spin_count参数数值,来来消除高高的CPU使用用率。4.CPU的优优化调整整方法一些优化化CPU使用和和配置的的具体方方法有::(1)取取消屏幕幕保护。。(2)把把系统配配置为应应用服务务器。(3)监监视系统统中消耗耗中断的的硬件。。(4)保保持最小小的安全全审计记记录。(5)在在专用服服务器上上运行Oracle。。(6)禁禁止非必必须的服服务。网络配置置是性能能调整的的一项很很重要的的内容,,而且很很容易隐隐藏性能能瓶颈。。(1)配配置网卡卡使用最最快速度度和有效效模式(2)删删除不需需要的网网络协议议(3)优优化网络络协议绑绑定顺序序(4)为为Oracle禁止或或优化文文件共享享9.3..4网网络配配置的优优化1.碎片片是如何何产生的的2.碎片片对系统统的影响响(1)导导致系统统性能减减弱(2)浪浪费大量量的表空空间9.3..5Oracle碎片整整理3.自由由范围的的碎片计计算用fsfi———freespacefragmentationindex(自由由空间碎碎片索引引)值来来直观体体现:fsfi=100*sqrt(max(extent))/sum(extents))**1/sqrt(sqrt((count((extents))))4.自由由范围的的碎片整整理可以将表表空间的的缺省存存储参数数pctincrease改改为非0。一般般将其设设为1,,如:altertablespacetempdefaultstorage(pctincrease1));这样smon便便会将自自由范围围自动合合并,达达到碎片片整理的的目的。。也可以采采用如下下语句,,通过手手工合并并自由范范围来达达到碎片片整理的的目的。。altertablespacetempcoalesce;;5.段的的碎片整整理段由范围围组成,,在有些些情况下下,有必必要对段段的碎片片进行整整理。要要查看段段的有关关信息,,可查看看数据字字典DBA_segments,范范围的信信息可查查看数据据字典DBA__extents。如如果段的的碎片过过多,将将其数数据压缩缩到一个个范围的的最简单单方法便便是用正正确的存存储参数数将这个个段重建建,然后后将旧表表中的数数据插入入到新表表,同时时删除旧旧表。这这个过程程可以用用import/export(输输入/输输出)工工具来完完成。export(()命令令有一个个(压缩缩)标志志,这个个标志在在读表时时会引发发export确定该该表所分分配的物物理空间间量,它它会向输输出转储储文件写写入一个个新的初初始化存存储参数数,等于于全部所所分配空空间。若若这个表表关闭,,则使使用import())工具重重新生成成。这样样,它的的数据会会放入一一个新的的、较大大的初始始段中。。例如::expuser/passwordfile=exp.dmpcompress==ygrants==yindexes=ytables=(table1,,table2);若输出成成功,则则从库中中删除已已输出的的表,然然后从输输出转储储文件中中输入表表:impuser/passwordfile=exp.dmpcommit=ybuffer=64000full==y;这种方法法可用于于整个数数据库。。另外,应应该定期期shutdowndatabase,,从而清清理momery碎片片。9.3..6Oracle系统参参数的调调整1.SharedPoolandLibraryCachePerformanceTuning(共共享池和和LibraryCache)共享池调调整的技技巧主要要有:(1)刷刷共享池池刷(Flush)共共享池可可以使小小块的内内存合并并为大块块的内存存。当共共享池的的碎片过过多时,,能够暂暂时恢复复性能。。刷共享享池可以以使用语语句:altersystemflushshared_pool;;(2)绑绑定变量量2.BufferCachePerformanceTuning((数据库库缓存调调整)从缓存调调整的角角度看,,应力求求避免以以下的问问题:(1)““缓存的的最近最最少使用用(LRN)链链”(cachebuffersLRUchain)的的加锁竞竞争;(2)““平均写写队列””(AverageWriteQueue))长度过过大;(3)过过多时间间花在等等待“写写完毕等等待上””(writecompletewaits);(4)过过多时间间花在等等待“缓缓冲释放放等待””上(freebufferwaits)。。3.LatchContention((加锁或或插销竞竞争)插销加锁锁是SGA中保保护共享享数据结结构的低低层的串串行化机机制。插插销latch是一类类可以非非常快的的获得和和释放的的锁。插插销锁的的实现是是依赖于于操作系系统的,,尤其在在关于一一个进程程是否会会等待一一个锁,,和等多多久方面面。有如下的的锁(插插销)需需要调整整:(1)RedoCopy//AllocationLatch:重重写日志志的复制制/分配配插销(2)SharedPoolLatch:共共享池的的插销(3)LibraryCacheLatch:LibraryCache插插销4.RedoLogBufferPerformanceTuning((重写日日志缓冲冲的调整整)LGWR将重重写日志志缓冲中中的重写写项写到到重写日日志文件件中。一一旦LGWR将将这些项项复制到到重写日日志文件件中,用用户进程程就可以以重写这这些项。。统计项项目“redologspacerequests”反反映了用用户进程程等待重重写日志志缓冲中中空间的的时间的的数字。。(1)设设置重写写日志大大小的提提示:“redologspacerequests””的值应应该接近近0。(2)设设定合适适的重写写日志的的大小,,建议每每15--30分分钟进行行一次重重写日志志的切换换。5.QueryPerformanceTuning(查查询效率率的调整整)如果查询询运行得得很慢,,请考虑虑以下这这些方面面:(1)希希望这个个查询运运行的有有多快以以及有理理由这样样要求吗吗?(2)优优化模式式OPTIMIZER_MODE设设为何何值?(3)查查询涉及及的索引引都是有有效的吗吗?(4)在在数据库库中有没没有其他他的长时时间运行行的查询询(大查查询)。。(5)表表和索引引上有统统计信息息吗?(6)统统计信息息是被计计算出来来的还是是被估计计出来的的?对于查询询的性能能调整有有两个主主要的调调试工具具:TKPROF和AUTOTRACE。。6.TemporaryTablespacePerformanceTuning(临临时表空空间的调调整)临时表空空间的调调整的技技巧如下下:如果即使使在稳定定的状态态下也存存在很多多的排序序扩展锁锁(SortExtentPoollatch))的竞争争,应该该通过修修改临时时表空间间的DEFAULTSTORAGE子子句的NEXT值来增增大扩展展块的大大小。如如果存在在很多的的排序扩扩展锁((SortExtentPoollatch)的的竞争并并且这种种等待是是由于过过多的并并发的排排序造成成的,应应该增大大SORT_AREA_SIZE参参数的大大小,以以使更多多的排序序能保存存在内存存中。建议让扩扩展块的的大小和和SORT_AREA_SIZE参参数相同同。9.4..2锁锁9.4..1并并发事事件的产产生9.4并并发发事件处处理数据库是是一个共共享资源源,可为为多个应应用程序序所共享享。这些些程序可可串行运运行,但但在许多多情况下下,可能能多个程程序或一一个程序序的多个个进程并并行地运运行,这这就是数数据库的的并行操操作。在在多用户户数据库库环境中中,多个个用户程程序可并并行地存存取数据据库,如如果不对对并发操操作进行行控制,,会存取取不正确确的数据据,或破破坏数据据库数据据的一致致性。9.4..1并并发事事件的产产生(1)当当一个用用户正在在修改表表中数据据的同时时,另一一个用户户正试图图删除该该表。(2)用用户A正正试图读读取用户户B的某某个事务务中的一一些数据据,在用用户A的的事务开开始后,,该事务务由用户户B修改改和提交交。用户户A读取取用户B提交的的数据。。这意味味着在同同一个事事务中读读取的数数据在某某个时刻刻不一致致。(3)某某个用户户对数据据进行修修改,另另一个用用户在第第一个用用户提交交事务以以前对同同一行进进行修改改;因此此,第一一个用户户所做的的改变丢丢失了。。(4)一一个用户户从另一一个用户户尚未提提交的数数据中读读取数据据;也就就是说,,在用户户B的改改变提交交以前,,用户A读取用用户B正正在修改改的行。。9.4..2锁锁1.锁的的功能2.锁的的类型3.锁的的模式4.查看看相关信信息1.锁的的功能(1)数数据一致致性(2)数数据并行行性(3)数数据完整整性Oracle在在两个不不同级上上提供读读一致性性:语句句级读一一致性和和事务级级一致性性。(1)语语句级读读取一致致性(2)事事务级读读取一致致性2.锁的的类型Oracle锁锁具体分分为以下下几类::(1)自自动锁与与显示锁锁按用户与与系统划划分,可可以分为为自动锁锁与显示示锁。①自动锁锁:当进进行一项项数据库库操作时时,缺省省情况下下,系统统自动为为此数据据库操作作获得所所有有必必要的锁锁。②显示锁锁:某些些情况下下,需要要用户显显示的锁锁定数据据库操作作要用到到的数据据,才能能使数据据库操作作执行得得更好,,显示锁锁是用户户为数据据库对象象设定的的。(2)共共享锁与与排它锁锁按锁级别别划分,,可分为为共享锁锁与排它它锁。①共享锁锁:共享享锁允许许相关资资源可以以共享,,几个用用户可同同时读同同一数据据,几个个事务可可在同一一资源上上获取共共享封锁锁。共享享锁比排排它锁具具有更高高的数据据并行性性。但拙拙劣的事事务设计计+共享享锁容易易造成死死锁或数数据更新新丢失。。②排它锁锁:事务务设置排排它锁后后,该事事务单独独获得此此资源,,另一事事务不能能在此事事务提交交之前获获得相同同对象的的共享锁锁或排它它锁。排排它锁禁禁止相关关资源的的共享,,如果一一事务以以排它方方式封锁锁一资源源,仅仅仅该事务务可更改改该资源源,直至至释放排排它封锁锁。(3)DML锁锁和DDL锁按操作划划分,可可分为DML锁锁、DDL锁。。①DML锁又可可以分为为:行锁锁、表锁锁、死锁锁。行锁:当当事务执执行数据据库插入入、更新新、删除除操作时时,该事事务自动动获得操操作表中中操作行行的排它它锁。表锁:当当事务获获得行锁锁后,此此事务也也将自动动获得该该行的表表锁(共共享锁)),以防防止其它它事务进进行DDL语句句影响记记录行的的更新。。事务也也可以在在进行过过程中获获得共享享锁或排排它锁,,只有当当事务显显示使用用LOCKTABLE语句句显示的的定义一一个排它它锁时,,事务才才会获得得表上的的排它锁锁,也可可使用LOCKTABLE显示的的定义。。死锁:当当两个事事务需要要一组有有冲突的的锁,而而不能将将事务继继续下去去的话,,就出现现死锁。。②DDL锁又可可以分为为:排它它DDL锁、共共享DDL锁、、分析锁锁。排它DDL锁::创建、、修改、、删除一一个数据据库对象象的DDL语句句获得操操作对象象的排它它锁。如如使用altertable语句句时,为为了维护护数据的的完成性性、一致致性、合合法性,,该事务务获得一一排它DDL锁锁。共享DDL锁::需在数数据库对对象之间间建立相相互依赖赖关系的的DDL语句通通常需共共享获得得DDL锁。如如创建一一个包,,该包中中的过程程与函数数引用了了不同的的数据库库表,当当编译此此包时,,该事务务就获得得了引用用表的共共享DDL锁。。分析锁::Oracle使用共共享池存存储分析析与优化化过的SQL语语句及PL/SQL程程序,使使运行相相同语句句的应用用速度更更快。一一个在共共享池中中缓存的的对象获获得它所所引用数数据库对对象的分分析锁。。分析锁锁是一种种独特的的DDL锁类型型,Oracle使用用它追踪踪共享池池对象及及它所引引用数据据库对象象之间的的依赖关关系。当当一个事事务修改改或删除除了共享享池持有有分析锁锁的数据据库对象象时,Oracle使使共享池池中的对对象作废废,下次次在引用用这条SQL//PLSQL语语句时,,Oracle重新分分析编译译此语句句。(4)内内部闩锁锁内部闩锁锁是Oracle中的的一种特特殊锁,,用于顺顺序访问问内部系系统结构构。当事事务需向向缓冲区区写入信信息时,,为了使使用此块块内存区区域,Oracle首首先必须须取得这这块内存存区域的的闩锁,,才能向向此块内内存写入入信息。。3.锁的的模式(1)模模式0::none。(2)模模式1::null空空。1级级锁有::Select,有时时会在v$locked_object出出现。(3)模模式2::Row-S行行共享享(RS):共共享表锁锁,subshare。2级锁有有:Selectforupdate、LockForUpdate、LockRowShare。selectforupdate当对对话使用用forupdate子串串打开一一个游标标时,所所有返回回集中的的数据行行都将处处于行级级(Row-X)独占占式锁定定,其他他对象只只能查询询这些数数据行,,不能进进行update、delete或或selectforupdate操操作。(4)模模式3::Row-X行行独占占(RX):用用于行的的修改,,subexclusive。3级锁有有:Insert、Update、、Delete、LockRowExclusive。没有commit之前前插入同同样的一一条记录录会没有有反应,,因为为后一个个3的锁锁会一直直等待上上一个3的锁,,必须释释放掉上上一个才才能继续续工作。。(5)模模式4::Share共共享锁锁(S)):阻止止其他DML操操作,share。4级锁有有:CreateIndex、LockShare。locked__mode为2、3、、4不影影响DML(insert、、delete、update、select等等)操作作,但但DDL(alter、drop等等)操作作会提示示错误。。(6)模模式5::S/Row--X共共享行独独占(SRX)):阻止止其他事事务操作作,share/subexclusive。。5级锁锁有:LockShareRowExclusive。。具体来讲讲有主外外键约束束时update/delete.....;可可能会会产生4,5的的锁。(7)模模式6::exclusive独占占(X)):独立立访问使使用,exclusive。。6级锁锁有:Altertable、Droptable、DropIndex、、Truncatetable、、LockExlusive。数字越大大锁级别别越高,,影响响的操作作越多。。4.查看看相关信信息Oracle在在动态状状态表V$lock中中存储与与数据库库中的锁锁有关的的所有信信息。当当资源被被锁定时时,可可以检查查V$lock表,查查看数据据库中的的各种情情况。9.5数数据据完整性性数据完整整性是指指数据的的正确性性和相容容性。数数据的完完整性是是为了防防止数据据库存在在不符合合原义的的数据,,防止错错误信息息输入和和输出,,即数据据要遵守守由DBA或应应用开发发者所决决定的一一组预定定义的规规则。1.数据据完整性性的类型型Oracle应应用于关关系数据据库的表表的数据据完整性性有下列列类型::(1)在在插入或或修改表表的行时时允许不不允许包包含有空空值的列列,称为为空与非非空规则则。(2)唯唯一列值值规则,,允许插插入或修修改的表表行在该该列上的的值唯一一。(3)引引用完整整性规则则,同关关系模型型定义相相符。(4)用用户对定定义的规规则,是是复杂的的完整性性检查。。2.完整整性约束束及其优优点完整性约约束,是是对表的的列定义义规则的的说明性性方法。。Oracle利利用完整整性约束束机制防防止无效效的数据据进入数数据库的的基表,,如果任任何DML执行行结果破破坏完整整性约束束,该语语句被回回滚并返返回上一一个错误误。利用完整整性约束束实施数数据完整整性规则则有下列列优点::(1)定定义或更更改表时时,不需需要程序序设计,,便很容容易地编编写程序序并可消消除程序序性错误误,其功功能是由由Oracle控制。。所以说说明性完完整性约约束优于于应用代代码和数数据库触触发器。。(2)对对表所定定义的完完整性约约束是存存储在数数据字典典中,所所以由任任何应用用进入的的数据都都必须遵遵守与表表相关联联的完整整性约束束。(3)具具有最大大的开发发能力。。当由完完整性约约束所实实施的事事务规则则改变时时,管理理员只需需改变完完整性约约束的定定义,所所有应用用自动地地遵守所所修改的的约束。。3.完整整性约束束的类型型Oracle的的DBA和应用用开始者者对列的的值输入入可使用用的完整整性约束束有下列列类型::(1)NOTNULL约束束:如果果在表的的一列的的值不允允许为空空,则需需在该列列指定NOTNULL约束束。(2)UNIQUE键键约束::在表指指定的列列或组列列上不允允许两行行具有重重复值时时,则需需要该列列或组列列上指定定UNIQUE键完整整性约束束。在UNIQUE键键约束定定义中的的列或组组列称为为唯一键键。所有有唯一完完整性约约束是用用索引方方法实施施。(3)PRIMARYKEY约束束:在数数据库中中每一个个表可有有一个PRIMARYKEY约束束。包含含在PRIMARYKEY完整性性约束的的列或组组列称为为主键,,每个表表可有一一个主键键。Oracle使用用索引实实施PRIMARYKEY约束。。(4)FOREIGNKEY约束束:在关关系数据据库中表表可通过过公共列列相关

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论