




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.:.;Oracle调优总结收藏转 HYPERLINK blog.19lou/batchmon.php?action=viewspace&op=up&itemid=2172252&uid=10338179 上一篇 / HYPERLINK blog.19lou/batchmon.php?action=viewspace&op=next&itemid=2172252&uid=10338179 下一篇 2021-02-25 16:06:23 / 个人分类: HYPERLINK blog.19lou/10338179/spacelist-blog-itemtypeid-215 Oracle HYPER
2、LINK blog.19lou/10338179/viewspace-2172252 l xspace-tracks#xspace-tracks 查看( 339 ) / HYPERLINK blog.19lou/10338179/viewspace-2172252 l xspace-itemreply#xspace-itemreply 评论( 1 ) / HYPERLINK blog.19lou/10338179/viewspace-2172252 l xspace-itemform#xspace-itemform 评分( 0 / 0 ) Problem Description:1.每个表的构
3、造及主键索引情况2.每个表的count(*)记录是多少3.对于创建索引的列,索引的类型是什么?count(distinct indexcol)的值是多少?4.最后一次对表进展分析是在什么时间,分析后,能否又对相关表做过大的操作5.索引最后一次rebuild,是在什么时间,以后对表的操作类型又是什么情况?索引中浪费的空间是多少?6.这些表的存储情况,表的存储参数,表空间的类型,存储参数等7.执行该SQL语句时,系统等候的资源是什么? Trace SQL语句的执行过程8.另一台执行类似SQL速度很快的机器上的相关表的如上信息是什么? 一:SQL tuning 类1:列举几种表衔接方式 hash j
4、oin/merge join/nest loop(cluster join)/index join2:不借助第三方工具,怎样查看sql的执行方案set autotrace onset autotrace traceonlyexplain plan set statement_id = &item_id for &sql; select * from table(dbms_xplan.display); HYPERLINK download-west.oracle/ download-west.oracle/ . /b10752/ex_plan.htm3:如何运用CBO,CBO与RULE的区别
5、在optimizer_mode=choose时,假设表有统计信息分区表外,优化器将选择CBO,否那么选RBO。 RBO遵照简单的分级方法学,运用15种级别要点,当接纳到查询,优化器将评价运用到的要点数目,然后选择最正确级别最少的数量的执行途径来运转查询。CBO尝试找到最低本钱的访问数据的方法,为了最大的吞吐量或最快的初始呼应时间,计算运用不同的执行方案的本钱,并选择本钱最低的一个,关于表的数据内容的统计被用于确定执行方案。4:如何定位重要(耗费资源多)的SQL select sql_text from v$sql where disk_reads 1000 or (executions 0 a
6、nd buffer_gets/executions 30000);5:如何跟踪某个session的SQL exec dbms_system.set_sql_trace_in_session(sid,serial#,&sql_trace);select sid,serial# from v$session where sid = (select sid from v$mystat where rownum = 1); exec dbms_system.set_ev(&sid,&serial#,&event_10046,&level_12,);6:SQL调整最关注的是什么 查看该SQL的respo
7、nse time(db block gets/consistent gets/physical reads/sorts (disk)7:说说他对索引的认识索引的构造、对dml影响、为什么提高查询性能 b-tree index/bitmap index/function index/patitional index(local/global) 索引通常能提高select/update/delete的性能,会降低insert的速度, 8:运用索引查询一定能提高查询的性能吗?为什么 索引就是为了提高查询性能而存在的,假设在查询中索引没有提高性能,只能说是用错了索引,或者讲是场所不同9:绑定变量是什么
8、?绑定变量有什么优缺陷? 绑定变量是相对文本变量来讲的,所谓文本变量是指在SQL直接书写查询条件,这样的SQL在不同条件下需求反复解析,绑定变量是指运用变量来替代直接书写条件,查询bind value在运转时传送,然后绑定执行。 优点是减少硬解析,降低CPU的争用,节省shared_pool缺陷是不能运用histogram,sql优化比较困难10:如何稳定(固定)执行方案 query_rewrite_enabled = true star_transformation_enabled = true optimizer_features_enable = 9.2.0创建并运用stored out
9、line HYPERLINK download-west.oracle/ download-west.oracle/ . /outlines.htm#26854 这个贴子: HYPERLINK /viewthread.php?tid=27598 /viewthread.php?tid=27598 11:和排序相关的内存在8i和9i分别怎样调整,暂时表空间的作用是什么 8i中sort_area_size/sort_area_retained_size决议了排序所需求的内存 假设排序操作不能在sort_area_size中完成,就会用到temp表空间 9i中假设
10、workarea_size_policy=auto时, 排序在pga内进展,通常pga_aggregate_target的1/20可以用来进展disk sort; 假设workarea_size_policy=manual时,排序需求的内存由sort_area_size决议 在执行order by/group by/distinct/union/create index/index rebuild/minus等操作时, 假设在pga或sort_area_size中不能完成,排序将在暂时表空间进展disk sort, 暂时表空间主要作用就是完成系统中的disk sort.12:存在表T(a,b,
11、c,d),要根据字段c排序后取第2130条记录显示,请给出sql create table t(a number(,b number(,c number(,d number(); / begin for i in 1 . 300 loop insert into t values(mod(i,2),i/2,dbms_random.value(1,300),i/4); end loop; end; / select * from (select c.*,rownum as rn from (select * from t order by c desc) c) where rn between
12、21 and 30; / select * from (select * from test order by c desc) x where rownum 30 minus select * from (select * from test order by c desc) y where rownum 20 order by 3 desc 相比之 minus性能较差二:数据库根本概念类1:pctused and pctfree 表示什么含义有什么作用 pctused与pctfree控制数据块能否出如今freelist中,pctfree控制数据块中保管用于update的空间,当数据块中的fr
13、ee space小于pctfree设置的空间时,该数据块从freelist中去掉,当块由于dml操作free space大于pct_used设置的空间时,该数据库块将被添加在freelist链表中。-PCTFREE存储参数 PCTFREE存储参数通知ORACLE什么时候应该将数据块从对象的空闲列表中移出。ORACLE的默许参数是PCTFREE=10;也就是说,一旦一个INSERT操作使得数据块的90%被运用,这个数据块就从空闲列表(free list)中移出。 -PCTUSED存储参数 PCTUSED存储参数通知ORACLE什么时候将以前满的数据块加到空闲列表中。当记录从数据表中删除时,数据库
14、的数据块就有空间接受新的记录,但只需当填充的空间降到PCTUSED值以下时,该数据块才被衔接到空闲列表中,才可以往其中插入数据。PCTUSED的默许值是PCTUSED=40。 -存储参数规那么小结 1PCTUSED较高意味着相对较满的数据块会被放置到空闲列表中,从而有效的反复运用数据块的空间,但会导致I/O耗费。PCTUSED低意味着在一个数据块快空的时候才被放置到空闲列表中,数据块一次能接受很多的记录,因此可以减少I/O耗费,提高性能。 2PCTFREE的值较大意味着数据块没有被利用多少就从空闲列表中断开衔接,不利于数据块的充分运用。PCTFREE过小的结果是,在更新时能够会出现数据记录迁移
15、(Migration)的情况。(注:数据记录迁移(Migration)是指记录在是UPDATE操作扩展了一个VARCHAR2类型的列或BLOB列后,PCTFREE参数所指定的空间不够扩展,从而记录被ORACLE强迫迁移到新的数据块,发生这种情况将较严重的影响ORACLE的性能,出现更新缓慢)。 3在批量的插入、删除或者更新操作之前,先删除该表上的索引,在操作终了之后在重新建立,这样有助于提高批量操作的整体速度,并且保证B树索引在操作之后有良好的性能。 -表的pctfree和pctused两个参数进展估算的方法 对于不同的运用系统,表的pctfree 和pctused两个参数有不同的设计原那么,
16、以下是根据特定的运用系统进展估算的例子,从中可以掌握根本的估算方法。表的存储参数调整,普通情况,设置为pctfree 5 pctused 85即可缺省为pctfree 10 pctused 401.对于Pctfree参数除了可以按字段及字段长度估算平均行长外,下面的方面可以根据已有数据分析出平均行长和每块行数例:analyze table 病人信息 compute statistics for table for all indexes for all indexed columns;Select Num_Rows,Blocks,Round(Num_Rows / Blocks) Avg_Row
17、s_Block, Avg_Row_Len From User_Tables Where Table_Name = 病人信息 NUM_ROWS BLOCKS AVG_ROWS_BLOCK AVG_ROW_LEN 857291 14161 61 117 对于普通8192的块,实践可用空间为8100左右.假设以前该表的pctfree为15,改为5后,pctfree减少10,就可以再存入约7行.一样的1万4千块就可以多存放约10万行数据,这10万行数据,假设按每块60行算,就可以少占用约1700块(约13M的空间)假设全表扫描该表的话,少读1700块数据,少106次IO操作(按缺省db_file_mu
18、ltiblock_read_count=16计算)少占13M的内存另外,需求思索的两个要素1。更新操作时,数据增长量大不大,例如:主要是把形状字段由1改为3,还是把摘要由空改为一段文字2。并发事务的多少,由于一个事务信息在块中要占用约24Byte,假设有10个并发事务的话,至少额外思索240Byte的空闲空间。2.对于Pctused参数主要思索删除后插入数据的情况多不多,以及平均行长大小例如:病人费用记录,医保假设存在校正操作的话,是先产生预交结算数据,正式结算时,删除这些数据再重新生成所以,病人预交记录,Pctused不能设置太高,否那么重用那些低于Pctused的块,只能插入少量数据行,添
19、加了IO操作analyze table 病人预交记录 compute statistics for table for all indexes for all indexed columns;Select Num_Rows,Blocks,Round(Num_Rows / Blocks) Avg_Rows_Block, Avg_Row_Len From User_Tables Where Table_Name = 病人预交记录 NUM_ROWS BLOCKS AVG_ROWS_BLOCK AVG_ROW_LEN 181758 2147 85 83 假设设置pctfree 5 pctused 85
20、,那么当删除一些行使块的已用空间低于85%时,块会被重用,但是由于要预留5%的空闲空间,所以,对于已用空间刚刚低于85%的块,重用空间就只需10%,对于8K的块,可用810Byte,平均行长83,可以再放入9行,所以这个参数也是可以的。但是,假设是病人费用记录,平均行长229,这样设置,只能放下3行,这个参数就不太适宜了 NUM_ROWS BLOCKS AVG_ROWS_BLOCK AVG_ROW_LEN 925133 38278 24 229 根据分析,病人费用记录的数据更新量不大,但是并发操作比较大,最好把Pctfree设置高一点所以,可以设置为pctfree 10 pctused 75重
21、用的块至少可以放5行,约1-2张单据,甚至pctused 70也是可以的。假设一个块的数据行数太多,能够呵斥热块争用,但是相对于减少存储,减少IO,减少内存占用带来的益处来说,热块不是特别突出的情况下可以不思索。PCTFREE=(Average Row Size-Initial Row Size)*100/Average Row SizePCTUSED=(100-PCTFREE) -Average Row Size * 100/Availabe Data SpaceOracle的其中一个优点时它可以管理每个表空间中的自在空间。Oracle担任处置表和索引的空间管理,这样就可以让我们无需懂得Or
22、acle的表和索引的内部运作。不过,对于有阅历的Oracle调优专家来说,他需求懂得Oracle是如何管理表的extent和空闲的数据块。对于调整拥有高的insert或者update的系统来说,这是非常重要的。要知晓对象的调整,他需求懂得freelists和freelist组的行为,它们和pctfree及pctused参数的值有关。这些知识对于企业资源方案ERP的运用是特别重要的,由于在这些运用中,不正确的表设置通常是DML语句执行慢的缘由。对于初学者来说,最常见的错误是以为默许的Oracle参数对于一切的对象都是最正确的。除非磁盘的耗费不是一个问题,否那么在设置表的pctfree和pctus
23、ed参数时,就必需思索平均的行长和数据库的块大小,这样空的块才会被有效地放到freelists中。当这些设置不正确时,那些得到的freelists也是dead块,由于它们没有足够的空间来存储一行,这样将会导致明显的处置延迟。Freelists对于有效地重新运用Oracle表空间中的空间是很重要的,它和pctfree及pctused这两个存储参数的设置直接相关。假设将pctused设置为一个高的值,这时数据库就会尽快地重新运用块。不过,高性能和有效地重新运用表的块是对立的。在调整Oracle的表格和索引时,需求仔细思索终究需求高性能还是有效的空间重用,并且据此来设置表的参数。以下我们来看一下这些
24、freelists是如何影响Oracle的性能的。当有一个恳求需求插入一行到表格中时,Oracle就会到freelist中寻觅一个有足够的空间来包容一行的块。他也许知道,freelist串是放在表格或者索引的第一个块中,这个块也被称为段头segment header。pctfree和pctused 参数的独一目的就是为了控制块如何在freelists中进出。虽然freelist link和 unlink是简单的Oracle功能,不过设置freelist link (pctused) 和unlink (pctfree) 对Oracle的性能确实有影响。由DBA的根本知识知道,pctfree参数是
25、控制freelist un-links的即将块由freelists中移除。设置pctfree=10 意味着每个块都保管10%的空间用作行扩展。pctused参数是控制freelist re-links的。设置pctused=40意味着只需在块的运用低于40%时才会回到表格的freelists中。许多新手对于一个块重新回到freelists后的处置都有些误解。其实,一旦由于一个删除的操作而令块被重新参与到freelist中,它将会不断保管在freelist中即使空间的运用超越了60%,只需在到达pctfree时才会将数据块由freelist中移走。表格和索引存储参数设置的要求总结以下的一些规那么
26、是用来设置freelists, freelist groups, pctfree和pctused存储参数的。他也知道,pctused和pctfree的值是可以很容易地经过alter table命令修正的,一个好的DBA应该知道如何设置这些参数的最正确值。有效地运用空间和高性能之间是有矛盾的,而表格的存储参数就是控制这个方面的矛盾:. 对于需求有效地重新运用空间,可以设置一个高的pctused值,不过副作用是需求额外的I/O。一个高的pctused值意味着相对满的块都会放到freelist中。因此,这些块在再次满之前只可以接受几行记录,从而导致更多的I/O。. 追求高性能的话,可以将pctuse
27、d设置为一个低的值,这意味着Oracle不会将数据块放到freelists中直到它几乎是空的。那么块将可以在满之前接纳更多的行,因此可以减少插入操作的I/O。要记住Oracle扩展新块的性能要比重新运用现有的块高。对于Oracle来说,扩展一个表比管理freelists耗费更少的资源。让我们来回想一下设置对象存储参数的一些常见规那么:经常将pctused设置为可以接纳一条新行。对于不能接受一行的free blocks对于我们来说是没有用的。假设这样做,将会令Oracle的性能变慢,由于Oracle将在扩展表来得到一个空的块之前,企图读取5个dead 的free block。表格中chained
28、 rows的出现意味着pctfree太低或者是db_block_size太少。在很多情况下,RAW和LONG RAW列都很宏大,以致超越了Oracle的最大块的大小,这时chained rows是不可以防止的。假设一个表有同时插入的SQL语句,那么它需求有同时删除的语句。运转单一个一个去除的任务将会把全部的空闲块放到一个freelist中,而没有其它包含有任何空闲块的freelists出现。freelist参数应该设置为表格同时更新的最大值。例如,假设在任何时候,某个表最多有20个用户执行插入的操作,那么该表的参数应该设置为freelists=20。应记住的是freelist groups参数
29、的值只是对于Oracle Parallel Server和Real Application Clusters才是有用的。对于这类Oracle,freelist groups应该设置为访问该表格的Oracle Parallel Server实例的数目。 -2:简单描画table / segment / extent / block之间的关系 table创建时,默许创建了一个data segment,每个data segment含有min extents指定的extents数,每个extent据据表空间的存储参数分配一定数量的blocks3:描画tablespace和datafile之间的关系一个
30、tablespace可以有一个或多个datafile,每个datafile只能在一个tablespace内,table中的数据,经过hash算法分布在tablespace中的各个datafile中,tablespace是逻辑上的概念,datafile那么在物理上储存了数据库的种种对象。4:本地管理表空间和字典管理表空间的特点,ASSM有什么特点 本地管理表空间Locally Managed Tablespace简称LMT 8i以后出现的一种新的表空间的管理方式,经过位图来管理表空间的空间运用。 字典管理表空间Dictionary-Managed Tablespace简称DMT 8i以前包括以后
31、都还可以运用的一种表空间管理方式,经过数据字典管理表空间的空间运用。 动段空间管理ASSM, 它初次出如今Oracle920里有了ASSM,链接列表freelist被位图所取代,它是一个二进制的数组, 可以迅速有效地管理存储扩展和剩余区块free block,因此可以改善分段存储本质, ASSM表空间上创建的段还有另外一个称谓叫Bitmap Managed SegmentsBMB 段。5:回滚段的作用是什么事务回滚:当事务修正表中数据的时候,该数据修正前的值即前影像会存放在回滚段中, 当用户回滚事务ROLLBACK时,ORACLE将会利用回滚段中的数据前影像来将修正的数据恢复到原来的值。 事务
32、恢复:当事务正在处置的时候,例程失败,回滚段的信息保管在undo表空间中, ORACLE将在下次翻开数据库时利用回滚来恢复未提交的数据。 读一致性:当一个会话正在修正数据时,其他的会话将看不到该会话未提交的修正。 当一个语句正在执行时,该语句将看不到从该语句开场执行后的未提交的修正语句级读一致性 当ORACLE执行SELECT语句时,ORACLE按照当前的系统改动号SYSTEM CHANGE NUMBER-SCN 来保证任何前于当前SCN的未提交的改动不被该语句处置。可以想象:当一个长时间的查询正在执行时, 假设其他会话改动了该查询要查询的某个数据块,ORACLE将利用回滚段的数据前影像来构造
33、一个读一致性视图。 HYPERLINK . E%B5%C4%D7%F7%D3%C36:日志的作用是什么 记录数据库事务,最大限制地保证数据的一致性与平安性 重做日志文件:含对数据库所做的更改记录,这样万一出现缺点可以启用数据恢复,一个数据库至少需求两个重做日志文件 归档日志文件:是重做日志文件的脱机副本,这些副本能够对于从介质失败中进展恢复很必要。 HYPERLINK /viewthread /viewthread. . hlight=%C8%D5%D6%BE7:SGA主要有那些部分,主要作用是什么 SGA:db_cache/shared_pool/larg
34、e_pool/java_pooldb_cache: 数据库缓存Block Buffer对于Oracle数据库的运转和性能起着非常关键的作用, 它占据Oracle数据库SGA系统共享内存区的主要部分。Oracle数据库经过运用LRU 算法,将最近访问的数据块存放到缓存中,从而优化对磁盘数据的访问.shared_pool: 共享池的大小对于Oracle 性能来说都是很重要的。 共享池中保管数据字典高速缓冲和完全解析或编译的的PL/SQL 块和SQL 语句及控制构造large_pool: 运用MTS配置时,由于要在SGA中分配UGA来坚持用户的会话,就是用Large_pool来坚持这个会话内存 运用
35、RMAN做备份的时候,要运用Large_pool这个内存构造来做磁盘I/O缓存器java_pool: 为java procedure预备的内存区域,假设没有运用java proc,java_pool不是必需的 8racle系统进程主要有哪些,作用是什么 数据写进程(dbwr):担任将更改的数据从数据库缓冲区高速缓存写入数据文件 日志写进程(lgwr):将重做日志缓冲区中的更改写入在线重做日志文件 系统监控(smon) :检查数据库的一致性如有必要还会在数据库翻开时启动数据库的恢复 进程监控(pmon) :担任在一个Oracle 进程失败时清理资源 检查点进程(chpt):担任在每当缓冲区高速缓
36、存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库形状信息。 归档进程(arcn) :在每次日志切换时把已满的日志组进展备份或归档 作业调度器(cjq) :担任将调度与执行系统中已定义好的job,完成一些预定义的任务.恢复进程(reco) :保证分布式事务的一致性,在分布式事务中,要么同时commit,要么同时rollback;三:备份恢复类1:备份如何分类逻辑备份:exp/imp物理备份: RMAN备份 full backup/incremental backup(累积/差别) 热备份:alter tablespace begin/end backup; 冷备份:脱机备份(d
37、atabase shutdown) 2:归档是什么含义关于归档日志:Oracle要将填满的在线日志文件组归档时,那么要建立归档日志archived redo log。其对数据库备份和恢复有以下用途: 数据库后备以及在线和归档日志文件,在操作系统和磁盘缺点中可保证全部提交的事物可被恢复。 在数据库翻开和正常系统运用下,假设归档日志是永久保管,在线后备可以进展和运用。 数据库可运转在两种不同方式下: NOARCHIVELOG方式或ARCHIVELOG 方式数据库在NOARCHIVELOG方式下运用时,不能进展在线日志的归档,假设数据库在ARCHIVELOG方式下运转,可实施在线日志的归档。 3:假
38、设一个表在2004-08-04 10:30:00 被drop,在有完善的归档和备份的情况下,如何恢复? 手工拷贝回一切备份的数据文件 sqlstartup mount; sqlalter database recover automatic until time 2004-08-04:10:30:00;sqlalter database open resetlogs; 4:rman是什么,有何特点?RMAN(Recovery Manager)是DBA的一个重要工具,用于备份、复原和恢复oracle数据库,RMAN 可以用来备份和恢复数据库文件、归档日志、控制文件、系统参数文件,也可以用来执行完
39、全或不完全的数据库恢复。RMAN有三种不同的用户接口: COMMAND LINE方式、GUI 方式集成在OEM 中的备份管理器、API 方式用于集成到第三方的备份软件中。具有如下特点:1功能类似物理备份,但比物理备份强大N倍;2可以紧缩空块;3可以在块程度上实现增量;4可以把备份的输出打包成备份集,也可以按固定大小分割备份集;5备份与恢复的过程可以自动管理;6可以运用脚本存在Recovery catalog 中7可以做坏块监测5:standby的特点备用数据库standby database:ORACLE推出的一种高可用性(HIGH AVAILABLE)数据库方案,在主节点与备用节点间经过日志
40、同步来保证数据的同步,备用节点作为主节点的备份可以实现快速切换与灾难性恢复,从920开场,还开场支持物理与逻辑备用效力器。 9i中的三种数据维护方式分别是: 1)、MAXIMIZE PROTECTION :最大数据维护与无数据分歧,LGWR将同时传送到备用节点, 在主节点事务确认之前,备用节点也必需完全收到日志数据。假设网络不好,引起LGWR不能传送数据,将引起严重的性能问题,导致主节点DOWN机。 2)、MAXIMIZE AVAILABILITY :无数据丧失方式,允许数据分歧,允许异步传送。 正常情况下运转在最大维护方式,在主节点与备用节点的网络断开或衔接不正常时,自动切换到最大性能方式,
41、 主节点的操作还是可以继续的。在网络不好的情况下有较大的性能影响。 3)、MAXIMIZE PERFORMANCE:这种方式该当可以说是从8i承继过来的备用效力器方式,异步传送, 无数据同步检查,能够丧失数据,但是能获得主节点的最大性能。9i在配置DATA GUARD的时候默许就是MAXIMIZE PERFORMANCE6:对于一个要求恢复时间比较短的系统(数据库50G,每天归档5G),他如何设计备份战略 rman/每月一号 level 0 每周末/周三 level 1 其它每天level 2 四:系统管理类1:对于一个存在系统性能的系统,说出他的诊断处置思绪1 做statspack搜集系统相
42、关信息 了解系统大致情况/确定能否存在参数设置不适宜的地方/查看top 5 event/查看top sql等2 查v$system_event/v$session_event/v$session_wait 从v$system_event开场,确定需求什么资源(db file sequential read)等 深化研讨v$session_event,确定等待事件涉及的会话 从v$session_wait确定详细的资源争用情况(p1-p3的值:file_id/block_id/blocks等)3 经过v$sql/v$sqltext/v$sqlarea表确定disk_reads、(buffer_g
43、ets/executions)值较大的SQL2:列举几种诊断IO、CPU、性能情况的方法 top/vmstat statspack sql_trace/tkprof 查v$system_event/v$session_event/v$session_wait 查v$sqlarea(disk_reads或buffer_gets/executions较大的SQL)3:对statspack有何认识StapSpack是Oracle公司提供的一个搜集数据库运转性能目的的软件包,该软件包从8i起,在9i、10g都有显著的加强该软件包的辅助表存储相关参数与搜集的性能目的的表由最初的25个增长到43个搜集级别
44、参数由原来的3个0、5、10添加到5个0、5、6、7、10经过分析搜集的性能目的,数据库管理员可以详细地了解数据库目前的运转情况,对数据库实例、等待事件、SQL等进展优化调整利用statspack搜集的snapshot,可以统计制造数据库的各种性能目的的统计趋势图表。4:假设系统如今需求在一个很大的表上创建一个索引,他会思索那些要素,如何做以尽量减小对运用的影响在系统比较空闲时nologging选项假设有dataguard那么不可以运用nologging大的sort_ared_size或pga_aggregate_target较大5:对raid1+0 和raid5有何认识RAID 10(或称R
45、AID 10)与RAID 01不同,它是用硬盘驱动器先组成RAID 1阵列,然后在RAID 1阵列之间再组成RAID 0阵列。RAID 10方式同RAID 0+1方式一样具有良好的数据传输性能,但却比RAID 0+1具有更高的可靠性。RAID 10阵列的实践容量为Mn/2,磁盘利用率为50。RAID 10也需求至少4个硬盘驱动器构成,因此价钱昂贵。 RAID 10的可靠性同RAID 1一样,但由于RAID 10硬盘驱动器之间有数据分割,因此数据传输性能优良。 RAID 5与RAID 3很类似,不同之处在于RAID 5的奇偶校验信息也同数据一样被分割保管到一切的硬盘驱动器,而不是写入一个指定的硬
46、盘驱动器,从而消除了单个奇偶校验硬盘驱动器的瓶颈问题。RAID 5磁盘阵列的性能比RAID 3有所提高,但依然需求至少3块硬盘驱动器。其实践容量为M(n-1),磁盘利用率为(n-1)/n 。 五:综合随意类1:他最擅长的是oracle哪部分?pl/sql及sql优化2:喜欢oracle吗?喜欢上论坛吗?或者偏好oracle的哪一部分?喜欢,sql的优化3:随意说说他觉得oracle最有意思的部分或者最困难的部分latch free的处置4:为何要选择做DBA呢?兴趣所在耗费在预备利用Oracle执行方案机制提高查询性能新的SQL语句的时间是Oracle SQL语句执行时间的最重要的组成部分。但
47、是经过了解Oracle内部产生执行方案的机制,他可以控制Oracle破费在评价衔接顺序的时间数量,并且能在大体上提高查询性能。 预备执行SQL语句 当SQL语句进入Oracle的库缓存后,在该语句预备执行之前,将执行以下步骤: 1) 语法检查:检查SQL语句拼写能否正确和词序。 2) 语义分析:核实一切的与数据字典不一致的表和列的名字。 3) 轮廓存储检查:检查数据字典,以确定该SQL语句的轮廓能否曾经存在。 4) 生成执行方案:运用基于本钱的优化规那么和数据字典中的统计表来决议最正确执行方案。 5) 建立二进制代码:基于执行方案,Oracle生成二进制执行代码。 一旦为执行预备好了SQL语句
48、,以后的执行将很快发生,由于Oracle认可同一个SQL语句,并且重用那些语句的执行。然而,对于生成特殊的SQL语句,或嵌入了文字变量的SQL语句的系统,SQL执行方案的生成时间就很重要了,并且前一个执行方案通常不可以被重用。对那些衔接了很多表的查询,Oracle需求破费大量的时间来检测衔接这些表的适当顺序。 评价表的衔接顺序 在SQL语句的预备过程中,破费最多的步骤是生成执行方案,特别是处置有多个表衔接的查询。当Oracle评价表的衔接顺序时,它必需思索到表之间一切能够的衔接。例如:六个表的之间衔接有7206的阶乘,或6 * 5 * 4 * 3 * 2 * 1 = 720种能够的衔接线路。当
49、一个查询中含有超越10个表的衔接时,陈列的问题将变得更为显著。对于15个表之间的衔接,需求评价的能够查询陈列将超越1万亿准确的数字是1,307,674,368,000种。 运用optimizer_search_limit参数来设定限制 经过运用optimizer_search_limit参数,他可以指定被优化器用来评价的最大的衔接组合数量。运用这个参数,我们将可以防止优化器耗费不定数量的时间来评价一切能够的衔接组合。假设在查询中表的数目小于optimizer_search_limit的值,优化器将检查一切能够的衔接组合。 例如:有五个表衔接的查询将有1205! = 5 * 4 * 3 * 2
50、* 1 = 120种能够的衔接组合,因此假设optimizer_search_limit等于5默许值,那么优化器将评价一切的120种能够。optimizer_search_limit参数也控制着调用带星号的衔接提示的阀值。当查询中的表的数目比optimizer_search_limit小时,带星号的提示将被优先思索。 另一个工具:参数optimizer_max_permutations 初始化参数optimizer_max_permutations定义了优化器所思索组合数目的上限,且依赖于初始参数optimizer_search_limit。optimizer_max_permutations
51、的默许值是80,000。 参数optimizer_search_limit和optimizer_max_permutations一同来确定优化器所思索的组合数目的上限:除非表或组合数目超越参数optimizer_search_limit 或者 optimizer_max_permutations设定的值,否那么优化器将生成一切能够的衔接组合。一旦优化器停顿评价表的衔接组合,它将选择本钱最低的组合。 运用ordered提示指定衔接顺序 他可以设定优化器所执行的评价数目的上限。但是即使采用有很高价值的陈列评价,我们依然拥有使优化器可以尽早地放弃复杂的查询的重要时机。回想一下含有15个衔接查询的例子
52、,它将有超越1万亿种的衔接组合。假设优化器在评价了80,000个组合后停顿,那么它才仅仅评价了0.000006%的能够组合,而且或许还没有为这个宏大的查询找到最正确的衔接顺序。 在Oracle SQL中处理此问题的最好的方法是手工指定表的衔接顺序。为了尽快创建最小的处理方案集,这里所遵照的规那么是将表结合起来,通常优先运用限制最严厉的WHERE子句来衔接表。 下面的代码是一个查询执行方案的例子,该例子在emp表的关联查询上强迫执行了嵌套的循环衔接。留意,我曾经运用了ordered提示来直接最优化表的评价顺序,最终它们表如今WHERE子句上。 select /*+ ordered use_nl(
53、bonus) parallel(e, 4) */ e.ename,hiredate,bm.from emp e, bonus bwheree.ename = b.ename这个例子要求优化器按顺序衔接在SQL语句的FROM子句中指定的表,在FROM子句中的第一个表指定了驱动表。ordered提示通常被用来与其它的提示结合起来来保证采用正确的顺序衔接多个表。它的用途更多的是在改动衔接表数在四个以上的数据仓库的查询方面。 另外一个例子,下面的查询运用ordered提示按照指定的顺序来衔接表:emp、dept、sal,最后是bonus。我经过指定emp到dept运用哈希衔接和sal到bonus运用嵌
54、套循环衔接,来进一步精炼执行方案。 select /*+ ordered use_hash (emp, dept) use_nl (sal, bonus) */fromemp, dept, sal, bonuswhere . . . 实际建议 实践上,更有效率的做法是在产品环境中减小optimizer_max_permutations参数的大小,并且总是运用稳定的优化方案或存储轮廓来防止出现耗时的含有大量衔接的查询。一旦找到最正确的衔接顺序,您就可以经过添加ordered提示到当前的查询中,并保管它的存储轮廓,来为这些表手工指定衔接顺序,从而使其耐久化。 当他计划运用优化器来稳定方案,那么可以
55、照下面的方法使执行方案耐久化,暂时将optimizer_search_limit设置为查询中的表的数目,从而允许优化器思索一切能够的衔接顺序。然后,经过重新编排WHERE子句中表的名字,并运用ordered提示,与存储轮廓一同使变卦耐久化,来调整查询。在查询中包含四个以上的表时,ordered提示和存储轮廓将排除耗时的评价SQL衔接顺序解析的义务,从而提高查询的速度。 一旦检测到最正确的衔接顺序,我们就可以运用ordered提示来重载optimizer_search_limit和optimizer_max_permutations参数。ordered提示要求表按照它们出如今FROM子句中的顺序
56、进展衔接,所以优化器没有参与描画。 作为一个Oracle专业人员,他应该知道在SQL语句第一次进入库缓存时能够存在艰苦的启动延迟。但是聪明的Oracle DBA和开发人员可以改动表的搜索限制参数或者运用ordered提示来手工指定表的衔接顺序,从而显著地减少优化和执行新查询所需的时间Oracle专家调优在过去的十年中, Oracle 曾经成为世界上最专业的数据库之一。对于 IT 专家来说,就是要确保利用 Oracle 的强大特性来提高他们公司的消费力。最有效的方法之一是经过 Oracle 调优。它有大量的调整参数和技术来改良他的 Oracle 数据库的性能。 Oracle 调优是一个复杂的主题
57、。关于调优可以写整整一本书,不过,为了改善 Oracle 数据库的性能,有一些根本的概念是每个 Oracle DBA 都应该服从的。 在这篇简介中,我们将简要地引见以下的 Oracle 主题: - 外部调整:我们应该记住 Oracle 并不是单独运转的。因此我们将查看一下经过调整 Oracle 效力器以得到高的性能。 -Row re-sequencing 以减少磁盘 I/O :我们应该懂得 Oracle 调优最重要的目的是减少 I/O 。 -Oracle SQL 调整。 Oracle SQL 调整是 Oracle 调整中最重要的领域之一,只需经过一些简单的 SQL 调优规那么就可以大幅度地提升
58、 SQL 语句的性能,这是一点都不奇异的。 - 调整 Oracle 排序:排序对于 Oracle 性能也是有很大影响的。 - 调整 Oracle 的竞争:表和索引的参数设置对于 UPDATE 和 INSERT 的性能有很大的影响。 我们首先从调整 Oracle 外部的环境开场。假设内存和 CPU 的资源缺乏的话,任何的 Oracle 调整都是没有协助 的。 外部的性能问题 Oracle 并不是单独运转的。 Oracle 数据库的性能和外部的环境有很大的关系。这些外部的条件包括有: CPU-CPU 资源的缺乏令查询变慢。当查询超越了 Oracle 效力器的 CPU 性能时,他的数据库性能就遭到
59、CPU 的限制。 内存 - 可用于 Oralce 的内存数量也会影响 SQL 的性能,特别是在数据缓冲和内存排序方面。 网络 - 大量的 Net8 通讯令 SQL 的性能变慢。 许多新手都错误的以为应该首先调整 Oracle 数据库,而不是先确认外部资源能否足够。实践上,假设外部环境出现瓶颈,再多的 Oracle 调整都是没有协助 的。 在检查 Oracle 的外部环境时,有两个方面是需求留意的: 1 、当运转队列的数目超越效力器的 CPU 数量时,效力器的性能就会遭到 CPU 的限制。补救的方法是为效力器添加额外的 CPU 或者封锁需求很多处置资源的组件,例如 Oracle Parallel Query 。 2 、内存分页。当内存分页时,内存容量曾经缺乏,而内存页是与磁盘上的交换区进展交互的。补救的方法是添加更多的内存,减少 Oracle SGA 的大小,或者封锁 Oracle 的多线程效力器。 可以运用各种规范的效力器工具来得到效力器的统计数据,例如 vmstat,glance,top 和 sar 。 DBA 的目的是确保数据库效力器拥有足够的 CPU 和内存资源来处置Oracle 的恳求。 以下让我们来看一下 Oracle 的 row-resequencing 是如何可以极大地减少磁盘 I/O 的。 Row-resequencing 行的重新排序 就象我们上面提到的,有阅
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 煤矿机电维护工职业技能理论考试题库150题(含答案)
- 掘进工作面胶带输送机司机技能理论考试题库150题(含答案)
- 科技助力下的现代医疗养老公寓建设研究
- 二零二五年个人土地使用权及土地经营权租赁协议
- 压车货款合同范本
- 现代技术下的班级安全监控与预警系统
- 2025年度演出活动艺人出场费支付与免责协议
- 二零二五年度电动车销售区域独家代理权购买合同
- 二零二五年度厂房拆除与城市地下空间开发利用合同
- 现代科技在电力工程企业品牌推广中的应用
- 小学一年级硬笔书法入门班教学课件
- 出货单表格模板下载
- PEP六年级上册英语unit1
- 接纳与承诺(ACT)疗法课件
- 装配式混凝土建筑技术标准
- 房地产公司销售管理部赏罚制度
- 《方位介词介绍》课件
- 甲状腺术后出血抢救流程
- 个人购买家具合同
- 国际救生设备规则
- 第三方检查应对措施方案
评论
0/150
提交评论