﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-dproc2003-随笔分类-Oracle</title><link>http://www.cnitblog.com/dproc2003/category/8519.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 06 Oct 2011 21:27:24 GMT</lastBuildDate><pubDate>Thu, 06 Oct 2011 21:27:24 GMT</pubDate><ttl>60</ttl><item><title>Oracle Test</title><link>http://www.cnitblog.com/dproc2003/archive/2009/11/26/62846.html</link><dc:creator>Roc</dc:creator><author>Roc</author><pubDate>Thu, 26 Nov 2009 07:20:00 GMT</pubDate><guid>http://www.cnitblog.com/dproc2003/archive/2009/11/26/62846.html</guid><wfw:comment>http://www.cnitblog.com/dproc2003/comments/62846.html</wfw:comment><comments>http://www.cnitblog.com/dproc2003/archive/2009/11/26/62846.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/dproc2003/comments/commentRss/62846.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/dproc2003/services/trackbacks/62846.html</trackback:ping><description><![CDATA[ 一：SQL tuning 类
1：列举几种表连接方式答：merge join，hash join，nested loop
2：不借助第三方工具，怎样查看sql的执行计划？答：sqlplus
set autotrace &#8230;
utlxplan.sql 创建 plan_table 表

3：如何使用CBO，CBO与RULE的区别？答：在初始化参数里面设置 optimizer_mode=choose/all_rows/first_row 等可以使用 cbo。
rbo会选择不合适的索引，cbo需要统计信息。

4：如何定位重要（消耗资源多）的SQL？答：根据v$sqlarea 中的逻辑读/disk_read。以及寻找CPU使用过量的session，查出当前session的当前SQL语句，或者：监控WIN平台Oracle的运行

5：如何跟踪某个session的SQL？答：先找出对应的&#8217;sid,serial&#8217;，然后调用system_system.set_sql_trace_in_session(sid,serial,true)；参考：跟踪某个会话

6：SQL调整最关注的是什么？答：逻辑读。IO量

7：说说你对索引的认识（索引的结构、对dml影响、对查询影响、为什么提高查询性能）答：默认的索引是b-tree。
对insert的影响：分裂，要保证tree的平衡。
对delete的影响：删除行的时候要标记改节点为删除。
对update的影响：如果更新表中的索引字段，则要相应的更新索引中的键值。查询中包含索引字段的键值和行的物理地址。

8：使用索引查询一定能提高查询的性能吗？为什么？答：不能。如果返回的行数目较大，使用全表扫描的性能较好。

9：绑定变量是什么？绑定变量有什么优缺点？答：通俗的说，绑定变量就是变量的一个占位符，使用绑定变量可以减少只有变量值不同的语句的解析。

10：如何稳定(固定)执行计划？答：使用stored outline。

11：和排序相关的内存在8i和9i分别怎样调整，临时表空间的作用是什么？答：8i：使用sort_area_size，hash_area_size，每个session分配相同的值，不管有无使用。
9i：使用pga_aggregate来统一管理。临时表空间的作用：
在sort_area_size中不能完成的部分在临时表空间完成，临时表空间在重建索引，创建临时表等都要用到。
还有hash join不能完成的也在临时表空间中做。

12：存在表T(a,b,c,d)，要根据字段c排序后取第21—30条记录显示，请给出sqlselect a,b,c,d from (select a,b,c,d from T order by c) where rownum<=30
minus
select a,b,c,d from (select a,b,c,d from T order by c) where rownum <=20;
或者：
select * from (select rownum rn,a.* from (select a,b,c,d from T order by c) a )where rn between 21 and 30;
二：数据库基本概念类
1：pctused and pctfree 表示什么含义有什么作用？答：表示数据块什么时候移入和移出freelist。
pctused：如果数据块的使用率小于pctused的值，则该数据块重新加入到fresslist中。
pctfree：如果数据块的使用率高于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的特点答：利用传输重做日志来达到同步的目的。可以设定多个保护级别，9i后支持逻辑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（9i）值。
2）如果表有分区（一般大表都要用到分区的），按分区逐个建索引，如果是本地索引的话。
3）系统空闲的时候建。
5：对raid10 和raid5有何认识？答：raid10是先镜像后条带，适合对写入速度要求较高的数据库系统，特别是online redolog文件，raid5适合大部分的数据库系统和数据仓库系统，读性能优于写性能。
五：综合随意类
1：你最擅长的是oracle哪部分?答：性能/sql 调优、备份恢复。
2：喜欢oracle吗？喜欢上论坛吗？或者偏好oracle的哪一部分？答：http://www.itpub.net/，Oracle的SQL 优化。
3：随意说说你觉得oracle最有意思的部分或者最困难的部分答：SQL调优，最困难的是Oracle的网络管理，Oracle的Connect Manager没用过。
4：为何要选择做DBA呢?答：爱好加职业历史积累。<img src ="http://www.cnitblog.com/dproc2003/aggbug/62846.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/dproc2003/" target="_blank">Roc</a> 2009-11-26 15:20 <a href="http://www.cnitblog.com/dproc2003/archive/2009/11/26/62846.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>