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

下载本文档

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

文档简介

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

2、统(Real time Systeem)。衡量量联机事务处处理系统的一一个重要性能能指标是系统统性能,具体体体现为实时时响应时间(Respoonse TTime),即即用户在终端端上送入数据据之后,到计计算机对这个个请求给出答答复所需要的的时间。OLAP(联机机分析处理系系统)联机分析处理 (OLAPP) 的概念念最早是由关关系数据库之之父E.F.Codd于于1993年年提出的,他他同时提出了了关于OLAAP的12条条准则。OLLAP的提出出引起了很大大的反响,OOLAP作为为一类产品同同联机事务处处理 (OLLTP) 明明显区分开来来。 当今的数据处理理大致可以分分成两大类:联机事务处处理O

3、LTPP(on-lline ttransaactionn proccessinng)、联机机分析处理OOLAP(OOn-Linne Anaalyticcal Prrocesssing)。OOLTP是传传统的关系型型数据库的主主要应用,主主要是基本的的、日常的事事务处理,例例如银行交易易。OLAPP是数据仓库库系统的主要要应用,支持持复杂的分析析操作,侧重重决策支持,并并且提供直观观易懂的查询询结果。 OLTP与OLLAP之间的的比较:OLTPOLAP用户操作人员,低层层管理人员决策人员,高级级管理人员功能日常操作处理分析决策DB 设计面向应用面向主题数据最新的,细节的的,二维的,分分立的历史的

4、,聚集的的,多维的,集集成的存取规模读/写数条(甚甚至数百条)记记录读上百万(甚至至上亿)条记记录操作频度非常频繁(以秒秒计)比较稀松(以小小时甚至以周周计)工作单位严格的事务复杂的查询用户数数百个-数千万万个数个-数百个DB 大小100MB-GGB100GB-TTB1、什么是OLLTP OLLTP,也叫叫联机事务处处理(Onlline TTransaactionn Proccessinng),表示示事务性非常常高的系统,一一般都是高可可用的在线系系统,以小的的事务以及小小的查询为主主,评估其系系统的时候,一一般看其每秒秒执行的trransacction以以及execcute ssql的数量量

5、。在这样的的系统中,每每秒处理的ttransaactionn往往超过几几百个,或者者是几千个,sselectt 语句的执执行量每秒几几千甚至几万万个。典型的的OLTP系系统如电子商商务系统,银银行,证卷等等等,如美国国ebay的的业务数据库库,就是很典典型的OLTTP数据库。 OLTTP系统最容容易出现的瓶瓶颈就是CPPU与磁盘子子系统。cppu则取决于于逻辑读以及及内部调用,如如函数等等。一一个执行频繁繁的SQL语语句,如果每每个语句可以以减少很少的的逻辑读,也也相当于优化化了一些逻辑辑读很差的大大型语句。很很多人不感觉觉不到这里的的作用,觉得得一个语句几几十个逻辑读读,执行时间间基本为0,

6、就就不需要优化化了,其实,只只要他的执行行次数非常频频繁,而且有有优化的余地地,就一定要要优化,如减减少一定的逻逻辑读或者降降低执行次数数,都是优化化方法。 另外,一一些计算性的的函数,如ssum,coount,ddecodee被非常频繁繁的使用,也也是非常消耗耗cpu的,我我遇到一个系系统,因为一一个sql语语句,大量的的使用了suum与deccode进行行行列转换,结结果这一个语语句就耗费了了整个机器一一半以上的CCPU。 那么,在在一般的OLLTP系统中中,如果不考考虑我上面说说的函数问题题,那么,逻逻辑读乘以执执行次数,决决定了cpuu的消耗程度度,如一个语语句,每秒执执行次数为550

7、0次,每每个逻辑读为为15,但是是,通过优化化,能让每个个语句的逻辑辑读从15降降到10,那那么,每秒的的逻辑读就可可以减少5000*5=22500个,其其实就是相当当于优化了一一个执行频率率为每秒1次次,每次逻辑辑读为25000个的语句句(注意,22500个逻逻辑读,在ooltp系统统是非常差的的语句)。再再如,假定一一个1GHZZ的cpu每每秒能正常处处理的逻辑读读是100,000个,如如果是10个个逻辑读一个个的语句,每每秒可以处理理10,0000个,而11000个逻逻辑读一个的的语句,每秒秒则只能处理理100个。 同以上上道理,物理理读乘以执行行次数,则决决定了存储子子系统的处理理能力

8、,在一一个OLTPP环境中,物物理读一般都都是db ffile ssequenntial read决决定的,也就就是单块读,一一个典型的OOLTP系统统,db ffile ssequenntial read应应当基本等于于磁盘子系统统的读的IOOPS。而磁磁盘子系统的的IOPS处处理能力,与与cachee命中率以及及磁盘个数有有很大的关系系。我的一些些文章中,也也分析到了这这些问题,如如一个15KK转速的磁盘盘,每秒最多多能处理的iiops达到到150个,基基本就是极限限了,如果ccache不不命中,那么么100个磁磁盘,最多能能处理的IOOPS仅仅是是150000个(但是,实实际上,还基基本

9、达不到这这个值)。 OLTTP最常用的的技术就是ccache技技术与btrree索引,ccache决决定了很多语语句不需要从从磁盘子系统统获得数据,所所以,webb cachhe与oraacle ddata bbufferr对OLTPP系统是很重重要的。另外外,在索引使使用方面,语语句是越简单单越好,这样样执行计划也也稳定,而且且一定要使用用绑定变量,减减少语句解析析,尽量减少少关联。其它它方面,基本本不使用分区区技术,MVV技术,并行行技术以及位位图索引,因因为并发量很很高,批量更更新可能要尽尽量快速提交交避免阻塞的的发生。 在eebay的数数据库设计中中,有一个很很重要的点就就是,数据库库

10、只负责存放放数据,业务务逻辑尽量在在业务层实现现,因为数据据库扩展是困困难的,而应应用服务器扩扩展是简单的的。其实,也也就是说,在在高可用的OOLTP环境境中,数据库库使用越简单单的功能越好好。2、什么是OLLAP OLAAP,也叫联联机分析(OOnlinee Anallyticaal Proocessiing),有有的时候也叫叫DSS决策策支持系统,就就是我们说的的数据仓库。在在这样的系统统中,语句的的执行量不是是考核标准,因因为一个语句句的执行时间间可能会非常常长,读取的的数据也非常常多。所以,这这样的系统中中,考核的标标准往往决定定于磁盘子系系统的吞吐量量。 磁盘盘子系统的吞吞吐量则直接

11、接取决于磁盘盘的个数,这这个时候,ccache基基本是没有效效果的,这个个时候数据库库的读写基本本上是db file scatttered read与与direcct patth reaad/wriite。在我我前面的一些些文章中描述述过,如果一一个15K的的磁盘的IOO量每秒133M,那么,1100个磁盘盘,最多能提提供的吞吐量量则是13000M/s(实实际上,也基基本达不到这这个值)。如如果磁盘个数数足够的话,还还需要考虑采采用比较大的的带宽,如44GB的光纤纤接口。 在OLLAP系统中中,常使用的的技术有分区区技术,并行行技术。如分分区技术可以以使得一些大大表的扫描变变得很快(只只扫描单

12、个分分区),而且且方便管理。另另外,如果分分区结合并行行的话,也可可以使得整个个表的扫描也也会变得很快快。并行技术术除了与分区区技术结合外外,在oraacle 110g中,与与rac结合合实现多节点点的同时扫描描,效果也非非常不错,把把一个任务,如如selecct的全表扫扫描,平均的的分派到多个个rac的节节点上去。 在OLLAP系统中中,不需要使使用绑定变量量,因为整个个系统的执行行量很少,分分析时间对于于执行时间来来说,可以忽忽略,而且避避免出现错误误的执行计划划。但是OLLAP中可以以大量使用位位图索引,物物化视图,对对于大的事务务,尽量的寻寻求速度上的的优化,没有有必要象OLLTP需要

13、快快速提交,甚甚至要刻意减减慢执行的速速度。3、总结 特别是是在高可用的的OLTP环环境中,不要要盲目的把OOLAP的技技术拿过来用用,如分区技技术,如果不不是大范围的的使用了分区区关键字作为为wheree条件,而采采用其它的字字段作为whhere条件件,那么,如如果是本地索索引,你将不不得不扫描多多个索引,而而性能变的更更为低下。如如果是全局索索引,那分区区的意义又何何在,只是多多出一份分区区技术的liicensee而已。 并行技技术也是如此此,一般是在在大型任务的的时候才使用用,好比说,实实际生活中,一一个比较大型型的工作,如如翻译一本书书,你可以先先安排多个人人,每个人翻翻译不同的章章节

14、,这样是是可以提高翻翻译速度,但但是,你现在在只是翻译一一页,你也去去分配不同的的人翻译不同同的行,再组组合起来,这这个时间,你你一个人或者者早就翻译完完了。 位图索索引在我前几几篇文章中有有交代,如果果用在olttp环境中,可可能因为阻塞塞范围太大,很很容易阻塞与与死锁,但是是,在olaap环境中,可可能会因为其其特有的特性性,提高ollap的查询询速度。mvv也是基本一一样,包括触触发器等等,在在dml频繁繁的oltpp系统上,很很容易成为瓶瓶颈,而在oolap环境境上,则可能能会因为使用用恰当而提高高查询速度。 HYPERLINK /article/62/1187.html http:/

15、aarticlle/62/1187.htmlOracle索索引使用限制制 和 建议议什么是索引索引是建立在表表的一列或多多个列上的辅辅助对象,目目的是加快访访问表中的数数据; Oracle存存储索引的数数据结构是BB*树,位图图索引也是如如此,只不过过是叶子节点点不同B*数数索引;索引引由根节点、分分支节点和叶叶子节点组成成,上级索引引块包含下级级索引块的索索引数据,叶叶节点包含索索引数据和确确定行实际位位置的rowwid。一、oraclle的索引陷陷阱一个表中有几百百万条数据,对对某个字段加加了索引,但但是查询时性性能并没有什什么提高,这这主要可能是是oraclle的索引限限制造成的。 or

16、acle的的索引有一些些索引限制,在在这些索引限限制发生的情情况下,即使使已经加了索索引,oraacle还是是会执行一次次全表扫描,查查询的性能不不会比不加索索引有所提高高,反而可能能由于数据库库维护索引的的系统开销造造成性能更差差。下面是一些常见见的索引限制制问题。1、使用不等于于操作符(, !=)下面这种情况,即即使在列deept_idd有一个索引引,查询语句句仍然执行一一次全表扫描描 select * froom deppt wheere sttaff_nnum 10000; 但是开发中的确确需要这样的的查询,难道道没有解决问问题的办法了了吗? 有! 通过把用 orr 语法替代代不等号进

17、行行查询,就可可以使用索引引,以避免全全表扫描:上上面的语句改改成下面这样样的,就可以以使用索引了了。 select * froom deppt sheere sttaff_nnum 10000; 2、使用 iss nulll 或 iss not null使用 is nnull 或或is nuuo nulll也会限制制索引的使用用,因为数据据库并没有定定义nulll值。如果被被索引的列中中有很多nuull,就不不会使用这个个索引(除非非索引是一个个位图索引,关关于位图索引引,会在以后后的blogg文章里做详详细解释)。在在sql语句句中使用nuull会造成成很多麻烦。 解决这个问题的的办法就是

18、:建表时把需需要索引的列列定义为非空空(not null)3、使用函数如果没有使用基基于函数的索索引,那么wwhere子子句中对存在在索引的列使使用函数时,会会使优化器忽忽略掉这些索索引。下面的的查询就不会会使用索引: select * froom staaff whhere ttrunc(birthhdate) = 001-MAYY-82; 但是把函数应用用在条件上,索索引是可以生生效的,把上上面的语句改改成下面的语语句,就可以以通过索引进进行查找。 select * froom staaff whhere bbirthddate shhow paarametter opptimizzer_

19、inndex_ccost_aadjNAME TYPPEVALUUE optimizzer_inndex_ccost_aadj integger 100为了多使用索引引,可减小它它的值SQL allter ssystemm set optimmizer_indexx_costt_adj=10;进一步设置为了进一步优化化,oraccle建议对对小表不要建建索引,那什什么为小表呢呢,oraccle一次II/O就可读读写完整个表表的表为小表表,查看orracle110g一次读读写的数据量量SQL shhow paarametter dbb_filee_multtiblocck_reaad_couunt

20、NAME TYYPE VVALUE db_filee_multtiblocck_reaad_couuntinntegerr 128可见当表小于1128k时就就不要建索引引了二、各种索引使使用场合及建建议(1)B*Trree索引。常规索引,多用用于oltpp系统,快速速定位行,应应建立于高ccardinnalityy列(即列的的唯一值除以以行数为一个个很大的值,存存在很少的相相同值)。Createe indeex inddexnamme on tableename(colummnnameecoluumnnamme.)(2)反向索引引。B*Tree的的衍生产物,应应用于特殊场场合,在opps环境加

21、序序列增加的列列上建立,不不适合做区域域扫描。Createe indeex inddexnamme on tableename(colummnnameecoluumnnamme.) revverse(3)降序索引引。B*Tree的的衍生产物,应应用于有降序序排列的搜索索语句中,索索引中储存了了降序排列的的索引码,提提供了快速的的降序搜索。Createe indeex inddexnamme on tableename(colummnnamee DESCCcoluumnnamme.)(4)位图索引引。位图方式管理的的索引,适用用于OLAPP(在线分析析)和DSSS(决策处理理)系统,应应建立于低

22、ccardinnalityy列,适合集中读取,不不适合插入和和修改,提供供比B*Trree索引更更节省的空间间。Createe BITMMAP inndex iindexnname oon tabblenamme(collumnnaamecoolumnnname)在实际应用中,如如果某个字段段的值需要频频繁更新,那那么就不适合合在它上面创创建位图索引引。在位图索引中,如如果你更新或或插入其中一一条数值为NN的记录,那么相应表中数数值为N的记记录(可能成成百上千条)全全部被Oraacle锁定定,这就意味着其它它用户不能同同时更新这些些数值为N的的记录,其它它用户必须要要等第一个用用户提交后,才能

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

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

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

26、表扫描,例如如:Selectserv_id,coount(*)frromtgg_cdr001grooupbyyservv_id;评估全表扫描的的合法性如何实现并行扫扫描。永久并行化(不不推荐)alterttablecustoomerpparallleldeegree8;。单个查询并行行化select/*+ffull(eemp)pparalllel(emmp,8)*/*ffromeemp;分区表效果明显显优化SQL语句句排序排序的操作:。orderby子句句。groupby子句句。selecttdisttinct子子句。创建索引时。union或或minuss。排序合并连接接如何避免排序。添加索引

27、。在索引中使用用distiinct子句句。避免排序合并并连接使用提示进行调调整使用提示的原则则。语法:/*+hintt*/。使用表别名:selecct/*+indeex(eddept_iidx)*/*frromemmpe。检验提示常用的提示。rule。all_roows。first_rows。use_nll。use_haash。use_meerge。index。index_asc。no_inddex。index_desc(常常用于使用mmax内置函函数)。index_combiine(强制制使用位图索索引)。index_ffs(索索引快速完全全扫描)。use_cooncat(将查询中所所有or

28、条件件使用uniionalll)。paralllel。noparaallel。full。ordereed(基于成成本)调整表连接表连接的类型。等连接where条条件中用等式式连接;。外部连接(左左、右连接)在where条条件子句的等等式谓词放置置一个(+)来实现,例例如:selecta.enaame,mfromempaa,bonuusbwwherea.enaame=b.enamee(+);该语句返回所有有emp表的的记录;。自连接Selecta.valluetootal,B.valluehaard,(A.vallue-b.vallue)ssoft,Round(b.vallue/a.valuee

29、)*1000,1)ppercFromv$syssttata,v$syssstatbWhereaa.stattisticc#=1179andB.sstatisstic#=1800;反连接反连接常用于nnotinnornnotexxists中中,是指在查查询中找到的的任何记录都都不包含在结结果集中的子子查询;不建建议使用nootinornootexiists;。半连接查询中使用exxists,含含义:即使在在子查询中返返回多条重复复的记录,外外部查询也只只返回一条记记录。嵌套循环连接。被连接表中存存在索引的情情况下使用;。使用use_nl。hash连接。Hash连接接将驱动表加加载在内存中中,并使

30、用hhash技术术连接第二个个表,提高等等连接速度。适合于大表和和小表连接;。使用use_hash。排序合并连接。排序合并连接接不使用索引引。使用原则:连接表子段中不不存在可用索索引;查询返回两个表表中大部分的的数据快;CBO认为全表表扫描比索引引扫描执行的的更快。使用use_mergee使用临时/中间间表多个大表关联时时,可以分别别把满足条件件的结果集存存放到中间表表,然后用中中间表关联;SQL子查询的的调整关联与非关联子子查询。关联:子查询询的内部引用用的是外部表表,每行执行行一次;。非关联:子查查询只执行一一次,存放在在内存中。调整notiin和nootexiists语句句。可以使用外部

31、部连接优化nnotinn子句,例如如:selectenameefrommempwhereedeptt_nonnotinn(selecttdeptt_noffromddeptwwheredept_name=Matth);改为:selectenameefrommemp,deptwhereeemp.deept_noo=deptt.deptt_noanddeppt.deppt_nammeisnull;使用索引调整SSQLOracle为什么不使使用索引。检查被索引的的列或组合索索引的首列是是否出现在PPL/SQLL语句的WHHERE子句句中,这是“执执行计划”能能用到相关索索引的必要条条件。看采用了哪种

32、种类型的连接接方式。ORRACLE的的共有SorrtMerrgeJooin(SMMJ)、HaashJooin(HJJ)和NesstedLLoopJJoin(NNL)。在两两张表连接,且且内表的目标标列上建有索索引时,只有有NesteedLooop才能有效效地利用到该该索引。SMMJ即使相关关列上建有索索引,最多只只能因索引的的存在,避免免数据排序过过程。HJ由由于须做HAASH运算,索索引的存在对对数据查询速速度几乎没有有影响。看连接顺序是是否允许使用用相关索引。假假设表empp的depttno列上有有索引,表ddept的列列deptnno上无索引引,WHERRE语句有eemp.deeptno

33、=dept.deptnno条件。在在做NL连接接时,empp做为外表,先先被访问,由由于连接机制制原因,外表表的数据访问问方式是全表表扫描,emmp.depptno上的的索引显然是是用不上,最最多在其上做做索引全扫描描或索引快速速全扫描。是否用到系统统数据字典表表或视图。由由于系统数据据字典表都未未被分析过,可可能导致极差差的“执行计计划”。但是是不要擅自对对数据字典表表做分析,否否则可能导致致死锁,或系系统性能下降降。索引列是否函函数的参数。如如是,索引在在查询时用不不上。是否存在潜在在的数据类型型转换。如将将字符型数据据与数值型数数据比较,OORACLEE会自动将字字符型用too_numb

34、ber()函函数进行转换换,从而导致致上一种现象象的发生。是否为表和相相关的索引搜搜集足够的统统计数据。对对数据经常有有增、删、改改的表最好定定期对表和索索引进行分析析,可用SQQL语句“aanalyzzetabblexxxxxcoomputeestattisticcsforrallindexxes;”。OORACLEE掌握了充分分反映实际的的统计数据,才才有可能做出出正确的选择择。索引列的选择择性不高。我们假设典典型情况,有有表emp,共共有一百万行行数据,但其其中的empp.depttno列,数数据只有4种种不同的值,如如10、200、30、440。虽然eemp数据行行有很多,OORACL

35、EE缺省认定表表中列的值是是在所有数据据行均匀分布布的,也就是是说每种deeptno值值各有25万万数据行与之之对应。假设设SQL搜索索条件DEPPTNO=110,利用ddeptnoo列上的索引引进行数据搜搜索效率,往往往不比全表表扫描的高。索引列值是否否可为空(NNULL)。如如果索引列值值可以是空值值,在SQLL语句中那些些要返回NUULL值的操操作,将不会会用到索引,如如COUNTT(*),而而是用全表扫扫描。这是因因为索引中存存储值不能为为全空。看是否有用到到并行查询(PPQO)。并并行查询将不不会用到索引引。如果从以上几几个方面都查查不出原因的的话,我们只只好用采用在在语句中加hhi

36、nt的方方式强制ORRACLE使使用最优的“执执行计划”。hintt采用注释的的方式,有行行注释和段注注释两种方式式。如我我们想要用到到A表的INND_COLL1索引的话话,可采用以以下方式:“SELLECT/*+INNDEX(AAIND_COL1)*/*FFROMAAWHERRECOLL1=XXXX;如何屏蔽索引语句的执行计划划中有不良索索引时,可以以人为地屏蔽蔽该索引,方方法:。数值型:在索索引字段上加加0,例如select*froomemppwherreempp_no+00=v_emp_nno;。字符型:在索索引字段上加加,例如如select*froomtg_cdr011wherrems

37、iisdn|=v_msisddn; HYPERLINK /post/19858/207902 SQLPLUSS中的sett小节在写脚本的时候候,往往需要要对输出的格格式进行规范范,我们常常常用set语句在在设置一些需需要的格式规规范。下面,列列举了几个常常用的sett ,和他们们的应用。SQL seet echho on设置运行命命令是是否显显示语句SQL seet feeedbackk on设设置显示“已选择XX行”SQL seet collsep | 设置列列与列之间的的分割符号SQL seet paggesizee 10设置每一页页的行数SQL SEET SERRVEROUUTPUT O

38、N设置置允许显示输输出类似dbbms_ouutputSQL seet heaading on设置显示列列名SQL seet timming oon设置显示示“已用时间:XXXX”SQL seet timme on设置显显示当前时间间SQL seet auttotracce on设置允许许对执行的ssql进行分分析00:38:228 SQLL sett echoo on00:38:337 SQLL E:echo.sql00:38:441 SQLL sellect sstatuss fromm v$daatafille wheere roownum sett echoo off00:38:558

39、SQLL E:echo.sqlSTATUSSYSTEMONLINEONLINEONLINEONLINE已选择5行。已用时间: 000: 000: 01.0900:39:008 SQLLSQL seet feeedbackk onSQQL set colseep |SQQL set pagessize 110SQL set serveeroutpput onnSQL set hheadinng onSSQL set timinng onSSQL set time on00:54:111 SQL SELEECT FILE#, STATTUS, EENABLEED FROOM V$DDATAFIIL

40、E;FIILE#|SSTATUSS |ENAABLED|1|SYSTEEM |READD WRITEE2|ONLIINE |READD WRITEE3|ONLIINE |READD WRITEE4|ONLIINE |READD WRITEE5|ONLIINE |READD WRITEE6|ONLIINE |READD WRITEE7|ONLIINE |READD WRITEEFILE#|STATUUS |ENNABLEDD|99|ONLIINE |READD WRITEE10|ONLLINE |READ WRITEE11|ONLLINE |READ WRITEE12|ONLLINE |READ

41、 WRITEE11 rowws sellectedd.Elappsed: 00:000:01.00700:554:34 SQL DEECLAREE00:55:000 2 BBEGIN00:55:000 3 DDBMS_OOUTPUTT.PUT_LINE(=TThis iis dbmms_outtput.pput_liine!=);00:55:000 4 EEND;00:55:002 5 /=Thhis iss dbmss_outpput.puut_linne!=PL/SQLL proceedure succeessfullly coompletted.Ellapsedd: 00:00:000.

42、02000:55:005 SQLLSQL seet auttotracce onSSQL SELEECT E.LAST_NAME, D.DEEPARTMMENT_NNAME, D.LOCCATIONN_ID2 FROM HHR.EMPPLOYEEES E3 JOIN HHR.DEPPARTMEENTS DD4 USINNG (DEEPARTMMENT_IID);LAAST_NAAME DEEPARTMMENT_NNAME LLOCATIION_IDD Kiing Exxecutiive 17700Kocchhar Execuutive 1700DDe Haaan Exeecutivve 170

43、00Hunoold ITT 14000Ernstt IT 11400106 roows seelecteed.Exeecutioon Plaan00 SELEECT STATEEMENT Optimmizer=CHOOSSE (Costt=5 Caard=1006 Byttes=31180)1 0 HASH JOIN (Cost=55 Cardd=106 Bytess=31800)2 1 TABLEE ACCESSS (FULLL) OF DEEPARTMMENTS (Cosst=2 CCard=227 Byttes=5113)3 11 TABLLE ACCESSS (FULLL) OF EM

44、MPLOYEEES (Cost=22 Cardd=107 Bytes=1177)Statiisticss7 recurrsive callss0 db blockk getss23 connsisteent geets12 physiical rreads00 redoo sizee2801 bytess sentt via SQL*Neet to cliient5880 byttes reeceiveed viaa SQL*Neet froom cliient9 SQL*Neet rouundtriips too/from cclientt0 sorrts (mmemoryy)0 soort

45、s (disk)106 roows prrocesssedSQLLStart wwith connnect bby priior在SELECTT命令中使用用CONNEECT BYY和蔼STAART WIITH子句可可以查询表中中的树型结构构关系。其命命令格式如下下:SELECT。CONNECTT BY PRIORR列名1=列列名2|列名名1=PRIIOR裂名22START WITH;其中:CONNNECT BBY子句说明明每行数据将将是按层次顺顺序检索,并并规定将表中中的数据连入入树型结构的的关系中。PPRIORYY运算符必须须放置在连接接关系的两列列中某一个的的前面。对于于节点间的父父子关系

46、,PPRIOR运运算符在一侧侧表示父节点点,在另一侧侧表示子节点点,从而确定定查找树结构构是的顺序是是自顶向下还还是自底向上上。在连接关关系中,除了了可以使用列列名外,还允允许使用列表表达式。STTART WWITH子句句为可选项,用用来标识哪个个节点作为查查找树型结构构的根节点。若若该子句被省省略,则表示示所有满足查查询条件的行行作为根节点点。Start wwithConnnect BBy子句递归归查询一般用用于一个表维维护树形结构构的应用。创建示例表:CREATE TABLEE TBL_TEST(ID NNUMBERR,NAME VAARCHARR2(1000 BYTEE),PID NNU

47、MBERR DDEFAULLT 0);插入测试数据:INSERT INTO TBL_TTEST(IID,NAMME,PIDD) VALLUES(1,110,00);INSERT INTO TBL_TTEST(IID,NAMME,PIDD) VALLUES(2,111,11);INSERT INTO TBL_TTEST(IID,NAMME,PIDD) VALLUES(3,220,00);INSERT INTO TBL_TTEST(IID,NAMME,PIDD) VALLUES(4,112,11);INSERT INTO TBL_TTEST(IID,NAMME,PIDD) VALLUES(5,11

48、21,2);从Root往树树末梢递归select * froom TBLL_TESTTstart wwith iid=1connectt by pprior id = pidorder bby pidd从末梢往树ROOOT递归select * froom TBLL_TESTTstart wwith iid=5connectt by pprior pid = idorder bby id*CREATE TABLEE xxutts_tesst_staart(ID vvarchaar2(1000),NAME VAARCHARR2(1000);select id,naame,leevel ffrom

49、xxxuts_test_starttstart wwith iid=Aconnectt by pprior name=idorder bby idid name levvelA B 1A C 1A D 1B E 2B F 2C H 2E G 3* SELLECT ttransaactionn_id, pprimarry_quaantityy, pprimarry_uniit_of_measuure, ssourcee_doc_unit_of_meeasuree, ttransaactionn_typee, pparentt_trannsactiion_idd FRROM rccv_traansacttions WHEERE innvoicee_stattus_coode INVVOICEDD addded trrx datte rannge ass per gap2228 - rsk 007/12/07/*ANND TRUUNC (ttransaactionn_datee)BETTWEEN TRUNCC (NVLL (to_date(200880601,YYYYYMMDDD

温馨提示

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

评论

0/150

提交评论