甲SQL调整集(STS)是一个数据库对象,其包括一个或多个SQL语句,执行统计数据,和执行上下文。本主题说明如何从STS加载计划。
使用DBMS_SPM.LOAD_PLANS_FROM_SQLSET
功能或使用Cloud Control 加载计划。下表描述了一些功能参数。
表28-7 LOAD_PLANS_FROM_SQLSET参数
功能参数 | 描述 |
---|---|
| 从中将计划加载到SQL计划基准中的STS的名称。 |
| 应用于STS的筛选器,仅选择要加载的合格计划。过滤器可以采用 |
| 默认 |
本节说明如何从命令行加载计划。在Cloud Control中,转到“ SQL计划基准”子页面(如图28-1所示),然后单击“ 加载”以从SQL调整集中加载计划基准。
假设条件
本教程假定以下内容:
- 您希望加载的计划是不固定的。
- 您已执行以下查询:
SELECT /*LOAD_STS*/ * FROM sh.sales WHERE quantity_sold > 40 ORDER BY prod_id;
复制 - 您已将计划从共享SQL区域加载到名为SQL的SQL调整集中
SPM_STS
,该调整集归用户所有SPM
。 - 操作之后,您要使用
DBMS_SQLTUNE.DROP_SQLSET
而不是等效的D 删除STSBMS_SQLSET.DROP_SQLSET
。
要从SQL调整集中加载计划,请执行以下操作:
- 使用适当的特权将SQL * Plus连接到数据库,然后验证SQL调优集中包含哪些计划。
例如,查询
DBA_SQLSET_STATEMENTS
STS名称(包括示例输出):SELECT SQL_TEXT FROM DBA_SQLSET_STATEMENTS WHERE SQLSET_NAME = 'SPM_STS'; SQL_TEXT -------------------- SELECT /*LOAD_STS*/ * FROM sh.sales WHERE quantity_sold > 40 ORDER BY prod_id
复制输出显示该
select /*LOAD_STS*/
语句的计划在STS中。 - 将计划从STS加载到SQL计划基准中。
例如,在SQL * Plus中,执行以下功能:
VARIABLE v_plan_cnt NUMBER EXECUTE :v_plan_cnt := DBMS_SPM.LOAD_PLANS_FROM_SQLSET( - sqlset_name => 'SPM_STS', - basic_filter => 'sql_text like ''SELECT /*LOAD_STS*/%''' );
复制该
basic_filter
参数指定一个WHERE
子句,该子句仅加载感兴趣的查询的计划。该变量v_plan_cnt
存储从STS加载的计划数量。 - 查询数据字典以确保计划已加载到语句的基线中。
以下语句查询
DBA_SQL_PLAN_BASELINES
视图(包括示例输出)。SQL> SELECT SQL_HANDLE, SQL_TEXT, PLAN_NAME, 2 ORIGIN, ENABLED, ACCEPTED 3 FROM DBA_SQL_PLAN_BASELINES; SQL_HANDLE SQL_TEXT PLAN_NAME ORIGIN ENA ACC --------------------- --------------- ---------------- -------------------- --- --- SQL_a8632bd857a4a25e SELECT SQL_PLAN_ahstb MANUAL-LOAD-FROM-STS YES YES /*LOAD_STS*/* v1bu98ky1694fc6b FROM sh.sales WHERE quantity_sold > 40 ORDER BY prod_id
复制输出显示该计划已被接受,这意味着它在计划基线中。另外,原点是
MANUAL-LOAD-FROM-STS
,这表示该计划是从SQL调整集中手动加载的,而不是自动捕获的。 - (可选)删除STS。
例如,执行以下
DBMS_SQLTUNE.DROP_SQLSET
操作删除SPM_STS
调整集:EXEC SYS.DBMS_SQLTUNE.DROP_SQLSET( sqlset_name => 'SPM_STS', - sqlset_owner => 'SPM' );
复制
也可以看看:
- “ SQL优化集的命令行界面 ”
- Oracle数据库参考以了解
DBA_SQL_PLAN_BASELINES
视图 - Oracle Database PL / SQL软件包和类型参考以了解该
DBMS_SPM.LOAD_PLANS_FROM_SQLSET
功能