Oracle 性能收集资料_第1页
Oracle 性能收集资料_第2页
Oracle 性能收集资料_第3页
Oracle 性能收集资料_第4页
Oracle 性能收集资料_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、弄清楚你的的业务类型型OLLTP oor OLLAP在Oraccle数据据库系统中中,很多人人没有弄清清楚自己的的业务类型型到底是什什么,就在在开始盲目目的寻求优优化方法,而而往往是把把OLAPP的方法使使用在OLLTP上,或或者是OLLTP的方方法使用在在OLAPP上。这样样的使用,有有的时候,对对性能没有有任何的提提高,甚至至是大大的的影响了性性能,得到到适得其反反的效果。所以,在在优化系统统之前,弄弄清楚自己己的业务类类型。OLTP (联联机事务处处理系统)也称为面向向交易的处处理系统,其其基本特征征是顾客的的原始数据据可以立即即传送到计计算中心进进行处理,并并在很短的的时间内给给出处理

2、结结果。这样样做的最大大优点是可可以即时地地处理输入入的数据,及及时地回答答。也称为为实时系统统(Reaal tiime SSysteem)。衡衡量联机事事务处理系系统的一个个重要性能能指标是系系统性能,具具体体现为为实时响应应时间(RRespoonse Timee),即用用户在终端端上送入数数据之后,到到计算机对对这个请求求给出答复复所需要的的时间。OLAP(联联机分析处处理系统)联机分析处处理 (OOLAP) 的概念念最早是由由关系数据据库之父EE.F.CCodd于于19933年提出的的,他同时时提出了关关于OLAAP的122条准则。OLAPP的提出引引起了很大大的反响,OOLAP作作为一

3、类产产品同联机机事务处理理 (OLLTP) 明显区分分开来。 当今的数据据处理大致致可以分成成两大类:联机事务务处理OLLTP(oon-liine ttranssactiion pproceessinng)、联联机分析处处理OLAAP(Onn-Linne Annalytticall Proocesssing)。OLTPP是传统的的关系型数数据库的主主要应用,主主要是基本本的、日常常的事务处处理,例如如银行交易易。OLAAP是数据据仓库系统统的主要应应用,支持持复杂的分分析操作,侧侧重决策支支持,并且且提供直观观易懂的查查询结果。 OLTP与与OLAPP之间的比比较:OLTPOLAP用户操作人员

4、,低低层管理人人员决策人员,高高级管理人人员功能日常操作处处理分析决策DB 设计计面向应用面向主题数据最新的,细细节的,二二维的,分分立的历史的,聚聚集的,多多维的,集集成的存取规模读/写数条条(甚至数数百条)记记录读上百万(甚甚至上亿)条条记录操作频度非常频繁(以以秒计)比较稀松(以以小时甚至至以周计)工作单位严格的事务务复杂的查询询用户数数百个-数数千万个数个-数百百个DB 大小小100MBB-GB100GBB-TB1、什么是是OLTPP OLTPP,也叫联联机事务处处理(Onnlinee Traansacctionn Proocesssing),表示事事务性非常常高的系统统,一般都都是高

5、可用用的在线系系统,以小小的事务以以及小的查查询为主,评评估其系统统的时候,一一般看其每每秒执行的的trannsacttion以以及exeecutee sqll的数量。在这样的的系统中,每每秒处理的的trannsacttion往往往超过几几百个,或或者是几千千个,seelectt 语句的的执行量每每秒几千甚甚至几万个个。典型的的OLTPP系统如电电子商务系系统,银行行,证卷等等等,如美美国ebaay的业务务数据库,就就是很典型型的OLTTP数据库库。 OOLTP系系统最容易易出现的瓶瓶颈就是CCPU与磁磁盘子系统统。cpuu则取决于于逻辑读以以及内部调调用,如函函数等等。一个执行行频繁的SSQ

6、L语句句,如果每每个语句可可以减少很很少的逻辑辑读,也相相当于优化化了一些逻逻辑读很差差的大型语语句。很多多人不感觉觉不到这里里的作用,觉觉得一个语语句几十个个逻辑读,执执行时间基基本为0,就就不需要优优化了,其其实,只要要他的执行行次数非常常频繁,而而且有优化化的余地,就就一定要优优化,如减减少一定的的逻辑读或或者降低执执行次数,都都是优化方方法。 另另外,一些些计算性的的函数,如如sum,ccountt,deccode被被非常频繁繁的使用,也也是非常消消耗cpuu的,我遇遇到一个系系统,因为为一个sqql语句,大大量的使用用了summ与deccode进进行行列转转换,结果果这一个语语句就耗

7、费费了整个机机器一半以以上的CPPU。 那那么,在一一般的OLLTP系统统中,如果果不考虑我我上面说的的函数问题题,那么,逻逻辑读乘以以执行次数数,决定了了cpu的的消耗程度度,如一个个语句,每每秒执行次次数为5000次,每每个逻辑读读为15,但但是,通过过优化,能能让每个语语句的逻辑辑读从155降到100,那么,每每秒的逻辑辑读就可以以减少5000*5=25000个,其实实就是相当当于优化了了一个执行行频率为每每秒1次,每每次逻辑读读为25000个的语语句(注意意,25000个逻辑辑读,在ooltp系系统是非常常差的语句句)。再如如,假定一一个1GHHZ的cppu每秒能能正常处理理的逻辑读读

8、是1000,0000个,如果果是10个个逻辑读一一个的语句句,每秒可可以处理110,0000个,而而10000个逻辑读读一个的语语句,每秒秒则只能处处理1000个。 同同以上道理理,物理读读乘以执行行次数,则则决定了存存储子系统统的处理能能力,在一一个OLTTP环境中中,物理读读一般都是是db ffile sequuentiial rread决决定的,也也就是单块块读,一个个典型的OOLTP系系统,dbb fille seequenntiall reaad应当基基本等于磁磁盘子系统统的读的IIOPS。而磁盘子子系统的IIOPS处处理能力,与与cachhe命中率率以及磁盘盘个数有很很大的关系系。

9、我的一一些文章中中,也分析析到了这些些问题,如如一个155K转速的的磁盘,每每秒最多能能处理的iiops达达到1500个,基本本就是极限限了,如果果cachhe不命中中,那么1100个磁磁盘,最多多能处理的的IOPSS仅仅是1150000个(但是是,实际上上,还基本本达不到这这个值)。 OOLTP最最常用的技技术就是ccachee技术与bbtreee索引,ccachee决定了很很多语句不不需要从磁磁盘子系统统获得数据据,所以,wweb ccachee与oraacle dataa bufffer对对OLTPP系统是很很重要的。另外,在在索引使用用方面,语语句是越简简单越好,这这样执行计计划也稳定

10、定,而且一一定要使用用绑定变量量,减少语语句解析,尽尽量减少关关联。其它它方面,基基本不使用用分区技术术,MV技技术,并行行技术以及及位图索引引,因为并并发量很高高,批量更更新可能要要尽量快速速提交避免免阻塞的发发生。 在ebaay的数据据库设计中中,有一个个很重要的的点就是,数数据库只负负责存放数数据,业务务逻辑尽量量在业务层层实现,因因为数据库库扩展是困困难的,而而应用服务务器扩展是是简单的。其实,也也就是说,在在高可用的的OLTPP环境中,数数据库使用用越简单的的功能越好好。2、什么是是OLAPP OOLAP,也也叫联机分分析(Onnlinee Anaalytiical Proccess

11、iing),有有的时候也也叫DSSS决策支持持系统,就就是我们说说的数据仓仓库。在这这样的系统统中,语句句的执行量量不是考核核标准,因因为一个语语句的执行行时间可能能会非常长长,读取的的数据也非非常多。所所以,这样样的系统中中,考核的的标准往往往决定于磁磁盘子系统统的吞吐量量。 磁盘子系系统的吞吐吐量则直接接取决于磁磁盘的个数数,这个时时候,caache基基本是没有有效果的,这这个时候数数据库的读读写基本上上是db filee scaatterred rread与与direect ppath readd/wriite。在在我前面的的一些文章章中描述过过,如果一一个15KK的磁盘的的IO量每每秒

12、13MM,那么,1100个磁磁盘,最多多能提供的的吞吐量则则是13000M/ss(实际上上,也基本本达不到这这个值)。如果磁盘盘个数足够够的话,还还需要考虑虑采用比较较大的带宽宽,如4GGB的光纤纤接口。 在在OLAPP系统中,常常使用的技技术有分区区技术,并并行技术。如分区技技术可以使使得一些大大表的扫描描变得很快快(只扫描描单个分区区),而且且方便管理理。另外,如如果分区结结合并行的的话,也可可以使得整整个表的扫扫描也会变变得很快。并行技术术除了与分分区技术结结合外,在在oraccle 110g中,与与rac结结合实现多多节点的同同时扫描,效效果也非常常不错,把把一个任务务,如seelec

13、tt的全表扫扫描,平均均的分派到到多个raac的节点点上去。 在在OLAPP系统中,不不需要使用用绑定变量量,因为整整个系统的的执行量很很少,分析析时间对于于执行时间间来说,可可以忽略,而而且避免出出现错误的的执行计划划。但是OOLAP中中可以大量量使用位图图索引,物物化视图,对对于大的事事务,尽量量的寻求速速度上的优优化,没有有必要象OOLTP需需要快速提提交,甚至至要刻意减减慢执行的的速度。3、总结 特特别是在高高可用的OOLTP环环境中,不不要盲目的的把OLAAP的技术术拿过来用用,如分区区技术,如如果不是大大范围的使使用了分区区关键字作作为wheere条件件,而采用用其它的字字段作为w

14、wheree条件,那那么,如果果是本地索索引,你将将不得不扫扫描多个索索引,而性性能变的更更为低下。如果是全全局索引,那那分区的意意义又何在在,只是多多出一份分分区技术的的liceense而而已。 并并行技术也也是如此,一一般是在大大型任务的的时候才使使用,好比比说,实际际生活中,一一个比较大大型的工作作,如翻译译一本书,你你可以先安安排多个人人,每个人人翻译不同同的章节,这这样是可以以提高翻译译速度,但但是,你现现在只是翻翻译一页,你你也去分配配不同的人人翻译不同同的行,再再组合起来来,这个时时间,你一一个人或者者早就翻译译完了。 位位图索引在在我前几篇篇文章中有有交代,如如果用在ooltp

15、环环境中,可可能因为阻阻塞范围太太大,很容容易阻塞与与死锁,但但是,在oolap环环境中,可可能会因为为其特有的的特性,提提高olaap的查询询速度。mmv也是基基本一样,包包括触发器器等等,在在dml频频繁的olltp系统统上,很容容易成为瓶瓶颈,而在在olapp环境上,则则可能会因因为使用恰恰当而提高高查询速度度。 HYPERLINK /article/62/1187.html http:/artiicle/62/11187.htmllOraclle索引使用限限制 和 建议什么是索引引索引是建立立在表的一一列或多个个列上的辅辅助对象,目目的是加快快访问表中中的数据; Oraclle存储索索

16、引的数据据结构是BB*树,位位图索引也也是如此,只只不过是叶叶子节点不不同B*数数索引;索索引由根节节点、分支支节点和叶叶子节点组组成,上级级索引块包包含下级索索引块的索索引数据,叶叶节点包含含索引数据据和确定行行实际位置置的rowwid。一、oraacle的的索引陷阱阱一个表中有有几百万条条数据,对对某个字段段加了索引引,但是查查询时性能能并没有什什么提高,这这主要可能能是oraacle的的索引限制制造成的。 oraclle的索引引有一些索索引限制,在在这些索引引限制发生生的情况下下,即使已已经加了索索引,orraclee还是会执执行一次全全表扫描,查查询的性能能不会比不不加索引有有所提高,

17、反反而可能由由于数据库库维护索引引的系统开开销造成性性能更差。下面是一些些常见的索索引限制问问题。1、使用不不等于操作作符(, !=)下面这种情情况,即使使在列deept_iid有一个个索引,查查询语句仍仍然执行一一次全表扫扫描 selecct * fromm deppt whhere stafff_nuum 10000; 但是开发中中的确需要要这样的查查询,难道道没有解决决问题的办办法了吗? 有! 通过把用 or 语语法替代不不等号进行行查询,就就可以使用用索引,以以避免全表表扫描:上上面的语句句改成下面面这样的,就就可以使用用索引了。 selecct * fromm deppt shher

18、e stafff_nuum 10000; 2、使用 is nnull 或 iss nott nulll使用 iss nulll 或iis nuuo nuull也会会限制索引引的使用,因因为数据库库并没有定定义nulll值。如如果被索引引的列中有有很多nuull,就就不会使用用这个索引引(除非索索引是一个个位图索引引,关于位位图索引,会会在以后的的blogg文章里做做详细解释释)。在ssql语句句中使用nnull会会造成很多多麻烦。 解决这个问问题的办法法就是:建建表时把需需要索引的的列定义为为非空(nnot nnull)3、使用函函数如果没有使使用基于函函数的索引引,那么wwheree子句中对

19、对存在索引引的列使用用函数时,会会使优化器器忽略掉这这些索引。下面的查查询就不会会使用索引引: selecct * fromm staaff wwheree truunc(bbirthhdatee) = 01-MAY-82; 但是把函数数应用在条条件上,索索引是可以以生效的,把把上面的语语句改成下下面的语句句,就可以以通过索引引进行查找找。 selecct * fromm staaff wwheree birrthdaate showw parrametter ooptimmizerr_inddex_ccost_adjNAME TTYPEVVALUEE optimmizerr_inddex_c

20、cost_adj inntegeer 1000为了多使用用索引,可可减小它的的值SQL alteer syystemm sett opttimizzer_iindexx_cosst_addj=100;进一步设设置为了进一步步优化,ooraclle建议对对小表不要要建索引,那那什么为小小表呢,ooraclle一次II/O就可可读写完整整个表的表表为小表,查查看oraacle110g一次次读写的数数据量SQL showw parrametter ddb_fiile_mmultiiblocck_reead_ccounttNAME TYPPE VALLUE db_fiile_mmultiiblocck

21、_reead_tegerr 1228可见当表小小于1288k时就不不要建索引引了二、各种索索引使用场场合及建议议(1)B*Treee索引。常规索引,多多用于olltp系统统,快速定定位行,应应建立于高高carddinallity列列(即列的的唯一值除除以行数为为一个很大大的值,存存在很少的的相同值)。Creaate iindexx inddexnaame oon taablenname(coluumnnaameccolummnnamme)(2)反向向索引。B*Treee的衍生生产物,应应用于特殊殊场合,在在ops环环境加序列列增加的列列上建立,不不适合做区区域扫描。Creaate iindex

22、x inddexnaame oon taablenname(coluumnnaameccolummnnamme) rreverrse(3)降序序索引。B*Treee的衍生生产物,应应用于有降降序排列的的搜索语句句中,索引引中储存了了降序排列列的索引码码,提供了了快速的降降序搜索。Creaate iindexx inddexnaame oon taablenname(coluumnnaame DDESCcoluumnnaame)(4)位图图索引。位图方式管管理的索引引,适用于于OLAPP(在线分分析)和DDSS(决决策处理)系系统,应建建立于低ccardiinaliity列,适合集中读读取,不适

23、适合插入和和修改,提提供比B*Treee索引更节节省的空间间。Creaate BBITMAAP inndex indeexnamme onn tabblenaame(ccolummnnammecoolumnnnamee.)在实际应用用中,如果果某个字段段的值需要要频繁更新新,那么就就不适合在在它上面创创建位图索索引。在位图索引引中,如果果你更新或或插入其中中一条数值值为N的记记录,那么相应表表中数值为为N的记录录(可能成成百上千条条)全部被被Oraccle锁定定,这就意味着着其它用户户不能同时时更新这些些数值为NN的记录,其其它用户必必须要等第第一个用户户提交后,才能获得锁锁,更新或或插入数据

24、据,bittmap indeex它主要要用于决策策支持系统统或静态数数据。(5)函数数索引。B*Treee的衍生生产物,应应用于查询询语句条件件列上包含含函数的情情况,索引中储存存了经过函函数计算的的索引码值值。可以在在不修改应应用程序的的基础上能能提高查询询效率。索引创建策策略 1.导入数数据后再创创建索引 2.不需要要为很小的的表创建索索引 3.对于取取值范围很很小的字段段(比如性性别字段)应应当建立位位图索引 4.限制表表中的索引引的数目 5.为索引引设置合适适的PCTTFREEE值 6.存储索索引的表空空间最好单单独设定 唯一索引和和不唯一索索引都只是是针对B树树索引而言言. Orac

25、lle最多允允许包含332个字段段的复合索索引 由此估计出出一个查询询如果使用用某个索引引会需要读读入的数据据块块数。需要读入的的数据块越越多,则 costt 越大,OOraclle 也就就越有可能能不选择使使用 inndex三、能用唯唯一索引,一一定用唯一一索引 能加非空,就就加非空约约束 一定要统计计表的信息息,索引的的信息,柱柱状图的信信息。 联合索引的的顺序不同同,影响索索引的选择择,尽量将将值少的放放在前面 只有做到以以上四点,数数据库才会会正确的选选择执行计计划。ORACLLE索引介介绍与高性性能SQLL优化什么是索引引索引是建立立在表的一一列或多个个列上的辅辅助对象,目目的是加快

26、快访问表中中的数据;Oraccle存储储索引的数数据结构是是B*树,位位图索引也也是如此,只只不过是叶叶子节点不不同B*数数索引;索索引由根节节点、分支支节点和叶叶子节点组组成,上级级索引块包包含下级索索引块的索索引数据,叶叶节点包含含索引数据据和确定行行实际位置置的rowwid。使用索引的的目的加快查询速速度减少I/OO操作消除磁盘排排序何时使用索索引查询返回的的记录数排序表440%非排序表400%,排序序表7%,建议采采用并行机机制来提高高访问速度度,DDSS;索引访问。最常用的的方法,包包括索引唯唯一扫描和和索引范围围扫描,OOLTP;快速完全索索引扫描。访问索引引中所有数数据块,结结果

27、相当于于全表扫描描,可以用用索引扫描描代替全表表扫描,例例如:Selecctseerv_iid,coount(*)frommtg_cdr001grroupbysserv_id;评估全表扫扫描的合法法性如何实现并并行扫描。永久并行行化(不推推荐)alterrtabbleccustoomerparaallelldeggree8;。单个查询询并行化selecct/*+fuull(eemp)paraallell(empp,8)*/*frommempp;分区表效果果明显优化SQLL语句排序序排序的操作作:。ordeerbyy子句。grouupbyy子句。seleectddistiinct子子句。创建索引

28、引时。unioon或miinus。排序合并并连接如何避免排排序。添加索引引。在索引中中使用diistinnct子句句。避免排序序合并连接接使用提示进进行调整使用提示的的原则。语法:/*+hhint*/。使用表别别名:seelectt/*+inddex(eedeppt_iddx)*/*ffromempe。检验提示示常用的提示示。rulee。all_rowss。firsst_roows。use_nl。use_hashh。use_mergge。indeex。indeex_assc。no_iindexx。indeex_deesc(常常用于使用用max内内置函数)。indeex_coombinne(强制

29、制使用位图图索引)。indeex_fffs(索引引快速完全全扫描)。use_conccat(将将查询中所所有or条条件使用uunionnalll)。paraallell。nopaaralllel。fulll。ordeered(基基于成本)调整表连接接表连接的类类型。等连接wheree条件中中用等式连连接;。外部连接接(左、右右连接)在wherre条件子子句的等式式谓词放置置一个(+)来实现现,例如:seleccta.enamme,mmfroomemmpa,bonuusbwherrea.enamme=b.enamme(+);该语句返回回所有emmp表的记记录;。自连接Seleccta.valuu

30、etootal,B.vvalueeharrd,(A.vaalue-b.valuue)ssoft,Roundd(b.valuue/a.valuue)*1100,11)peercFromv$syysstaata,v$syysstaatbWhereea.sstatiisticc#=179andBB.staatisttic#=1880;反连接反连接常用用于nottinornnoteexistts中,是是指在查询询中找到的的任何记录录都不包含含在结果集集中的子查查询;不建建议使用nnotiinorrnottexiists;。半连接查询中使用用exissts,含含义:即使使在子查询询中返回多多条重复的的记

31、录,外外部查询也也只返回一一条记录。嵌套循环连连接。被连接表表中存在索索引的情况况下使用;。使用usse_nll。hash连连接。Hashh连接将驱驱动表加载载在内存中中,并使用用hashh技术连接接第二个表表,提高等等连接速度度。适合于大大表和小表表连接;。使用usse_haash。排序合并连连接。排序合并并连接不使使用索引。使用原则则:连接表子段段中不存在在可用索引引;查询返回两两个表中大大部分的数数据快;CBO认为为全表扫描描比索引扫扫描执行的的更快。使用usse_meerge使用临时/中间表多个大表关关联时,可可以分别把把满足条件件的结果集集存放到中中间表,然然后用中间间表关联;SQL

32、子查查询的调整整关联与非关关联子查询询。关联:子子查询的内内部引用的的是外部表表,每行执执行一次;。非关联:子查询只只执行一次次,存放在在内存中。调整nottin和nottexiists语语句。可以使用用外部连接接优化nootinn子句,例例如:selecctennamefrommemppwheereddept_nonnotiin(seleectddept_noffromdepttwheereddept_namee=MMath);改为:selecctennamefrommempp,depptwhereeempp.deppt_noo=deppt.deept_nnoandddept.deptt_n

33、ammeissnulll;使用索引调调整SQLLOraclle为什什么不使用用索引。检查被索索引的列或或组合索引引的首列是是否出现在在PL/SSQL语句句的WHEERE子句句中,这是是“执行计计划”能用用到相关索索引的必要要条件。看采用了了哪种类型型的连接方方式。ORRACLEE的共有SSortMerggeJooin(SSMJ)、HashhJoiin(HJJ)和NeesteddLooopJooin(NNL)。在在两张表连连接,且内内表的目标标列上建有有索引时,只只有NesstedLoopp才能有效效地利用到到该索引。SMJ即即使相关列列上建有索索引,最多多只能因索索引的存在在,避免数数据排序过

34、过程。HJJ由于须做做HASHH运算,索索引的存在在对数据查查询速度几几乎没有影影响。看连接顺顺序是否允允许使用相相关索引。假设表eemp的ddeptnno列上有有索引,表表deptt的列deeptnoo上无索引引,WHEERE语句句有empp.depptno=deptt.depptno条条件。在做做NL连接接时,emmp做为外外表,先被被访问,由由于连接机机制原因,外外表的数据据访问方式式是全表扫扫描,emmp.deeptnoo上的索引引显然是用用不上,最最多在其上上做索引全全扫描或索索引快速全全扫描。是否用到到系统数据据字典表或或视图。由由于系统数数据字典表表都未被分分析过,可可能导致极极

35、差的“执执行计划”。但是不不要擅自对对数据字典典表做分析析,否则可可能导致死死锁,或系系统性能下下降。索引列是是否函数的的参数。如如是,索引引在查询时时用不上。是否存在在潜在的数数据类型转转换。如将将字符型数数据与数值值型数据比比较,ORRACLEE会自动将将字符型用用to_nnumbeer()函函数进行转转换,从而而导致上一一种现象的的发生。是否为表表和相关的的索引搜集集足够的统统计数据。对数据经经常有增、删、改的的表最好定定期对表和和索引进行行分析,可可用SQLL语句“aanalyyzettableexxxxxcoomputtesttatissticssforralllinddexess;

36、”。OORACLLE掌握了了充分反映映实际的统统计数据,才才有可能做做出正确的的选择。索引列的的选择性不不高。我我们假设典典型情况,有有表empp,共有一一百万行数数据,但其其中的emmp.deeptnoo列,数据据只有4种种不同的值值,如100、20、30、440。虽然然emp数数据行有很很多,ORRACLEE缺省认定定表中列的的值是在所所有数据行行均匀分布布的,也就就是说每种种depttno值各各有25万万数据行与与之对应。假设SQQL搜索条条件DEPPTNO=10,利利用depptno列列上的索引引进行数据据搜索效率率,往往不不比全表扫扫描的高。索引列值值是否可为为空(NUULL)。如果

37、索引引列值可以以是空值,在在SQL语语句中那些些要返回NNULL值值的操作,将将不会用到到索引,如如COUNNT(*),而而是用全表表扫描。这这是因为索索引中存储储值不能为为全空。看是否有有用到并行行查询(PPQO)。并行查询询将不会用用到索引。如果从以以上几个方方面都查不不出原因的的话,我们们只好用采采用在语句句中加hiint的方方式强制OORACLLE使用最最优的“执执行计划”。hhint采采用注释的的方式,有有行注释和和段注释两两种方式。如我我们想要用用到A表的的IND_COL11索引的话话,可采用用以下方式式:“SELEECT/*+IINDEXX(AIIND_CCOL1)*/*FROM

38、MAWWHEREECOLL1=XXX;如何屏蔽索索引语句的执行行计划中有有不良索引引时,可以以人为地屏屏蔽该索引引,方法:。数值型:在索引字字段上加00,例如selecct*frommemppwheereeemp_nno+0=v_emp_no;。字符型:在索引字字段上加,例如如selecct*frommtg_cdr001whheremsissdn|=vv_msiisdn; HYPERLINK /post/19858/207902 SQLPLLUS中的的set小小节在写脚本的的时候,往往往需要对对输出的格格式进行规规范,我们们常常用sset语句句在设置一一些需要的的格式规范范。下面,列列举了几个

39、个常用的sset ,和和他们的应应用。SQL set echoo on设置置运行命令令是是否显显示语句SQL set feeddbackk on设置显显示“已选择XXX行”SQL set colssep | 设置列与与列之间的的分割符号号SQL set pageesizee 10设置置每一页的的行数SQL SET SERVVEROUUTPUTT ON设置置允许显示示输出类似似dbmss_outtputSQL set headding on设置置显示列名名SQL set timiing oon设设置显示“已用时间间:XXXXX”SQL set timee on设置显示示当前时间间SQL set

40、autootracce onn设设置允许对对执行的ssql进行行分析00:388:28 SQL sett echho onn00:388:37 SQL E:echoo.sqll00:388:41 SQL sellect stattus ffrom v$daatafiile wwheree rowwnum sett echho offf00:388:58 SQL E:echoo.sqllSTATUUSSYSTEEMONLINNEONLINNEONLINNEONLINNE已选择5行行。已用时间: 00: 00: 01.0900:399:08 SQLSQL set feeddbackk onSSQL

41、 set colssep |SQL sett paggesizze 100SQL set servverouutputt onSSQL set headding onSQQL sett timming onSQQL sett timme onn00:554:111 SQLL SELLECT FILEE#, SSTATUUS, EENABLLED FFROM V$DAATAFIILE;FFILE#|STAATUS |ENAABLEDD|1|SYSSTEM |REAAD WRITTE2|ONLLINE |REAAD WRITTE3|ONLLINE |REAAD WRITTE4|ONLLINE |R

42、EAAD WRITTE5|ONLLINE |REAAD WRITTE6|ONLLINE |REAAD WRITTE7|ONLLINE |REAAD WRITTEFILLE#|SSTATUUS |EENABLLED|99|ONLLINE |REAAD WRITTE10|ONLIINE |READD WRITTE11|ONLIINE |READD WRITTE12|ONLIINE |READD WRITTE11 rowss sellecteed.Ellapseed: 000:000:01.07000:54:34 SQL DECLLARE00:555:00 2 BEEGIN00:555:00 3 D

43、BBMS_OOUTPUUT.PUUT_LIINE(=TThis is ddbms_outpput.pput_lline!=);00:555:00 4 ENND;00:555:02 5 /=Thhis iis dbbms_ooutpuut.puut_liine!=PLL/SQLL proccedurre suuccesssfullly ccomplletedd.Elaapsedd: 000:00:00.00200:55:005 SQQLSQL set autootracce onnSQL SELEECT EE.LASST_NAAME, D.DEEPARTTMENTT_NAMME, DD.LOCC

44、ATIOON_IDD2 FROOM HRR.EMPPLOYEEES EE3 JOIIN HRR.DEPPARTMMENTSS D4 USINNG (DDEPARRTMENNT_IDD);LAAST_NNAME DEPAARTMEENT_NNAME LOCAATIONN_ID KKing Execcutivve 17700Koochhaar Exxecuttive 17000De HHaan Execcutivve 17700Huunoldd IT 14000Ernsst ITT 140001066 rowws seelectted.EExecuutionn Plaan00 SELLECT ST

45、ATTEMENNT Opptimiizer=CHOOOSE (Costt=5 CCard=106 Bytees=31180)1 00 HASSH JOINN (Cosst=5 Cardd=1066 Byttes=33180)2 1 TABLLE ACCEESS (FULLL) OF DDEPARRTMENNTS (Cosst=2 Cardd=27 Bytees=5113)3 1 TAABLE ACCEESS (FULLL) OF EEMPLOOYEESS (CCost=2 Caard=1107 BBytess=11777)Sttatissticss7 recuursivve caalls00

46、db blocck geets233 connsisttent getss12 pphysiical readds0 rredo sizee28011 byttes ssent via SQL*NNet tto cllientt580 bytees reeceivved vvia SSQL*NNet ffrom clieent9 SQL*NNet rrounddtripps too/fromm cliient00 sorrts (memoory)00 sorrts (diskk)106 rowss proocesssedSQQLStartt witth connnectt by prioor在

47、SELEECT命令令中使用CCONNEECT BBY和蔼SSTARTT WITTH子句可可以查询表表中的树型型结构关系系。其命令令格式如下下:SELECCT。CONNEECT BBY PPRIORR列名1=列名2|列名1=PRIOOR裂名22STARRT WIITH;其中:COONNECCT BYY子句说明明每行数据据将是按层层次顺序检检索,并规规定将表中中的数据连连入树型结结构的关系系中。PRRIORYY运算符必必须放置在在连接关系系的两列中中某一个的的前面。对对于节点间间的父子关关系,PRRIOR运运算符在一一侧表示父父节点,在在另一侧表表示子节点点,从而确确定查找树树结构是的的顺序是自自

48、顶向下还还是自底向向上。在连连接关系中中,除了可可以使用列列名外,还还允许使用用列表达式式。STAART WWITH子子句为可选选项,用来来标识哪个个节点作为为查找树型型结构的根根节点。若若该子句被被省略,则则表示所有有满足查询询条件的行行作为根节节点。Startt witthConnnect By子句句递归查询询一般用于于一个表维维护树形结结构的应用用。创建示例表表:CREATTE TAABLE TBL_TESTT(ID NUMMBER,NAME VARCCHAR22(1000 BYTTE),PID NUMMBER DEFFAULTT 0);插入测试数数据:INSERRT INNTO TTB

49、L_TTEST(ID,NNAME,PID) VALLUES(1,10,0);INSERRT INNTO TTBL_TTEST(ID,NNAME,PID) VALLUES(2,11,1);INSERRT INNTO TTBL_TTEST(ID,NNAME,PID) VALLUES(3,20,0);INSERRT INNTO TTBL_TTEST(ID,NNAME,PID) VALLUES(4,12,1);INSERRT INNTO TTBL_TTEST(ID,NNAME,PID) VALLUES(5,1211,22);从Roott往树末梢梢递归selecct * fromm TBLL_TESST

50、startt witth idd=1conneect bby prrior id = piddorderr by pid从末梢往树树ROOTT递归selecct * fromm TBLL_TESSTstartt witth idd=5conneect bby prrior pid = iddorderr by id*CREATTE TAABLE xxutts_teest_sstartt(ID varrcharr2(1000),NAME VARCCHAR22(1000);selecct idd,namme,leevel fromm xxuuts_ttest_starrtstartt witth

51、idd=Aconneect bby prrior namee=idorderr by idid naame levvelA BB 1A C 1A D 1B E 2B F 2C H 2E G 3* SELEECT ttranssactiion_iid, pprimaary_qquanttity, pprimaary_uunit_of_mmeasuure, ssourcce_dooc_unnit_oof_meeasurre, ttranssactiion_ttype, pparennt_trransaactioon_idd FRROM rrcv_ttranssactiions WHEERE iinvoiice_sstatuus_coode IINVOIICED addded trx datee rannge aas peer gaap2288 - rsk 07/112/077/*AND TRUNNC (ttranssactiion_ddate)BBETWEEEN TTRUNCC (NVVL (tto_daate(2008806011,YYYYYMMMDD

温馨提示

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

评论

0/150

提交评论