SQL Access Advisor使您可以中断建议过程或使其完成。
出现中断信号通知SQL Access Advisor停止处理并将任务标记为INTERRUPTED
。此时,您可以更新推荐属性并生成脚本。
中间结果表示到该时间点为止的工作负载内容的建议。如果建议必须对整个工作量敏感,那么Oracle建议您让任务完成。此外,顾问在建议过程的早期提出的建议不包含基表分区建议。分区分析需要很大一部分工作量才能确定分区是否有益。因此,如果SQL Access Advisor检测到好处,则仅以后的中间结果包含基表分区建议。
本节描述了两种终止SQL Access Advisor任务执行的方式:
- 中断SQL Access Advisor任务 该
DBMS_ADVISOR.INTERRUPT_TASK
过程使SQL Access Advisor任务终止,就好像它已达到正常结束一样。 - 取消SQL Access Advisor任务 您可以通过调用
DBMS_ADVISOR.CANCEL_TASK
过程并为此推荐过程传递任务名称来停止任务执行。
25.4.4.1中断SQL Access Advisor任务
该DBMS_ADVISOR.INTERRUPT_TASK
过程使SQL Access Advisor任务执行终止,就好像它已达到正常结束一样。
因此,您可以看到直到中断点为止已经形成的所有建议。中断的任务无法重新启动。语法如下:
DBMS_ADVISOR.INTERRUPT_TASK (task_name IN VARCHAR2);
复制
假设条件
本教程假定以下内容:
MYTASK
当前正在执行长时间运行的任务。- 您要中断此任务,然后查看建议。
要中断当前正在执行的任务:
- 以方式将SQL * Plus连接到数据库
sh
,然后中断任务。例如,创建一个名称
MY_TEMPLATE
如下的模板:EXECUTE DBMS_ADVISOR.INTERRUPT_TASK ('MYTASK');
复制
也可以看看:
Oracle Database PL / SQL软件包和类型参考以了解该INTERRUPT_TASK
过程
25.4.4.2取消SQL Access Advisor任务
您可以通过调用DBMS_ADVISOR.CANCEL_TASK
过程并传递此推荐过程的任务名称来停止任务执行。
SQL Access Advisor可能需要几秒钟来响应此请求。因为所有顾问程序任务过程都是同步的,所以要取消操作,必须使用单独的数据库会话。如果使用CANCEL_TASK
,则SQL Access Advisor不提供任何建议。
取消命令有效地将任务恢复到开始取消操作之前的状态。因此,已取消的任务或数据对象无法重新启动。但是,您可以使用重置任务DBMS_ADVISOR.RESET_TASK
,然后再次执行它。的CANCEL_TASK
语法如下:
DBMS_ADVISOR.CANCEL_TASK (task_name IN VARCHAR2);
复制
该RESET_TASK
过程将任务重置为其初始起点,这具有从任务中删除所有建议和中间数据的作用。任务状态设置为INITIAL
。语法如下:
DBMS_ADVISOR.RESET_TASK (task_name IN VARCHAR2);
复制
假设条件
本教程假定以下内容:
MYTASK
当前正在执行长时间运行的任务。设置此任务是为了提出分区建议。- 您要取消此任务,然后将其重置,以便该任务仅提出索引建议。
要取消当前正在执行的任务:
- 以用户身份将SQL * Plus连接到数据库
sh
,然后取消任务。例如,创建一个名称
MY_TEMPLATE
如下的模板:EXECUTE DBMS_ADVISOR.CANCEL_TASK ('MYTASK');
复制 - 重置任务。
例如,执行以下
RESET_TASK
过程:EXECUTE DBMS_ADVISOR.RESET_TASK('MYTASK');
复制 - 设置任务参数。
例如,将分析范围更改
INDEX
为如下:EXECUTE DBMS_ADVISOR.SET_TASK_PARAMETER(:task_name, 'ANALYSIS_SCOPE', 'INDEX');
复制 - 执行任务。
例如,执行
MYTASK
如下:EXECUTE DBMS_ADVISOR.EXECUTE_TASK ('MYTASK');
复制
也可以看看:
Oracle数据库PL / SQL包和类型参考更多地了解RESET_TASK
和CANCEL_TASK