版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
强制启动方式当不能关闭数据库时,能够用startupforce来完成数据库的关闭先关闭数据库,再执行正常启动数据库命令带初始化参数文件的启动方式先读取参数文件,再按参数文件中的设置启动数据库一个Delete操作的流程:在librarychache中匹配(librarychachelocklatch保librarychachelock对地址堆的访问,而后librarychachepinlatch保护librarycachepin对librarycache中sq1有关信息的访问)2、根据执行计划读取数据:cachebufferchainlatch保护能定位到bufferheader并pin住该块(假如没有bufferheader,就pin住某个空块(没有空块就产生freebufferwaits),并到数据文件中读取)。假如如今有某个进程想访问该块,将产生bufferbusywaits。3、在redologbuffer中记录delete操作的细节。(包含回滚段前后镜像、数据块前后镜像)。4、在相应回滚段段头的事务表中创建一个undo条目,把将要删除的记录创建5、在BufferCache中的相应数据块上删除记录,同时标记相应的数据块为1.0racle产生一个SCN2.在回滚段事务表中标记该事务状态为commited3.LGWRFlushLogBuffer到日志文件3.假如如今数据块仍然在BufferCache中,那么SCN将被记录到BlockHeader上,这被称之快速提交(fastcommit)4.假如dirtyblock已经被写回到磁盘,那么下一个访问这个block的进程将会自回滚段中获取该事务的状态,确认该事务被提交。然后这个进程获得提交SCN并写回到BlockHeader上。这被称之延迟块清除(delayedblockcleanout)。SGA(系统全局区、共享全局区)、PGA(进程全局区、私有全局区)10%冗余内存,OSSYS进程(约1.6G),OSBUFFER(约0.8G),数据库连接消耗内存(每个连接约5~8M),PGA(每个连接约2M,V$PGATARGETADVICE),SGA_____SQLselectsumpinhitsreloadssumNAMEVALUE__round(getmisses/decode(gets,0,null,gets)*100ratiofromvSrowcache('PACKAGEPACKAGEBODYPROCEDUREFUNCTION selecttablenamecachebuffSELECTNAMEVALUEFROMVSSY起).___ ___REVALUEIIradioFROMVSSYSSTATRBARVSSSELECTDECODEisdefaultTRUEDECODESELECTkspponmDECODEksppoflgObsoleteUnderscoreduserenvInstanceandyinstiduserksppinmlikeparorderby ALTERSESSIONSETNLSDAT__最常被修改的参数:Sharedpoolsize分配给共享池的内存字节数随着用户的需求,能够按时增加此值Rollbacksegments数据库启动时获取的一个或者多个当事务处理量增加或者减少时,能够从该回滚段名列表中增加或者删除回滚段名Processes可同时访问数据库的最大进程数量session=1.1*process+5sessionprocessOracle后台进程的session,10%__是提供给recursivesession使用的。见SGA介绍中的有关内容见SGA介绍中的有关内容针对每个session,排序首先会使用sortareasize,假如不足则会使用临时表空间。实际上就是外排序过程,把要排序的对象分割为内存能够容纳的小段(sortrun),然后每个sortrun都放到sortarea里面去排序,排序结果作为中间信息放在临时表空间的临时段内,由于分段排序的结果当然不可能是最终要求的排序结果,因此还要通过一个merge的过程,才会得到最终排序结果,原理大概是比较每个sortrun的第一名,取出领先者,然后该sortrun的第二名顶上,继续上述过程直到取完。因此建议:sortareasize所能容纳记录数至少大于排序记录数的平方根 许多DBA有个错误的概念,认为此参数受CPU数量的限制,实际并非如此。提示:假如工作在一个能够支持多进程的操作系统上,需做的第一件事就是改变这个参数的值。重新启动数据库,使用startup命令,Oralce将会按照下列顺序在缺省目录中搜索参数startuppfileOracleadmineyglenpfile然后我们能够使用ALTERSYSTEM方式将修改固定到SPFILE.空间管理主体思想一直围绕着内部段的扩展。不仅仅影响到空间大小,自由块太分散的话会影响性能(I/0,及扩展时间等)空闲表(主空闲表、进程空闲表、事务空闲表),可能存在于表头块中4)假如没有找到恰好合适的,那么Oracle扫描大些的气泡。假如一个大的气泡所拥有的块数比所需要的块数多5块或者5块以上(当然是在取了约数以后),那么气泡中的自由空间分成两部分,一部分满足扩展段的需要,另一部分仍作为自由空间。新的(小一些的)的自由空间气泡包含去掉所需的块数后剩下的块数(5块或者多于5块)。比如,假如需要的块数是25,但找到了一个32块的气泡,那么Oracle占用其中的25块分配给扩展段并保持剩下的7块形成一个分开的气泡,仍然保留在原处那么只是把此气泡供扩展段使用。换句话说,假如多余的块数少于5就不产生分割操作。5)假如所有现有的气泡都太小,不足以满足扩展段的需要(即没有找到大小相等的也没有找到大于数据块数的气泡),那么进行第三次扫描寻找是否有能够合空间。在合并以后,再次进行第3步与第4步。6)假如前面的几步都没有找到能够供扩展段使用的气泡,那么Oracle检查AUTOEXTEND功能是否已被使能(后面全面介绍这一选项)。假如是的,再检查数据文件是否是可扩展的。7)假如AUTOEXTEND没有被使能或者者在磁盘上(数据文件所在的磁盘)没有足够的空2)理想情况下,一个表空间中的所有段应该有相同的存储参数(对每一个段有相同的用100作为PCTINCREASE的可能值。在任何情况下,不要用如1、5等的随机值,以防止生成4)周期性显式地合并应用程序的表空间。不要配置SMON来自动合并表空间,由于它需要在表空间的DEFAULTSTORAGE语句中指定一个大于0的PCTINCREASE的值。1)识别表空间中的扩展段、气泡、蜂窝:COLUMN"FILID"FROMAT99HEADINGFILID','||SEGMENTNAME“SEGMENT”,E.BLOCKID“STARTBLK”,___WHEREETABLESPACENAMEUPPERTBLSPCNA____ANDDTABLESPACENAMETABLESPACE_______ ____WHERESTABLESPACENAMEUPPERT_________#12111212121312123)根据停工时间决定重构计划,重构步骤:a)储存这些段中的数据(把数据输出或者用CREATETABLEASSELECT命令来储存表数据;关于索引表,用CREATEINDEX脚本来重构它们)。Oracle扩展段分配算法:用光那些看起来以后不可能被使用的块!(比如扩展段外最后的几个块)保证DBBLOCKSIZE与扩展段大小(INITIAL/NEXT)相习惯,增强了每次I/0操作读尽展段结尾,只能读取扩展段中剩下的几块的限制。举个例子,能够更一个表包含5个扩展段,每个包含128个8K的数据块(即,INITIA&NEXT=1MB),那么在一次全表扫描中需要读5MB或者5120KB数据。假如DBFILEMULTIBLOCKREADCOUNT是8(DBBLOCKSIZE是8K),那么理论上需要的最大I/那么I/0调用的次数会变化。比如,假如INITIAL&NEXT=520KB),那么在全表扫描期间需要读2.45MB或者2600KB数据。假定,DBFILEMULTIBLOCKREADCOUNT仍是8,那么理论上需要多达45次I/0调用才能访问整个表。由于第二个表(2600KB)大约是第一个表(5120KB)然而,总共只做了5次I/0调用与假定的情况有很大的出入。让我们认真分析一下当第二个表被扫描时到底发生了什么情况。在第二个表中的每个扩展段包含520K(2600K/STORAGE)或者65个数据块。现在按假定的DBFILEMULTIBLOCKREADCOUNT在一次I/0调用中至多可读64K数据。因此,访问每个扩展段需要9次I/0调用读取了段中的98%的数据或者64块,而第9次调用读取最后一块)。由于第9次调用只读取了8K(最后一块),因此不是最优的。这5个扩展段中的每一个都需要用第9次访问来读取其中最后一块,导致了5次附加的I/0调用。假如INITIAL/NEXT的大小调整得好一些,是(DBFILEMULTIBLOCKREADCOUNTXDBBLOCKSIZE)的倍数,那么附加的5块能够在一次I/0调用中读入。比如,假如INITIAL/NEXT=512K,那么仅需要节约了4次调用。这里,我们假定每个段有5个扩展段。然而,随着数据库变得越来越大,扩展段数会相当高,这样,相应INITIALNEXTALTERSESSIONSETEVENT由于当前磁盘空间满了,而手头又没有新的磁盘,因此需要重组表空间(减小同一磁盘其他表空间的大小,腾出空间),重组之前需要做好充足准备,有关操作见24X7第12.1.16;但在0racle8i以后,支持可移动的表空间,因此不必进行复杂的重组。·要保证移动睡眠表空间(或者通过减少临时表空间)能提供所需要的空间(这是整个表空间可能当前看起来是“睡眠的”(如,在白天)。然而,却可能被在晚业使用。另外,它也可能被CFO使用,而CFO今天未启动而已。因此,在决定哪个表空间是·保证睡眠的表空间中没有数据字典段(由于编辑了SQL.BSQ文件)。·要提供足够的提示信息告知用户这种“睡眠”明智的。否则,由于[BUG:568232],当文件增长超过ORACLE不表操纵扩展段数目(<100),太大影响空间管理性能并增加数据字典记录maxtrans:同一个block中同意最大并发事务数事务需要的空间。(即ITL的个数,这样能够不用等到其他事务释放ITL)小),为5的倍数(假如只用1块,也会出现4个空块),全表扫描期间来确定读什么块,能够可释放MINEXTENTS外的未用空间,使用KEEP参数能够释放INITIAL/MINEXTENTS中的未·在段上获得一个独占锁(对段头块能够独占访问)。(行一级或者表一级的锁),那么截断操作务必通过在共享模式下申请一个TX锁等待。·假如配置了多个进程(OPS环境),把段头与包含空闲表组的块写入磁盘中。假如我们要固定表,那么能够在创建表的时候或者CACHE将表放置到BufferCache的LRU列MRU(比如2个DML分blocksdmlblocks有非常多的transaction,是找完所有的效率高还是到了某个地步找不到干脆直接分配新的extent效率高)上都没有已经commit的事务,那么如今才移动HWM因此,照这样的步骤,同意你的看法,多个freelist不可能造成实际上的空间浪费,只block进MFL)---->移动HWM行关于非链接的行,将是一整行;而关于链接的行,它是行的一部分。行头至少用3个字节包含指向行的元数据,如所有行段的ROWID(假如行已经是分链/迁移的),物理地存在于这一行部分或者整行中,与集群关键字(假如表是集群的一部分)。实数据的长度。注意,一列(如LONGRAW)可能在于多个块。因此,能够用列头来识列数据的大小。这对别的变化的列数据类型也有用,如VARCHAR、VARCHAR2与RAW,可用来列有7个字节)。关于最多包含250个字节的列使用1个字节而关于更大的列(超过250个字节)使用3个字节。小于250个字节的可变长度的列有1个字节的头。然而,假如该列更新后体积变大,列头要扩展为3个字节。假如由于自由空间有限而使这一扩展无法进行,那么假如列包含一个NULL(没有任何值)而且它物理地放NULL或者NOTNULL(它们实际上有值)之前,那么前面NULL列的列头用0作为数据大小。另外,假如一个包含NULL值的必要的列(非空的)有助于优化数据库中中间的使用操作。列通常以声明的数据储存,除非在某些情况下,如当表中包含一个LONG/LONGRAW列时,在这种情况下,后者通常储存在最链接比较容易发生在比较大的行上,比如行上有LONG、LONGRAW、LOB等数据类型的字段,行迁移:当一行记录初始插入的时候事能够存储在blockOracle将会迁移整行数据到一个新的block中(假设一个block中能够存储下整行数据),Oracle会保留被迁移行的原始指针指向新的存放行数据的block,这就意味着被迁移行的ROW指向该行的新的位置,同时该行原先空间的剩余空间不再被数据库通常情况下(视关键字长度),记录数小于等于1.66×10°的索引都能够被3层的B假如要求创建索引的时间少(由于大表会造成系统暂时停工),需要设置小的假如删除叶节点行/全部叶节点行比率高(>20%),或者索引的高度(height列>4),应重建引_leaf:0x1403d9f20987295(1:nrow:341leaf:0x1403f0620987654(-1:nrow:341rrow:341)branch(分支),假如leaf(叶子)的行数基本接近说明索引健康,否则重建;假如索引),则至少要有组合索引的引导列参与到该查询中,如创建一个索引:createindex_inefficient.3只是将hwm移动,释放的空间不可能被其他段使用-可通过2次createtable**nologgingasselect来清理hwm使空间重新迅速使用,调整PCTFREE限制块中自由空间量,使块中能够放更多的行,来提高行被删除时,相应的块并不马上清除,而是等到再次访问SELECTSoftwarevsnCompatibi指出了创建操纵文件时的Oracle的版本,这里是0x9200000,即,9.2.0。CompatibilityVsn指出了兼容版本为0x8000000,即,8.0。第2部分是为Transaction层提供的Header信息。它一共占据了48bytes,包含24bytes的这里我们看到表空间号是tsn:8,数据文件号是file#:11,相对数据块地址是rdba:数,高水位地址Highwater::0x02c00004,自由列表信息hdr'sfreelists:1等等。假→address(RDBA):包含Tablespace所在数据文件的相对文件号file#=3,与数据块的 代表16进制,每2位16进制占用一个字节)segment/objectid为0x649b,转成10进制为25755,能够由obj →0x020x0000.000.000000000xfsc24bytes的操纵信息包含:Flag:占用2bytes。O表示这个block在freelist上。否则flag为"-"Unused:4bytes,用来前后兼容。每个ITLentry包含下列的内容:TransactionidXidbytesrollbacksegmentnumbertr中的slotnumber等。UndoblockaddressUbabLocks:3nibbles.也就是所谓的行级锁(row-levellocks)SCNorfreespacecredit:6bytes.假如这个事务已经cleanout,这个值就是SCN;否则,前两个字节表示由这个事务释放的此block中的空间数。dictionary,即每增加一条row,rowdictionary就多出2bytes用来记载该row,能够通过下面的hsiztabledictionaryclusterblocktableblocknrow:numberofrowsH-headofrowpieceH=Headpieceofrow临时(排序)段__SELECT'ALTERUSERUSERNAME||TEMPORARYTABLESPACETEMP2;' FROMDBAUSERSWHERETEMPORARYTABLESPACE='TEMP1' 5)丢弃TEMP1。记录如:,比如数据库的启动与关闭、数据库启动时使用的参数设置、联机重做日志切换等。同时,为了便于检查,也将许多数据库错误写入该文件。任何数据库结构的改变加日志文件、增加表空间、减少数据文件等)也被记入告警日志文件。Sessionaltered.bdump目录下是background进程留下的文件udump应该是user进程留下的文件系统进程出错前写入的信息.通常不可能读懂.tkproforcloratrcrilltxtexp跟踪类别事件名称动作Name跟踪项目范围限定件件processstatenr改变执行ngtopath件rnoff 分析系统状态,最好每10分钟一次,做三次对比分析LibraryCache的全面情况分析B*树索引结构LEVEL<DBAOBJECTS.OBJECTID>’__密码文件假如没有口令文件,在数据库未启动之前就只能通过操作系统认证.使用Rman,很多时候需要在nomount,mount等状态对数据库进行处理因此通常要求sysdba权限假如属于本地DBA组,能够通过操作系统认证登陆通过查询视图V$PWFILEUSERS来获取拥有SYSOPER/SYSDBA系统权限Scn:systemchangenumber,每个DATABLOCK对应一个scn,为了数据一致性而存在系统发生变化所产生的一个时间点标志但其作用各不相同数据文件头中包含了该数据文件的checkpointSCN,表示给数据文件最近一次执行检查点操作时的SCN.日志文件头中包含了lowscn,nextscn,表示给日志文件包含有从lowscn到nextscn的操纵文件中包含了每个数据文件的checkpointSCN,stopSCN,每个日志文件的low相同datablock里面的SCN是当block被更换的时候的SCN,而数据文件有那么多block,自然不一致的block有不一致的SCN,block中存在blockSCN与ITL中的commitSCN,blockSCN又在块头与块尾都有,若不一致意味着block损坏当一个查询执行的时候,他会先从系统中得到一个当前的SCN号,在他查找数据的同时,他会检查每个数据行与他对应的SCN号,只有那些不比他的SCN号大的行才能从对应用户数据文件的缓冲区内取出.而那些大于他SCN号的行,就应该从回滚段数据文件的缓冲中取出.在ORACLE8I下列,可通过如下语句取得CURRENTSCN(internal用户)selectmaxktuxescnwpowerktuxescnbfromx在ORACLE9I,使用如下语句取得CURRENTSCNfirstchange#是日志中的第一条日志的scncheckpointchange#是数据库的scncheckpointchange#是数据文件的起始scn在每个数据文件头中都有一个检查点计数器,在ORACLE每次执行数据文件上的检查点处理时对计数器加1。同时,操纵文件也为每个数据文件保留一个检查点计数器。在每个数据文件头的检查点结构中含有一个SCN,称之开始SCN,与每个数据文件相对应,操纵文件有一个结束SCN,在数据库的正常操作期间,操纵文件中的结束SCN被设置为无穷大,数据文件中开始SCN在每次完成检查点处理后加1;检查点发生的时候修改数据文件头的检查点计数与更新文件头scn。只有ckpt进程更新数据文件头(oracle8往常假如没有ckpt进程就是lgwr更新),发生变化所产生的一个时间点标志。不是提交的标志,只是由于提交也是系统的变化之一更新数据文件头与操纵文件。位到日志文件(归档日志文件)与具体的位置。假如一个事务包含多个dml,则只有第一个初始产生dmlscn候又是一个scn;假如一个事务只有一个dml,拿看起来就是dml产生一个scn,提交或2.第二次检查对数据文件头中的开始SCN与SCNSCN等于开始SCN,则不需要对那个文件进行恢复开数据库,作为打开过程的一部分,要将结束SCN重新设置为1当数据库用ABORT强制关闭数据库时,数据库不进行检查点处理,而结束SCN仍然为无穷大。在下次启动期间,发现开始SCN与结束SCN不一致,需要进行线程恢复。修改回滚段头的事务表状态测试--insertinto前后、commit后及Checkpoint后的变化:commit后Checkpoint后更新数据文件头更新更新上表只是为了测试scn的变化,关于其他信息未做说明(如块地址变化等);commit的时候只修改回滚段事务表,目前无法直观看到,实例启动的时候会根据回滚段中未提交的heartbeat--------是ckpt每3秒将当前dbwr写的进度(scn)写到操纵文件中从其中批量地写到数据文件。由于这里有一个顺序dbwr量的,写到哪个buffer的时候该buffer的首次变化时候的scn就是当前所有数据文件度(scn)写入数据文件头与操纵文件,这就是检查点scn。数据库中的数据时,使用加锁以防止另一个用户做同样的修改V$1og从操纵文件中提取有关重做日志组的信息V$logfile有关实例重做日志组文件名及其位V$process当前进程的信息V$rowcache内存中数据字典活动/性能信息V$sesstat在V$session中报告当前会话的统计信息V$sqlarea共享池中使用当前光标的统计信息。光标是一块内存区V$waitstat出现一个以上会话访问数据库的数据时的全面情况。当有一个数据对象号相对文件号块号位置号 被写在由参数USERDUMPDEST或者者BACKGROUNDDUMPDEST所指定的位置。后台进程失败经常在数据库的alert.log文件中写入一项,或者者写到它们各自的追踪文件.Vprocessbgprocesssession------2.监控共享SQL区V$sqlarea,V$sqltext,V$sqltextwithnewlines,selectp.spidthread,s.username,andss.sid=s.sidandss.statistic#=12在UNIX下能够用grep命令把alertorasid.log里出现的错误储存到另一个文件。RACLEBASEadminorasidbdumplistener的日志文件也需要周期地listener 种:排它锁(Exclusivelocks记为X锁)与共享锁(Sharelocks记为S锁)。注1)(表注1)TM被修改表的标识(objectid)0T以十进制数值表示该事务所以十进制数值X占用的回滚段号与该事务在该回中所占用的槽号(slotnumber,可懂得为记录号)。其构成形式为:0xRRRRSSSS(RRRR=RBSnumber,SSSS=slot)。表示围绕(wrap)次数,即该槽(slot)被重用的次数; 用时,它将进行自旋(等待),然后再次请求latch。该latch将继续重复这一过程,直到自 SPINCOUNT之后,还没有得到latch,它将进入睡眠,然后在一厘秒(百分之一秒)之SPINCOUNT之后睡眠两倍长的时间(即二厘秒)。这个过程之后,它每次的睡眠时间将发起gets,计数加1得latch后,它将一直持有该latch直到它不再使用此数据结构,这时latch才会被释放。可通过latch名称来区分它所保护的不一致数据结构Latch保护SGA中的数据结构被多个用户同时访问,假如一个进程不能立即得到所需latch,它就务必等待,这就导致了CPU的额外负担与系统的速度降低。额外的CPU使用是进程‘spining'导致的,‘spining'是指进程定时地重复尝试获取latch,在连续两次常见Latch问题使用绑定变量;调整SHAREDPOOLSIZE使用绑定变量;调整SHAREDPOOLSIZE最大程度减少重做日志生成并避免不必要的提交增加LOGSIMULTANEOUScopies使用DBBLOCKLRULRULATCHES或者多个缓冲池SQLNET.AUTHENTICATIONSERVICES=(NTS)---(容许使用操作系统的身份验证))(SID=orcl)----SERVICENAME,SID二取其一)____audittrailtransactionauditingbooleanstringSQL>audittable;_ 即:<语言><比特位数><编码>nlscsscanFULLYFROMCHARZHSGBKTOCHARUSASCIILOGUScheCAPTUREYARRAYPROCESScontrolfileparallelwrite9,41211,689.17logfileparallelwrite9,7804,722.07__ROUNDBUFFERGETSDISKREADSBUFFERGETROUNDDISKREADSEXECUTIONSReadsperru 什么是绑定变量?硬解析,需要使用绑定变量(bindvariable)。它是用户放入p会包含等待LGWR进程把一个会话事务的日志记录信息从日志缓冲区中写到磁盘上的重做日等待问题说明有许多全表扫描:调优代码;存储较小的表。DB文件顺序说明有许多索引读取:调优代码(特别是连接)。释放缓冲区增大DBCACHESIZE;缩短检查点;调优代码。段头部:增加自由列表或者自由列表组。数据块:分离"热"数据;利用反向键索引与/或者较小的块。数据块:增大initrans与/或者maxtrans。回退段头部块:增加回滚段或者区域。回退段非头部块:增大提交频率;使用更大的回滚段或者区全面研究latch。Enqueue—ST利用LMT或者预分配较大的区域。W对高于最高水位标记的区域进行预分配。Enqueue—T增大与表或者索引有关的initrans与/或者maxtrans。Enqueue—TM对外来关键字进行索引,检查锁定表的应用程序。日志缓冲空间增大日志缓冲;利用较快的磁盘进行重做日志。日志文件转换归档磁盘变慢或者已满;增加更多或者更大的重做日志。日志文件同步一次提交更多的记录;利用更快的重做日志磁盘或者原始设空闲事件忽略常见空闲事件空闲事件类型锁定管理器等待远程消息PX空闲等待并行查询并行查询并行查询什么是瓶颈?一旦熟悉了系统的等待事件,就能够把握问题的关键,并能够用相应的方法去处理堵塞系统的瓶颈,一定不要随意的进行优化,否则一波不息一波又起,能够通过session的实时信息,最重要的是:它显示了等待事件与相应资源的更深入信息,可确定出--求等待事件及其对应的latch ____ ____适的索引,我们可能需要检查这些数据表已确定是否进行了正确的设置,或者增加SQL*NetmoredatafromclientSQLPLUSQSORACLEHOMErdbdbmslogmnraddlogfileLdbmslogmnrstartlogmnrdictFileNametmResponseTime=ServiceTime+WaitTimeWaitTime=IdleTime+Non-IdleTimeNon-IdleTime=I/0Waits+OtherWaits顺序读取全部索引OandcanbeparallelizedjuAnindexjoinisahashjoinofseveralindexesthattogethIndexJoinHintsYoucanspeci___ toretrievedatafromeachtaJoinMethodTojoineachpairofrowsourcesOraclemustperformajoJoinmethodsincludenestedloopsortmergecartJoinOrderToexecuteastatementthatofthetablesandthenjoinstheresultingrowsourcetothcontinueduntilalltablesarejoinedintothecostaccesscostofAaccesscostocostaccesscostofAtaccesscoThecostofahashjoiniscalculatedbythefollowingformula:Hashjoin盘MergejoinTheoptimizercanchooseasortmeramountsofdataifanyofthefollowingconditionThejoinconditionbetweentwotablesi nTheoptimizerthinksthatthec SELECTCHOSEEMPNOEMPNAMDATINFROMB________SELECTFULLEMPNOEMPNAMFROMBSEMPMSAWHERSELECTROWIDBSEMPMSFROMBSEMPMSWHEREROWIDAAA提示明确说明对指定表选择簇扫描的访问方法,它只对簇对象有效.SELECTCLUSTERBSEMPMS__WHEREDPTNOTECANDBSEMPMSDPTNOBSDPTMSDPTN___说明对表选择索引的扫描方法.SELECTINDEXASCBSEMPMSPKBSEMPMSFROMBSE 为指定表选择位图访问路经,假如INDEXCOMBINE中没有提供作为参数的索引,将选择出位图索引的布尔组合方式.SELECTINDEXDESCBSEMPMSPKBSEMPMSFROMB对指定的表执行快速全索引扫描,而不是全表扫描的办法.SELECTINDEXFFSBSEMPMSINEMPNAMFROM提示明确进行执行规划的选择,将几个单列索引的扫描合起来.EMPNO='SCOTT’ANDDPTNO='TDC___对查询中的WHERE后面的OR条件进行转换为UNIONALL的组合查询.SELECTUSECONCATFROMBS__ 扩展.能够对视图的各个查询进行相应的合并. 关于有可合并的视图不再合并._根据表出现在FROM中的顺序,ORDERED使ORACLE依此顺序对其连接.oradered表示根据from后面表的顺序,从左到右join,左表做驱动表,3个或者3个以上最有用将指定表与嵌套的连接的行源进行连接,并把指定表作为内部表.SELECTRDEREDUSENLBSEMPMSBSDPTMSDPTNOBSEMPMSEMPNOBS__将指定的表与其他行源通过合并排序连接方式连接起来.BSEMPMSDPTNOBSDPTMSDPTNO__将指定的表与其他行源通过哈希连接方式连接起来.BSEMPMS.DPTNO=BSDPTMS.DPTNO__强制与ORACLE所选择的位置不一致的表进行查询执行.BSEMPMSDPTNODEPTDPTNO__将指定的表作为连接次序中的首表.当进行全表扫描时,CACHE提示能够将表的检索块放置在缓冲区缓存中最近最少列表LRU的最近使用端SELECTFULLBSEMPMSCAHEBSEMPMSEMPNA当进行全表扫描时,CACHE提示能够将表的检索块放置在缓冲区缓存中最近最少列表LRU的最近使用端SELECTFULLBSEMPMSNOCAHEBSEMPMSEMPNA直接插入到表的最后,能够提高速度.通过在插入语句生存期内停止并行模式来启动常规插入.logicio=buffergets是在内physicalio=physicalreads是先从磁盘读到SGA,然后在SGA中读内存块(buffergets)buffergets=dbblockgets+consistentgetdbblockgets:以currentmode方式读块(即只关心块的最新状态),update、insert、delete等更新操作使用该方式读块。它会给数据块带来最新的改变,因此它并关心此数据块当前是否一致。dbblockgets:currentmode,不管这个块上的数据是否可能存在beforeimage,也就是说不管是否存在回滚中数据能够回滚,只看见当前最新块的数据,即使别人正在更新,也看见别人更新状态的数据,比如dml的时候就不需要看见别人更换前的数据,而是看见正在更换的,当然同时,若操作相同数据则被lock住。也就是说一次查询中看见的数据可能不在同一个时间点上。consistentget:以querymode方式读块(关心块关于当前session的一致性),select操作使用该方式读块。联合使用数据buffer与回滚buffer来构造出一致的数据。consistentgets是oracle在查询开始的时候,所获得的数据务必是在时间点上一致的。假定查询开始的时候所有数据都是已经提交的,查询开始之后,若数据发生了变化,则查询需要去从回滚段中获得变化前的数据,而若数据没有发生变化,则不用去回滚段中读了。不管是否去回滚段中读,在概念上来讲,这种数据获取方式都叫consistentgets。这仅仅表示一种期望,需要获得一致的时间点的数据,为此可能需要去回滚段中获得数据但并不表示一定从回滚段中的到数据。consistentgets是衡量SQL性能的最重要指标!buffergets就能够懂得为对buffercache中buffer的访问buffer*次,也能够看做访问的buffer数量,当然可能存在着一个buffer被访问多次的情况buffergets,假如你对10个block总共访问了500次,关于统计信息来说就是500buffer是指的一个块的某个状态印像,也就是说任何时候同一个数据块只有一个currentmode,不管user有多少,或者者有多少人在修改同一个块当某个用户获取了这个currentmode的时候,只有这个用户能操作该块,但同一个块中假设删除5条记录有5dbblockgets,是考虑到可能有其他用户进程在等待对这个块的操作,不能较长时间的有自己占用。我想这应该是行锁的一个最基本的机制?否则并发的时候就实质上是相当于对整个块的锁了,别人总要等待你对该块操作完才能进行操作。假如你们要考究如何计算出来的,那是另外一个话题在8i中读数据字典信息,大约FTS要加上4dbblockgets在9i中由于cachebufferchains的访问对只读访问不再互斥,则数据字典的获取不再是physicalreadsTotalnumberofdata
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福州软件职业技术学院《环境与自然资源经济学》2025-2026学年期末试卷
- 民办合肥滨湖职业技术学院《会展战略管理》2025-2026学年期末试卷
- 福州软件职业技术学院《婚姻家庭法》2025-2026学年期末试卷
- 有色矿石磨细工复试评优考核试卷含答案
- 实验动物养殖员安全专项知识考核试卷含答案
- 搪瓷瓷釉制作工操作评估知识考核试卷含答案
- 客运索道操作工班组安全模拟考核试卷含答案
- 初级会计职称预测卷中等及答案
- 材料科学结业考试重点难点试题及答案
- 《工程建设环境与安全管理》课件 项目3、4 建设项目环境管理制度、建设工程施工环境管理措施
- 政治湖北十一校2026届高三年级第二次联考(3.25-3.26)
- 2026江西赣州市政公用集团社会招聘39人备考题库及参考答案详解ab卷
- 2026年广东省广轻控股集团有限公司校园招聘笔试模拟试题及答案解析
- 快递员服务规范与操作流程(标准版)
- 二类医疗器械经营质量管理制度及工作程序
- 湖南省2026届高三九校联盟第二次联考语文试卷(含答案详解)
- 汽轮机润滑油系统课件
- 2026年高考数学二轮复习专题13 椭圆、双曲线与抛物线(复习讲义)(解析版)
- 南瑞集团在线测评试题
- 管道支架施工专项措施
- 设计院安全生产管理制度
评论
0/150
提交评论