要创建SQL调整任务,请执行该DBMS_SQLTUNE.CREATE_TUNING_TASK
功能。
您可以通过以下任意方式创建调整任务:
- 单个SQL语句的文本
- 包含多个语句的SQL调优集
- 由SQL标识符从共享SQL区域中选择的SQL语句
- 由AWR的SQL标识符选择的SQL语句
该scope
参数是此功能最重要的参数之一。您可以将此参数设置为以下值:
LIMITED
SQL Tuning Advisor根据统计检查,访问路径分析和SQL结构分析产生建议。不会生成SQL配置文件建议。
COMPREHENSIVE
SQL Tuning Advisor会在有限范围内加上SQL性能分析,执行其执行的所有分析。
假设条件
本教程假定以下内容:
- 您想以
hr
具有ADVISOR
特权的用户身份进行调优。 - 您要调整以下查询:
SELECT /*+ ORDERED */ * FROM employees e, locations l, departments d WHERE e.department_id = d.department_id AND l.location_id = d.location_id AND e.employee_id < :bnd;
- 您要将绑定变量传递
100
给前面的查询。 - 您希望SQL Tuning Advisor执行SQL分析。
- 您希望任务运行不超过60秒。
要创建SQL调整任务:
- 使用适当的权限将SQL * Plus连接到数据库,然后运行该
DBMS_SQLTUNE.CREATE_TUNING_TASK
函数。例如,执行以下PL / SQL程序:
DECLARE my_task_name VARCHAR2(30); my_sqltext CLOB; BEGIN my_sqltext := 'SELECT /*+ ORDERED */ * ' || 'FROM employees e, locations l, departments d ' || 'WHERE e.department_id = d.department_id AND ' || 'l.location_id = d.location_id AND ' || 'e.employee_id < :bnd'; my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK ( sql_text => my_sqltext , bind_list => sql_binds(anydata.ConvertNumber(100)) , user_name => 'HR' , scope => 'COMPREHENSIVE' , time_limit => 60 , task_name => 'STA_SPECIFIC_EMP_TASK' , description => 'Task to tune a query on a specified employee' ); END; /
- (可选)查询任务的状态。
以下示例查询当前用户拥有的所有任务的状态,在本示例中为
hr
:COL TASK_ID FORMAT 999999 COL TASK_NAME FORMAT a25 COL STATUS_MESSAGE FORMAT a33 SELECT TASK_ID, TASK_NAME, STATUS, STATUS_MESSAGE FROM USER_ADVISOR_LOG;
输出示例如下:
TASK_ID TASK_NAME STATUS STATUS_MESSAGE ------- ------------------------- ----------- -------------- 884 STA_SPECIFIC_EMP_TASK INITIAL
在前面的输出中,
INITIAL
状态指示任务尚未开始执行。
也可以看看:
Oracle Database PL / SQL软件包和类型参考以了解该DBMS_SQLTUNE.CREATE_TUNING_TASK
功能
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。