5、使用STA优化awr中SQL的脚本
robin@SZDB:~/dba_scripts/custom/sql> more tune_awr_sql.sql
SET ECHO OFF TERMOUT ON FEEDBACK OFF VERIFY OFF
SET SCAN ON PAGESIZE 9999
SET LONG 1000000 LINESIZE 180
COL recs FORMAT a145
VARIABLE tuning_task VARCHAR2(30)
DECLARE
l_sql_id v$session.prev_sql_id%TYPE:='&input_sql_id';
BEGIN
:tuning_task := dbms_sqltune.create_tuning_task(sql_id => l_sql_id,
begin_snap=>&input_begin_snap,
end_snap=>&input_end_snap,
task_name=>'&input_task_name');
dbms_sqltune.execute_tuning_task(:tuning_task);
END;
/
SELECT dbms_sqltune.report_tuning_task(:tuning_task) as recs
FROM dual;
SET VERIFY ON FEEDBACK ON
6、小结
a、SQL优化器在tuning模式下不会对原始SQL语句文本做任何修改。
b、对于使用STA优化的SQL语句,SQL优化器会转换优化器的模式或移除添加hint(如本例是忽略hint)以实现优化。
c、SQL profile会纠正查询优化器对基数的错误评估。
d、对于统计信息缺失或过时或根本不存在统计信息的情形,SQL优化器会给出建议以获取真实的统计信息。
e、SQL profile能够被导入导出。导出之前,该profile必须先被accept。
f、SQL profile所依赖的对象被删除后,SQL profile并不会被删除。但如果使用drop user username cascade时是例外。