资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
阿里巴巴的Oracle DBA笔试题参考答案 - SQL tuning类SQL tuning类参考解答: 一:SQL tuning 类1:列举几种表连接方式 程序代码hash join/merge join/nest loop(cluster join)/index join 2:不借助第三方工具,怎样查看sql的执行计划程序代码set autot on explain plan set statement_id = &item_id for &sql; select * from table(dbms_xplan.display); http:/download-west.oracle.com/ . /b10752/ex_plan.htm3:如何使用CBO,CBO与RULE的区别在optimizer_mode=choose时,如果表有统计信息(分区表外),优化器将选择CBO,否则选RBO。RBO遵循简单的分级方法学,使用15种级别要点,当接收到查询,优化器将评估使用到的要点数目, 然后选择最佳级别(最少的数量)的执行路径来运行查询。CBO尝试找到最低成本的访问数据的方法,为了最大的吞吐量或最快的初始响应时间,计算使用不同 的执行计划的成本,并选择成本最低的一个,关于表的数据内容的统计被用于确定执行计划。4:如何定位重要(消耗资源多)的SQL 程序代码select sql_textfrom v$sqlwhere disk_reads 1000 or (executions 0 and 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的response 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:绑定变量是什么?绑定变量有什么优缺点?绑定变量是相对文本变量来讲的,所谓文本变量是指在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 outlineoracle can automatically create outlines for all SQL statements, or you can create them for specific SQL statements. In either case, the outlines derive their input from the optimizer.oracle creates stored outlines automatically when you set the initialization parameter Create_STORED_OUTLINES to true. When activated, oracle creates outlines for all compiled SQL statements. You can create stored outlines for specific statements using the Create OUTLINE statement.Creating Outlines:11:和排序相关的内存在8i和9i分别怎样调整,临时表空间的作用是什么Oracle 8i中sort_area_size/sort_area_retained_size决定了排序所需要的内存如果排序操作不能在sort_area_size中完成,就会用到temp表空间Oracle 9i中如果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,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 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性能较差DBA知识接下面 (2008-03-14 15:32:56) 一:SQLtuning类1:列举几种表连接方式答:nestedloop、Sort-mergejoin、hashjoin2:不借助第三方工具,怎样查看sql的执行计划答:autotrace/utlxplan.sql10046event/sqltrace3:如何使用CBO,CBO与RULE的区别答:在初始化参数里面设置optimizer_mode=choose/all_rows/first_row等可以使用cbo.rbo会选择不合适的索引,cbo需要统计信息。4:如何定位重要(消耗资源多)的SQL答:根据v$sqlarea中的逻辑读/disk_read。5:如何跟踪某个session的SQL答:先找出对应的sid,serial,然后调用system_system.set_sql_trace_in_session(sid,serial,true);6:SQL调整最关注的是什么答:逻辑读。7:说说你对索引的认识(索引的结构、对dml影响、对查询影响、为什么提高查询性能)答:默认的索引是b-tree.对insert的影响.(分裂,要保证tree的平衡)对delete的影响.(删除行的时候要标记改节点为删除).对update的影响,如果更新表中的索引字段,则要相应的更新索引中的键值。查询中包含索引字段的键值和行的物理地址。8:使用索引查询一定能提高查询的性能吗?为什么答:不一定。如果返回的行数目较大,或者聚簇因子(clusting_factor)大小接近于行的数量,使用全表扫描的性能较好。9:绑定变量是什么?绑定变量有什么优缺点?答:通俗的说,绑定变量就是变量的一个占位符,使用绑定变量可以减少只有变量值不同的语句的解析。10:如何稳定(固定)执行计划答:使用storedoutline.11:和排序相关的内存在8i和9i分别怎样调整,临时表空间的作用是什么答:8i:使用sort_area_size,hash_area_size,每个session分配相同的值,不管有无使用。9i:使用pga_aggregate来统一管理。临时表空间的作用:在sort_area_size中不能完成的部分在临时表空间完成,临时表空间在重建索引,创建临时表等都要用到。还有hashjoin不能完成的也在临时表空间中做。12:存在表T(a,b,c,d),要根据字段c排序后取第2130条记录显示,请给出sqlselecta,b,c,dfrom(selecta,b,c,dfromTorderbyc)whererownum=30minusselecta,b,c,dfrom(selecta,b,c,dfromTorderbyc)whererownum=20;二:数据库基本概念类1ctusedandpctfree表示什么含义有什么作用答:表示数据块什么时候重联接或者从freelist中删除。pctused:如果数据块的使用小于pctused的值,则该数据块重新加入到fresslist中。pctused:如果数据块的空闲空间小于pctfree的值,则该数据块从freelist中删除。2:简单描述table/segment/extent/block之间的关系答:table是一个逻辑上的概念。segment表示结构的相同的一段空间。extent。多个block组成一个extent,便于dbms分配。block,多个os块组成一个block,是oraclei/o的单位。3:描述tablespace和datafile之间的关系答:tablespace是逻辑上的概念,datafile是物理上的概念。一个tablespace可以由多个datafile组成,一个datafile不能跨越多个tablespace。4:本地管理表空间和字典管理表空间的特点,ASSM有什
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号