11g新特性-自动sql调优(Automatic SQL Tuning)
11g新特性-自動(dòng)sql調(diào)優(yōu)(Automatic SQL Tuning)
在Oracle 10g中,引進(jìn)了自動(dòng)sql調(diào)優(yōu)特性。此外,ADDM也會(huì)監(jiān)控捕獲高負(fù)載的sql語(yǔ)句。
在Oracle 11g中,通過運(yùn)行sql tuning advisor加強(qiáng)了自動(dòng)sql調(diào)優(yōu)功能。默認(rèn)情況下是每天夜間通過自動(dòng)任務(wù)的方式運(yùn)行”自動(dòng)sql調(diào)優(yōu)“。
?
自動(dòng)sql調(diào)優(yōu)的過程:
1.識(shí)別需要調(diào)優(yōu)的sql語(yǔ)句 ?根據(jù)AWR中的CPU和I/O負(fù)載來識(shí)別
2.調(diào)優(yōu),生成新的sql profile ?
在維護(hù)窗口(maintenance window),自動(dòng)sql調(diào)優(yōu)任務(wù)運(yùn)行時(shí),上一步識(shí)別出的sql語(yǔ)句會(huì)被“sql tuning advisor”調(diào)優(yōu)。并產(chǎn)生相應(yīng)的sql profiles。如果發(fā)現(xiàn)有統(tǒng)計(jì)信息丟失或過期,會(huì)通知GATHER_STATS_JOB
3.測(cè)試新的sql profile ?benefit%=(time_old – time_new)/(time_old)
4.執(zhí)行符合標(biāo)準(zhǔn)的新的sql profile ?
可以查看dba_sql_profiles,有哪些sql profiles是被數(shù)據(jù)庫(kù)自動(dòng)執(zhí)行的(type 列)
5.DBA可以產(chǎn)生自動(dòng)sql調(diào)優(yōu)活動(dòng)的報(bào)告。可以確認(rèn)產(chǎn)生的sql profile是否有效、刪除新產(chǎn)生的sql profile等。
自動(dòng)sql調(diào)優(yōu)不會(huì)進(jìn)行調(diào)優(yōu)的sql:
-Ad hoc語(yǔ)句和很少重復(fù)執(zhí)行的sql
-并行查詢
-長(zhǎng)時(shí)間運(yùn)行的查詢。對(duì)于長(zhǎng)時(shí)間運(yùn)行的sql,如果使用產(chǎn)生的sql profile進(jìn)行測(cè)試,還是會(huì)需要長(zhǎng)時(shí)間運(yùn)行,就會(huì)忽略這樣的sql。如果使用新產(chǎn)生的sql profile會(huì)顯著減少時(shí)間,就不會(huì)忽略這類長(zhǎng)時(shí)間運(yùn)行的sql。
-遞歸sql
-DDL語(yǔ)句
-使用了insert、delete的DML語(yǔ)句 上面的語(yǔ)句,可以手動(dòng)使用SQL Tuning Advisor進(jìn)行調(diào)優(yōu)。
上面的語(yǔ)句,可以手動(dòng)使用SQL Tuning Advisor進(jìn)行調(diào)優(yōu)。
?
配置自動(dòng)sql調(diào)優(yōu)
使用dbms_sqltune包進(jìn)行配置。 在maintenance window,自動(dòng)sql調(diào)優(yōu)特性會(huì)啟動(dòng)一個(gè)job(sys_auto_sql_tuning_task)。產(chǎn)生一個(gè)需要調(diào)優(yōu)的sql 列表,然后根據(jù)重要性一次進(jìn)行調(diào)優(yōu)。 一般這個(gè)job會(huì)運(yùn)行一小時(shí),可以設(shè)置該job設(shè)置: dbms_sqltune.set_tuning_task_parameter('SYS_AUTO_SQL_TUNING_TASK','TIME_LIMIT',7200);
begindbms_sqltune.set_tuning_task_parameter('SYS_AUTO_SQL_TUNING_TASK','LOCAL_TIME_LIMIT',1400);dbms_sqltune.set_tuning_task_parameter('SYS_AUTO_SQL_TUNING_TASK','ACCEPT_SQL_PROFILES','TRUE');dbms_sqltune.set_tuning_task_parameter('SYS_AUTO_SQL_TUNING_TASK','MAX_SQL_PROFILES_PER_EXEC',50);dbms_sqltune.set_tuning_task_parameter('SSY_AUTO_SQL_TUNING_TASK','MAX_AUTO_SQL_PROFILES',10002); end;?管理自動(dòng)sql調(diào)優(yōu)任務(wù)
1.開啟自動(dòng)sql調(diào)優(yōu)
begindbms_auto_task_admin.enable(client_name => 'sql tuning advisor',operation => 'NULL',#在所有維護(hù)窗口都開啟window_name => 'NULL'); end;2.關(guān)閉自動(dòng)sql調(diào)優(yōu)
begindbms_auto_task_admin.disable(client_name => 'sql tuning advisor',operation => 'NULL',window_name => 'NULL'); end;生成文本格式的自動(dòng)sql調(diào)優(yōu)建議報(bào)告:
SQL> variable my_rept CLOB; SQL> begin :my_rept := dbms_sqltune.report_auto_tuning_task(begin_exec=>NULL,end_exec=>NULL,type=>'TEXT',level=> 'TYPICAL',section=>'ALL',object_id=>NULL,result_limit=>NULL);end; SQL> print :my_rept相關(guān)視圖:
-DBA_ADVISOR_EXECUTIONS-DBA_ADVISOR_SQLSTATS
-DBA_ADVISOR_SQLPLANS ?
?
轉(zhuǎn)載于:https://www.cnblogs.com/wangchaoyuana/p/7532070.html
總結(jié)
以上是生活随笔為你收集整理的11g新特性-自动sql调优(Automatic SQL Tuning)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【系列7】使用Dockerfile创建带
- 下一篇: 智慧城市建设亟待突破大数据瓶颈