Oracle DBA笔试题解析:SQL优化与索引策略

需积分: 34 8 下载量 93 浏览量 更新于2024-07-29 收藏 282KB DOC 举报
"这篇资料是关于Oracle DBA的笔试题目,涵盖了SQL优化、查询计划查看、CBO与RBO的区别、重要SQL定位、会话跟踪、索引原理及其影响、执行计划稳定性、排序内存调整及临时表空间的作用等多个方面。" 在Oracle数据库管理中,DBA(Database Administrator)的工作至关重要,而SQL优化是其中的关键环节。本资料提供的笔试题目旨在考察DBA对SQL性能调优的理解。例如,表连接方式包括merge join、hash join和nested loop,不同的连接方式适用于不同的数据分布和查询需求。在没有第三方工具的情况下,可以使用SQL*Plus通过`set autotrace`命令查看SQL的执行计划,或通过创建plan_table并运行`utlxplan.sql`来辅助分析。 CBO(Cost-Based Optimizer)和RBO(Rule-Based Optimizer)是Oracle数据库的两种查询优化器。CBO基于统计信息选择最优执行路径,而RBO则依赖于预定义的规则。通过设置`optimizer_mode`参数,可以切换优化器模式。CBO能更好地利用索引,但需要准确的统计信息,而RBO可能会选择不合适的索引。 定位高消耗资源的SQL是性能监控的关键。可以查看`v$sqlarea`视图中的逻辑读和磁盘读,或者监控CPU使用情况来找出问题SQL。追踪特定会话的SQL可以通过找到对应的`sid`和`serial#`,然后调用`dbms_system.set_sql_trace_in_session`进行。 SQL调整时,DBA主要关注逻辑读和I/O量,因为这两个指标直接影响查询效率。对于索引,B树是常见的索引结构,它对DML操作(INSERT、DELETE、UPDATE)有特定影响,如INSERT可能导致分裂,DELETE会标记删除节点,UPDATE会更新索引键值。使用索引并不总是能提升查询性能,当返回数据量大时,全表扫描可能更有效。 绑定变量是提高SQL效率的手段,它减少了因变量值变化而需解析的语句数量。然而,过度使用绑定变量可能导致执行计划不一致。为了固定执行计划,可以使用stored outline。 在Oracle 8i和9i中,排序内存的调整方式有所不同。8i中,通过sort_area_size和hash_area_size为每个session分配内存,而在9i中,这些内存由PGA(Program Global Area)统一管理。临时表空间主要用于无法在sort area完成的排序操作,如重建索引和创建临时表,当内存不足时,排序操作会溢出到磁盘的临时表空间。 这些题目全面地涵盖了Oracle DBA日常工作中可能遇到的问题,对于准备面试或提升技能的DBA来说具有很高的参考价值。