ORACLE 性能优化包 11G 主要特性 : SQL Tuning Advisor 自动运行的 SQL Tuning Advisor SQL 监测 SQL Access Advisor SQL 调优集 对象重组向导 主要优势 : 主要特性与优势 为应用程序和 SQL 调优 提供了全面的解决方案, 不再需要手动调优 提供了 SQL 语句的自动 优化 增强了系统性能和可靠 性, 并显著降低了管理 成本 对数据库管理员和应用程序开发人员而言, 应用程序调优是一个非常重要的领域, 他们有相当多的时间花费在执行这个非常重要的功能上 一个没有调优的业务应用程序不仅会对很多用户造成潜在影响, 而且可能影响到整个业务操作, 因此公司投入了大量资源来确保对业务至关重要的应用程序的顺利运行 Oracle 性能优化包 (Oracle 数据库 11g 产品集的一部分 ) 提供了一个经济高效且易于使用的解决方案, 能够实现整个应用程序调优过程的自动化 利用企业管理器中无缝集成的 SQL Advisor 功能,SQL 性能得到了增强, 为复杂 费时的应用程序自动调优任务提供了一个全面的解决方案 SQL Tuning Advisor SQL 手动调优是一个复杂的过程, 它提出了许多挑战 这一工作不但非常耗 时, 而且需要调优者具备几个领域的专业知识, 并熟知 schema 结构和应用程 序的数据模型 所有这些因素都使得 SQL 手动调优成为一项极具挑战性且资 源密集型的工作, 其结果是企业几乎无法承受 SQL Tuning Advisor 是 Oracle 为应对 SQL 手动调优的所有缺陷和挑战而推出的解决方案 它通过全面探索优化 SQL 语句的所有可能方法实现了 SQL 调优过程的自动化 分析和调优是由数据库引擎经过显著增强的查询优化程序完成的 SQL Tuning Advisor 执行四种类型的分析 : 统计信息分析 : 查询优化程序需要最新的对象统计信息, 以生成良好的执行计划 在这种分析中, 将识别统计信息陈旧或缺失的对象, 并提供解决该问题的适当建议 SQL 监测 : 这是在 Oracle 数据库 10g 中引进的新特性, 它彻底改变了 SQL 调优的方法 传统的 SQL 调优需要利用优化程序提示来手动处理应用程序代码 SQL 监测消除了对这种手动过程的依赖, 并且可以在不更改应用程序代码的前提下优化 SQL 语句 这种无需更改应用程序代码即可优化 SQL 的功能还有助于解决优化打包应用程序的问题 现在, 打包应用程序的用户不再需要记录错误 1
并将其报告给应用程序供应商, 然后等待几个星期或几个月来获得代码补丁以调优语句 利用 SQL 监测, 可立即自动执行调优过程 访问路径分析 : 索引可以通过减少全表扫描极大地提高 SQL 语句的性能 因此, 创建高效的索引是一种常见的调优技巧 在这种分析中, 将识别和推荐能够显著提高查询性能的新索引 SQL 结构分析 :SQL 语句结构存在的问题可能导致性能不佳 这些问题包括语句的语法 语义或设计等问题 在这种分析中, 将提供相关的建议来重新构造选定的 SQL 语句的结构以提高性能 这种分析的输出形式为建议, 与建议同时输出的还有每条建议的理由及其预期的性能收益 这些建议涉及对象统计信息的收集 新索引的创建 SQL 语句的重新构建或 SQL 监测的创建 用户可以选择接受建议来完成 SQL 语句的优化 图 1: SQL Tuning Advisor 建议页面 SQL Tuning Advisor 为执行 SQL 调优提供了一种强大 直观 用户友好的方式 SQL 语句的优化不必再依赖专家来完成了 Oracle 已经在数据库引擎内部构建了一个可为数据库管理员完成这一十分重要职能的调优专家, 其所用时间和成本只是手动调优的一小部分 自动运行的 SQL Tuning Advisor SQL Tuning Advisor 还能够以自动模式运行 在该模式中,Advisor 在系统维护时作为维护任务自动运行 在每次运行中,Advisor 会选择系统中的高负载 SQL 查询, 并生成优化这些查询的建议 可以将自动运行的 SQL Tuning Advisor 配置为自动实施 SQL 监测建议 如果您启用自动实施,Advisor 将仅为性能提高至少为 3 倍的 SQL 语句创建 SQL 监测 其他类型的建议, 如创建新索引或刷新调优程序统计信息或重新 2
构建 SQL, 只能手动实施 DML 语句的优化不在自动运行的 SQL Tuning Advisor 调优的考虑范围内 您可以查看指定时间段 ( 如最近 7 天 ) 内 SQL 自动调优的结果汇总, 还可以查看对所有处理的 SQL 语句生成的详细建议 然后就可以手动有选择地实施建议 您还可以查看自动实施的建议 可以将自动运行的 SQL Tuning Advisor 配置为在所有维护窗口运行或根据需要完全禁用 图 2: 自动运行的 SQL 调优报告 SQL 调优集 SQL Advisor 旨在接受不同 SQL 来源 ( 如自动数据库诊断监视程序 [ADDM] 自动负载信息库 [AWR] 游标缓存和用户自定义的 SQL) 的输入 使用该工具, 用户几乎可以优化所有关注的 SQL 语句 通常先将这些输入源的 SQL 语句加载到一个称为 SQL 调优集的新对象中, 然后将这个对象作为输入提交给该工具 SQL 调优集 (STS) 是一种新的数据库对象, 用于收集 SQL 负载信息 它包 括 : 一条或多条 SQL 语句 相关的执行环境 ( 如用户模式 绑定值列表等 ) 相关的基本执行统计信息 ( 如已用时间 CPU 时间等 ) 3
图 3: 管理 SQL 调优集 SQL 调优集提供了采集 管理和优化 SQL 负载的基本框架 它们允许有选择地按需优化系统生成和定制 ( 用户定义 ) 的负载, 并大大简化了优化多条 SQL 语句的工作 利用 SQL 调优集, 用户可以捕获感兴趣的任意 SQL 语句, 并将它们存储在一个 STS 中, 以便将来进行调优 它们不再需要为调优目的而手动构建和维护 SQL 脚本 另外, 使用 STS 中捕获的与执行环境相关的信息和统计信息, 还可以实现比任何定制 SQL 脚本更出色 更高效的调优 SQL Access Advisor 数据库模式的设计会对应用程序的整体性能产生很大的影响 SQL Access Advisor 为如何优化模式设计以获得最佳应用程序性能提供了全面的建议 SQL Access 与 SQL Tuning Advisor 一起为调优数据库应用程序提供了一个完整的解决方案 这两个顾问工具一起自动化了当前应用的所有手动调优技巧, 并一起构成了 Oracle SQL 自动调优解决方案的核心 SQL Access Advisor 可以接受相关的所有源 ( 如游标缓存 自动负载信息库 [AWR] 任何用户定义的负载) 的输入, 并且如果模式包含了维度或主键 / 外键关系, 甚至会生成假想负载 它将全面分析整个负载, 并根据需要提供创建新分区或索引的建议, 删除未使用的索引, 创建新的物化视图和物化视图日志 确定特定负载的最优分区或索引策略是一个需要专业知识和时间的复杂过程 SQL Access Advisor 除考虑查询的成本外, 还考虑了插入 / 更新 / 删除操作的成本, 并提供了适当的建议 可量化的预期性能收益, 以及实施建议所需的脚本 4
图 4 显示了 SQL Access Advisor 的建议页面 这些建议按负载改善系数排 序 用户可以选择一个或所有的建议, 且只需单击 Implement 按钮即可实施所 选建议 图 4: SQL Access Advisor 建议页面 SQL Access Advisor 消除了访问结构设计过程的神秘性 它可以准确地告诉用户获得最佳应用程序性能所需的索引 分区和物化视图的类型 通过自动化这个非常重要的功能,SQL Access Advisor 使得管理员不再需要易于出错 冗长且昂贵的手动调优过程 它快速 精确 易于使用, 并且与 SQL Tuning Advisor 一起为应用程序性能优化提供了最准确 最经济的解决方案 对象重组向导 Oracle 性能优化包 11g 还提供了重组对象的能力 通过删除浪费的空 间 有效管理表空间的空间利用率, 不仅是好的空间管理方法, 而且还通 过减少不必要的磁盘 I/O 提高了性能 重组用于 : 重新构建碎片式的索引和表 将对象重新定位到另一个表空间 利用优化的存储属性重新创建对象 Oracle 性能优化包 11g 提供了一个可以在模式和表空间级执行重组的向导, 并提供了联机和脱机重组的选择 该向导还提供了一个影响分析报告, 以及一个包含了要执行操作的检查脚本 这有助于用户在实施操作之前准确理解其含义 5
Oracle 性能优化包 11G 图 5 显示了重组向导 EM 界面 相关产品和服务 : Oracle 性能优化包 11g 与以下 Oracle 产品协同使用时可以发挥最大的效用 : Oracle 诊断包 Oracle 配置管理包 Oracle 供应包 Oracle 数据库变更管理包 Oracle 真正应用测试选件 图 5: 对象重组向导 版权所有 2007,Oracle 保留所有权利 本文档仅用于提供信息, 此处内容若有更改恕不另行通知 本文档不保证没有错误, 也不受其他任何口头表达或法律暗示的担保或条件的约束, 包括对特定用途的适用性的暗示担保和条件 我们特别声明, 拒绝承担与本文档有关的任何责任, 并且本文档不构成任何直接或间接的契约义务 未经我们事先的书面许可, 不得以任何形式或方法 ( 电子或机械方法 ) 为任何目的复制或传输本文档 Oracle 是 Oracle Corporation 和 / 或其分支机构的注册商标 其他名称可能是其各自所有者的商标 6