Oracle Database 11g:面向管理员的新增功能 4-2 Oracle Database 11g:面向管理员的新增功能 4-3 SQL 计划管理:概览 SQL 语句的 SQL 执行计划发生更改时,可能存在性能风险。 SQL 计划发生更改的原因有很多,如优化程序版本、优化程序统计信息、优化程序参数、方案定义、系统设计和 SQL 概要文件创建等。 已在以前版本的 Oracle DB 中引入了各种计划控制技术(如存储的大纲和 SQL 概要文件等),用于解决计划更改导致的性能回归。但是,这些技术都是需要手动干预的被动式 进程。 SQL 计划管理是一种随 Oracle Database 11g 引入的新功能,通过维护所谓的“SQL 计划基线”来使系统能够自动控制 SQL 计划演变。启用此功能后,只要证明新生成的 SQL 计划与 SQL 计划基线相集成不会导致性能回归,就可以进行此项集成。因此,在执行某个 SQL 语句时,只能使用对应的 SQL 计划基线中包括的计划。可以使用 SQL 优化集自动加载或植入 SQL 计划基线;本课稍后将对此进行说明。本课稍后还将讨论各种方案。 SQL 计划管理功能的主要优点是系统性能稳定,不会出现计划回归。此外,该功能还可以节省 DBA 的许多时间,这些时间通常花费在确定和分析 SQL 性能回归以及寻找可用的解决方案上。 Oracle Database 11g:面向管理员的新增功能 4-4 SQL 计划基线:体系结构 SQL 计划管理 (SPM) 功能引入了支持新计划的计划维护和性能验证所必需的基础结构和服务。 对于多次执行的 SQL 语句,优化程序会为单个 SQL 语句维护一个计划历史记录。优化程序通过维护语句日志来标识可重复的 SQL 语句。如果对某个已记录的 SQL 语句再次进行语法分析或再次执行该语句,则将该 SQL 语句标识为可重复的语句。将某个 SQL 语句标识为可重复之后,由优化程序生成的各种计划将作为包含相关信息(如 SQL 文本、大纲、绑定变量和编译环境等)的计划历史记录得以维护;优化程序将使用这些信息来复制执行计划。 作为自动识别可重复 SQL 语句及创建其计划历史记录的一种替代或补充,系统也支持为一系列 SQL 语句手动植入计划。 计划历史记录包含优化程序在某段时间内为 SQL 语句生成的不同计划。但是,只有计划历史记录中的部分计划可能被接受并得以使用。例如,正常情况下不会使用优化程序生成的新计划,除非该计划得到验证不会导致性能回归。在维护窗口中作为自动化任务运行自动 SQL 优化时,就会...