標籤:
Oracle SQL 調優健全狀態檢查指令碼
我們關注資料庫系統的效能,進行資料庫調優的主要工作就是進行SQL的最佳化。良好的資料架構設計、配合應用系統中介軟體和寫一手漂亮的SQL,是未來系統上線後不出現致命效能問題的有力保證。
在CBO時代,一個SQL的執行計畫是多樣的。影響執行計畫的因素也從過去RBO時代的SQL書寫規則變為綜合性因素。這為我們產生更加優秀執行計畫提供了基礎,同時也給我們進行調優帶來的很多麻煩。
目前我們通常的做法,是通過AWR報告或者調試手段,發現某某SQL有問題,之後從Library Cache(或者AWR)中抽取出執行計畫。同時相對應的各種統計資訊也需要手工收集。
在MOS[ID 1366133.1]中,發現一個Oracle非公開使用的指令碼,可以協助我們一次性的將執行SQL相關的健康資訊全部收集,並且輸出為HTML格式檔案。本篇就介紹這個指令碼工具,也當作是一種推廣。
1、環境準備
我們選擇Oracle 10g作為實驗環境。
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0–Production
構造一個實驗SQL,用來進行示範。
SQL> select /*+ demo */ emp.empno, emp.ename, dept.dname
2 from emp, dept
3 where emp.deptno=dept.deptno;
EMPNO ENAME DNAME
----- ---------- --------------
7369 SMITH RESEARCH
7934 MILLER ACCOUNTING
(篇幅原因,結果集合省略……)
--此時,該SQL已經存在於Library Cache中;
SQL> select sql_id from v$sqlarea where sql_text like ‘select /*+ demo */%‘;
SQL_ID
-------------
auurp0v54vjgc
2、呼叫指令碼
我們從網站上可以下載到產生指令碼sqlhc.sql(SQL Tuning Health-Check Script. [ID 1366133.1])。之後在sqlplus裡調用。
D:\test>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 12月 28 22:10:18 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn sys/[email protected] as sysdba
已串連。
SQL> @sqlhc.sql
--許可證擁有標識;
Parameter 1:
Oracle Pack license (Tuning or Diagnostics) [Y|N] (required)
輸入1 的值: N
PL/SQL 過程已成功完成。
--進行檢查的SQL_ID編號;
Parameter 2:
SQL_ID of the SQL to be analyzed (required)
輸入2 的值: auurp0v54vjgc
之後就是產生html格式報告的過程,最後會以組建檔案名稱的方式通知。
SQLTH file has been created:
sqlhc_orcl_ibmvs2a1bhcns0_10.2.0.1.0_auurp0v54vjgc_20111228221121.html.
Review this file and act upon its content.
SQL>
這樣在指定目錄下,我們就可以找到產生的html格式報告檔案。
D:\test>dir
磁碟機 D 中的卷沒有標籤。
卷的序號是 CA23-1191
D:\test 的目錄
2011-12-28 22:11 <DIR> .
2011-12-28 22:11 <DIR> ..
2011-12-28 22:11 101,335 sqlhc.log
2011-12-28 21:49 109,841 sqlhc.sql
2011-12-28 22:11 10,140 sqlhc_orcl_ibmvs2a1bhcns0_10.2.0.1.0_auurp0v
54vjgc_20111228221121.html
3 個檔案 221,316 位元組
2 個目錄 2,439,000,064 可用位元組
3、結果報告分析
在報告中,主要分為三個部分。
首先,後台環境參數設定。其中包括該SQL設計使用的最佳化器和相關的資料表統計量選取基準。
其次就是相關設計資料表、索引的統計量資訊。
最後是使用的執行計畫資訊。
4.結論
使用SQL Tuning Heath-Check指令碼,可以協助我們方便的將相關SQL的執行計畫和統計資訊一併抽出。作為我們進行效能調試的依據。
但是,筆者強調的是,作為調優人員,對基礎知識、原理的理解是非常重要的。工具、指令碼只是協助我們日常效率提升的一個手段而已。
http://dev.yesky.com/183/30968683.shtml
Oracle SQL 調優健全狀態檢查指令碼