1. 程式人生 > >SQL訪問顧問SAA(SQL Access Advisor)理論部分七:工作量增加SQL語句

SQL訪問顧問SAA(SQL Access Advisor)理論部分七:工作量增加SQL語句

向工作量增加SQL語句
一種替匯入工作量的方法是手動指定SQL語句並且使用dbms_advisor.add_sqlwkld_statement過程將 它們加入工作量。這個過程允許向指定的工作量增加SQL語句。語法如下:

dbms_advisor.add_sqlwkld_statement (
workload_name in varchar2,
module in varchar2,
action in varchar2,
cpu_time in number := 0,
elapsed_time in number := 0,
disk_reads in number := 0,
buffer_gets in number := 0,
rows_processed in number := 0,
optimizer_cost in number := 0,
executions in number := 1,
priority in number := 2,
last_execution_date in date := 'SYSDATE',
stat_period in number := 0,
username in varchar2,
sql_text in clob);

下面的例子向MYWORKLOAD工作量增加一個單獨的SQL語句:

variable sql_text varchar2(400);
execute :sql_text := 'select avg(amount_sold) from sales';
execute dbms_advisor.add_sqlwkld_statement ('MYWORKLOAD', 'MONTHLY', 'ROLLUP',  priority=>1, executions=>10,username => 'SH', sql_text => :sql_text);

從工作量中刪除SQL語句
使用dbms_advisor.delete_sqlwkld_statement過程可以從指定的工作量中刪除SQL語句。在刪除SQL 語句時需要指定sql_id。

dbms_advisor.delete_sqlwkld_statement (workload_name in varchar2,sql_id in number);

下面的例子將從MYWORKLOAD工作量中從郵sql_id為10的SQL語句:

execute dbms_advisor.delete_sqlwkld_statement('MYWORKLOAD', 10);

如果工作量當前被一個活動任務所引用,那麼工作量是不能被修改或刪除的。如果工作量不是處於初 始狀態,那麼就可以認為工作量處於活動狀態。dbms_advisor.reset_task過程可以將工作量設定為 初始狀態。

改變工作量中的SQL語句
可以通過dbms_advisor.update_sqlwkld_statement過程來修改工作量中的SQL語句。這個過程將會更 新指定工作量中的現有SQL語句。通過指定sql_id來更新SQL語句,語法如下:

dbms_advisor.update_sqlwkld_statement (
workload_name in varchar2,
sql_id in number,
application in varchar2 := null,
action in varchar2 := null,
priority in number := null,
username in varchar2 := null);


dbms_advisor.update_sqlwkld_statement (
workload_name in varchar2,
search in varchar2,
updated out number,
application in varchar2 := null,
action in varchar2 := null,
priority in number := null,
username in varchar2 := null);