当对一个任务或工作量识别一个空闲配置后,这个配置可以被作为模板进行保存。将来的任务可以基 于这个模板进行创建。
通过设置模板,当执行调整分析时可以节省时间。还能对业务操作制定一种合 适的调整分析。
为了使用模板创建任务,当创建新任务时需要指定要使用的模板。这时,SQL Access Advisor将从模 板中复制数据与参数到新创建的任务中。当创建任务时或使用dbms_advisor.update_task_attribute 过程来设置模板属性时可以将现有的任务设置为模板。
为了使用任务作为模板,可以告诉SQL Access Advisor当创建新任务时指定要使用的任务。在这时, SQL Access Advisor将复制任务模板的数据与参数设置到新创建的任务。可以通过设置模板属性将现 有的任务设置为模板。
工作量对象也可以用来作为模板来创建新的工作量对象。
创建模板
1.创建一个名叫my_template的模板
SQL> variable template_id number; SQL> variable template_name varchar2(255); SQL> execute :template_name := 'my_template'; PL/SQL procedure successfully completed template_name --------- my_template SQL> execute dbms_advisor.create_task('SQL Access Advisor',:template_id,:template_name, is_template => 'true'); PL/SQL procedure successfully completed template_id --------- 45357 template_name --------- my_template
2.设置模板参数
SQL> -- set naming conventions for recommended indexes/mvs SQL> execute dbms_advisor.set_task_parameter(:template_name, 'INDEX_NAME_TEMPLATE', 'SH_IDX$$_'); PL/SQL procedure successfully completed template_name --------- my_template SQL> execute dbms_advisor.set_task_parameter(:template_name, 'MVIEW_NAME_TEMPLATE', 'SH_MV$$_'); PL/SQL procedure successfully completed template_name --------- my_template SQL> -- set default tablespace for recommended indexes/mvs SQL> execute dbms_advisor.set_task_parameter(:template_name, 'DEF_INDEX_TABLESPACE', 'USERS'); PL/SQL procedure successfully completed template_name --------- my_template SQL> execute dbms_advisor.set_task_parameter(:template_name, 'DEF_MVIEW_TABLESPACE', 'USERS'); PL/SQL procedure successfully completed template_name --------- my_template
3.使用模板来创建任务
SQL> variable task_id number; SQL> variable task_name varchar2(255); SQL> execute :task_name := 'mytask'; PL/SQL procedure successfully completed task_name --------- mytask SQL> execute dbms_advisor.create_task('SQL Access Advisor', :task_id,:task_name, template=>'my_template'); PL/SQL procedure successfully completed task_id --------- 45376 task_name --------- mytask
下面的例子使用预先定义的模板SQLACCESS_WAREHOUSE来创建任务
execute dbms_advisor.create_task('SQL Access Advisor', :task_id, :task_name, template=>'SQLACCESS_WAREHOUSE');