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

需积分: 10 3 下载量 175 浏览量 更新于2024-07-28 收藏 311KB DOC 举报
"Oracle面试题集合,涵盖SQL优化、索引管理、性能监控等多个方面,适合DBA面试准备。" 在Oracle数据库领域,面试时经常涉及的关键知识点包括SQL优化、索引原理、性能分析和调整策略。以下是对这些知识点的详细说明: 1. SQL优化: - 表连接方式:Oracle支持多种连接方式,如合并连接(Merge Join)、哈希连接(Hash Join)和嵌套循环连接(Nested Loop Join)。每种连接方式在不同的数据量和条件下的性能表现不同,DBA需要根据实际场景选择合适的方法。 - 查看SQL执行计划:在SQL*Plus中,通过设置`SET AUTOTRACE ON`或使用`UTLXPLAN.SQL`创建并使用`PLAN_TABLE`,可以查看SQL的执行计划,理解数据库如何执行查询。 2. CBO(Cost-Based Optimizer)与RBO(Rule-Based Optimizer): - CBO是基于成本的优化器,通过分析统计信息来决定最优的执行计划。可通过设置`optimizer_mode`初始化参数来选择CBO。RBO则依据预定义的规则选择执行路径,但可能不总是最优选择。 - RBO可能选取不合适的索引,而CBO依赖于准确的统计信息。 3. 定位资源消耗大的SQL: - 可通过`V$SQLAREA`视图监控逻辑读和磁盘读,以及查找CPU使用高的会话来找到问题SQL。 4. 跟踪特定session的SQL: - 找到对应`sid`和`serial#`后,调用`DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION`过程进行跟踪。 5. SQL调整重点: - 重点关注逻辑读和I/O量,因为它们直接影响查询性能。减少逻辑读和I/O通常可以提升查询速度。 6. 索引的理解: - B-Tree索引是最常见的类型,索引结构包含键值和对应的行指针。插入、删除和更新操作都会影响索引,可能导致分裂、标记删除和更新键值。 - 索引能加速查询,但非唯一索引可能导致全表扫描,而大量回写也可能降低DML性能。 7. 索引查询与性能: - 不一定所有查询都适合使用索引。当返回数据量大时,全表扫描可能更高效。 8. 绑定变量: - 绑定变量用于存储SQL语句中的变量值,减少因不同变量值导致的解析次数,提高性能。 - 优点是减少解析和优化开销,缺点是可能导致硬解析,当绑定变量的值差异大时。 9. 固定执行计划: - 使用stored outline可以锁定执行计划,防止因统计信息变化导致的计划变动。 10. 排序内存调整: - 在Oracle 8i中,通过`SORT_AREA_SIZE`和`HASH_AREA_SIZE`设置排序内存,每个会话独立分配。 - Oracle 9i引入`PGA_AGGREGATE_TARGET`统一管理,更灵活。 11. 临时表空间: - 临时表空间用于排序、聚合操作和创建临时段,当内存不足时,数据将写入临时表空间,提供额外的存储空间。 了解并掌握这些知识点对于处理Oracle数据库性能问题和面试至关重要。在实际工作中,DBA需要不断学习和实践,以适应不断变化的数据库环境。