这些问题来着阿里巴巴DBA面试,你能回答多少呢?也许你能回答出来,距离DBA,你又进了一步。下面也请你来试试吧,问题后面会附上该题的一份答案,不必定彻底正确,仅供参考。 java
第一轮:SQL tuning 类 ios
1:列举几种表链接方式 面试
答:merge join,hash join,nested loop sql
2:不借助第三方工具,怎样查看sql的执行计划? 数据库
答:sqlplus、set autotrace …、utlxplan.sql 建立 plan_table 表 缓存
3:如何使用CBO,CBO与RULE的区别? session
答:在初始化参数里面设置 optimizer_mode=choose/all_rows/first_row 等可使用 cbo。rbo会选择不合适的索引,cbo须要统计信息。 oracle
4:如何定位重要(消耗资源多)的SQL? 工具
答:根据v$sqlarea 中的逻辑读/disk_read。以及寻找CPU使用过量的session,查出当前session的当前SQL语句,或者:监控WIN平台Oracle的运行 oop
5:如何跟踪某个session的SQL?
答:先找出对应的’sid,serial’,而后调用system_system.set_sql_trace_in_session(sid,serial,true);参考:跟踪某个会话
6:SQL调整最关注的是什么?
答:逻辑读。IO量
7:说说你对索引的认识(索引的结构、对dml影响、对查询影响、为何提升查询性能)
答:默认的索引是b-tree。对insert的影响:分裂,要保证tree的平衡。对delete的影响:删除行的时候要标记改节点为删除。对update的影响:若是更新表中的索引字段,则要相应的更新索引中的键值。查询中包含索引字段的键值和行的物理地址。
8:使用索引查询必定能提升查询的性能吗?为何?
答:不能。若是返回的行数目较大,使用全表扫描的性能较好。
9:Array:绑定变量是什么?绑定变量有什么优缺点?
答:通俗的说,绑定变量就是变量的一个占位符,使用绑定变量能够减小只有变量值不一样的语句的解析。
10:如何稳定(固定)执行计划?
答:使用stored outline。
11:和排序相关的内存在8i和Arrayi分别怎样调整,临时表空间的做用是什么?
答:8i:使用sort_area_size,hash_area_size,每一个session分配相同的值,无论有无使用。Arrayi:使用 pga_aggregate来统一管理。临时表空间的做用:在sort_area_size中不能完成的部分在临时表空间完成,临时表空间在重建索引,建立临时表等都要用到。还有hash join不能完成的也在临时表空间中作。
12:存在表T(a,b,c,d),要根据字段c排序后取第21-30条记录显示,请给出sql
第二轮:数据库基本概念类
1:pctused and pctfree 表示什么含义有什么做用?
答:表示数据块何时移入和移出freelist。pctused:若是数据块的使用率小于pctused的值,则该数据块从新加入到fresslist中。ctfree:若是数据块的使用率高于pctfree的值,则该数据块从freelist中移出。
2:简单描述table / segment / extent / block之间的关系
答:一个table至少是一个segment,若是分区表,则每一个分区是一个segment,table能够当作是一个逻辑上的概 念,segment能够当作是这个逻辑概念的物理实现;segment由一个或多个extents组成,segment不能够跨表空间但能够跨数据文件;extent由多个连续的blocks组成,不能够跨数据文件;block由1-多个os块组成,是oracle i/o的最小存储单位。
3:描述tablespace和datafile之间的关系
答:tablespace是逻辑上的概念,datafile是物理上的概念。一个tablespace能够由多个datafile组成,一个datafile不能跨越多个tablespace。
4:本地管理表空间和字典管理表空间的特色,ASSM有什么特色?
答:一个使用freelist管理,一个使用位图管理。
5:回滚段的做用是什么?
答:保存数据的前像,保证数据读取的时间点一致性。Oracle里数据的多版本特性就是经过回滚段来实现的,正由于此,Oracle数据库实现了读写不竞争的性能优点!
6:日志的做用是什么?
答:记录对数据库的操做,便于恢复。
7:SGA主要有那些部分,主要做用是什么?
答:db_cache(缓存数据块),shared_pool(缓存sql,执行计划,数据字典信息 等),large_pool(MTS模式、parallel 、rman等要用到),java pool(java程序如SQLJ存储过程运行时要用到)。
8:Oracle系统进程主要有哪些,做用是什么?
答:smon(合并空间,实例恢复),pmon(清理失败的进程),归档进程(负责在日志切换的时候归 档日志文件),lgmr(日志书写器进程,负责写日志),ckpt(检查点进程,触发检查点),dbwr(数据库写入器,负责把数据写入导 datafile)。
第三轮:备份恢复类
1:备份如何分类?
答:逻辑备份(exp)与物理备份。或者冷备份与热备份。
2:归档是什么含义?
答:把日志文件放到另外一个地方。
3:若是一个表在2004-08-04 10:30:00 被drop,在有完善的归档和备份的状况下,如何恢复?
答:拷贝备份,recover database until time 2004-08-04 10:30:00 alter database open resetlogs;
4:rman是什么,有何特色?
答:rman叫恢复管理器。特色不少。能够在线备份,到少目标数据库是mount状态。1)热备份。2)能够存储脚本。3)能够增量备份。4)自动管理备份集
5:standby的特色
答:利用传输重作日志来达到同步的目的。能够设定多个保护级别,Arrayi后支持逻辑standbyDB。
6:对于一个要求恢复时间比较短的系统(数据库50G,天天归档5G),你如何设计备份策略
答:天天一个全备份。
第四轮:系统管理类
1:对于一个存在系统性能的系统,说出你的诊断处理思路
答:作一个statspack,根据top 5,system load,top sql等来作相应的调整。
2:列举几种诊断IO、CPU、性能情况的方法
答:hp-unix:iostat -x 1 5;top/vmstat/glance
3:对statspack有何认识?
答:一个性能诊断工具而已,其本质就是在两个时间点采样两个系统数据。(动态性能视图),而后根据两个snapshot,产生一个报告。
4:若是系统如今须要在一个很大的表上建立一个索引,你会考虑那些因素,如何作以尽可能减少对应用的影响
答:1)增大sort_area_size(8i)/pga_aggregate_target(Arrayi)值。2)若是表有分区(通常大表都要用到分区的),按分区逐个建索引,若是是本地索引的话。3)系统空闲的时候建。
5:对raid10 和raid5有何认识?
答:raid10是先镜像后条带,适合对写入速度要求较高的数据库系统,特别是online redolog文件,raid5适合大部分的数据库系统和数据仓库系统,读性能优于写性能。