SQL Monitor,你值得掌握的一個特性
對於線上的SQL語句,看著執行計劃cost還不錯,但是實際執行的時候效果卻有千壤之別,這是為什麼呢?
對於一個龐大的SQL語句,看著得到的執行計劃卻不知道瓶頸在哪裡,SQL語句太複雜,但是執行計劃更復雜,要讀明白它掌握要領也不是一件容易的事情。
碰到很多朋友問我,怎麼去讀一個執行計劃,這個無論說的怎麼細,似乎都不是很容易去理解,語言描述,純文字描述和圖形的效果還是有很大的差別。
如果你在11g的版本中,SQL Monitor就是一個大大的福利,你值得掌握,如果你還沒有好好掌握它,就實在太可惜了。
至於SQL Monitor更多的細節就不一一描述了,11g推出的這個特性其實和MySQL裡的慢日誌有些類似,MySQL裡面的閾值要更低一些,SQL Monitor是5秒。一旦達到這個標準,就會進收集到v$sql_monitor這個檢視中,可以得到詳細的會話資訊和執行計劃。
如果想單獨定製,那麼也不是一件難事。可以使用hint monitor來完成。比如這樣的形式
select /*+ monitor */ count(*) from emp where xxxxx
如果確認不需要放入監控範圍,也可以使用no_monitor來定製,比如這樣的形式
select /*+ no_monitor */ count(*) from emp where xxxxx
檢視生成的監控資訊,可以使用如下的方式:
select dbms_sqltune.report_sql_monitor from dual;
當然這些都是SQL Monitor常規的一些知識點,這些還不足以讓我興趣大開。我感興趣的是它強大的UI展現能力。當然聽起來這個似乎和這個特性好像關聯不大,你看到效果就知道了。一個很複雜,抽象的事物如果用圖形表示,要比文字豐富形象的多。
得到SQL Monitor的報告,大體有以下幾種格式。TEXT,HTML,ACTIVE三種
我們打一個比方。很多手機都會按照配置來冠以各種名號。
SQL Monitor的報告也是如此,TEXT格式是標準版,HTML是高配版,ACTIVE是尊享版
我們不來虛的,來實際看看效果。
文字格式的效果如下:
HTML格式的效果如下:
執行概覽,會話資訊,執行計劃一目瞭然,非常貼心。
那麼ACTIVE格式是什麼意思呢,大體就是最炫,最全面的效果,還有一個小的flash效果。
有的朋友可能看到會說,這和HTML的效果有啥差別啊,有的,我再給一張圖。
執行計劃原來可以這麼讀。全表掃描,索引掃描,表連線資訊都一目瞭然,越是複雜的執行計劃這種方式越省事。
SQL文字和繫結變數的資訊,點選SQL_ID就會彈出一個小視窗來。
好吧,看起來這麼炫,想得到這個報告難不難呢,很簡單就一個SQL語句就能搞定,絕對沒有標題黨的意思。
如果想寫成shell指令碼,也就是嵌入一個SQL語句即可。
tmp_sql_id=$1
sqlplus -s / as sysdba<<eof
set pages 0
set long 99999999
set linesize 300
col comm format a200
set long 99999
SELECT dbms_sqltune.report_sql_monitor(
sql_id => '${tmp_sql_id}',
report_level => 'ALL',
type=>'TEXT',
base_path =>''
) comm
FROM dual;
EOF
唯一的差別就是在type的地方。TEXT,HTML的就設定為TEXT,HTML即可。如果是ACTIVE格式的,這個我們得稍說一些背景。
這個功能在Enterprise Manager中檢視是很自然的一件事情,如果沒有安裝EM,我們不能因為這個專門去部署一個EM來不是。要達到同樣的效果,就需要連線網路下載相應的格式,當然退一步來說,要做以下的一些輔助工作,還可以下載幾個指令碼到本地即可。
比如我們設定一個本地的目錄結構,設定類似的站點 jeanron100
就需要在本地建立一個jeanron100的目錄
mkdir -p jeanron100/sqlmon
然後下載相應的指令碼
wget --mirror --no-host-directories --cut-dirs=1
wget --mirror --no-host-directories --cut-dirs=1
wget --mirror --no-host-directories --cut-dirs=1 http://download.oracle.com/otn_software/emviewers/scripts/document.js
wget --mirror --no-host-directories --cut-dirs=1
生成SQL語句的active報告語句如下:
SELECT dbms_sqltune.report_sql_monitor(
sql_id => '${tmp_sql_id}',
report_level => 'ALL',
type=>'ACTIVE',
base_path =>''
) comm
FROM dual;
把複製到的結果以HTML格式儲存,在本地的目錄下開啟即可。其實感興趣可以讀一下里面的內容,裡面大量使用了xml解析的方式。效果還是蠻不錯的。值得推薦。
</eof
對於一個龐大的SQL語句,看著得到的執行計劃卻不知道瓶頸在哪裡,SQL語句太複雜,但是執行計劃更復雜,要讀明白它掌握要領也不是一件容易的事情。
碰到很多朋友問我,怎麼去讀一個執行計劃,這個無論說的怎麼細,似乎都不是很容易去理解,語言描述,純文字描述和圖形的效果還是有很大的差別。
如果你在11g的版本中,SQL Monitor就是一個大大的福利,你值得掌握,如果你還沒有好好掌握它,就實在太可惜了。
至於SQL Monitor更多的細節就不一一描述了,11g推出的這個特性其實和MySQL裡的慢日誌有些類似,MySQL裡面的閾值要更低一些,SQL Monitor是5秒。一旦達到這個標準,就會進收集到v$sql_monitor這個檢視中,可以得到詳細的會話資訊和執行計劃。
如果想單獨定製,那麼也不是一件難事。可以使用hint monitor來完成。比如這樣的形式
select /*+ monitor */ count(*) from emp where xxxxx
如果確認不需要放入監控範圍,也可以使用no_monitor來定製,比如這樣的形式
select /*+ no_monitor */ count(*) from emp where xxxxx
檢視生成的監控資訊,可以使用如下的方式:
select dbms_sqltune.report_sql_monitor from dual;
當然這些都是SQL Monitor常規的一些知識點,這些還不足以讓我興趣大開。我感興趣的是它強大的UI展現能力。當然聽起來這個似乎和這個特性好像關聯不大,你看到效果就知道了。一個很複雜,抽象的事物如果用圖形表示,要比文字豐富形象的多。
得到SQL Monitor的報告,大體有以下幾種格式。TEXT,HTML,ACTIVE三種
我們打一個比方。很多手機都會按照配置來冠以各種名號。
SQL Monitor的報告也是如此,TEXT格式是標準版,HTML是高配版,ACTIVE是尊享版
我們不來虛的,來實際看看效果。
文字格式的效果如下:
HTML格式的效果如下:
執行概覽,會話資訊,執行計劃一目瞭然,非常貼心。
那麼ACTIVE格式是什麼意思呢,大體就是最炫,最全面的效果,還有一個小的flash效果。
有的朋友可能看到會說,這和HTML的效果有啥差別啊,有的,我再給一張圖。
執行計劃原來可以這麼讀。全表掃描,索引掃描,表連線資訊都一目瞭然,越是複雜的執行計劃這種方式越省事。
SQL文字和繫結變數的資訊,點選SQL_ID就會彈出一個小視窗來。
好吧,看起來這麼炫,想得到這個報告難不難呢,很簡單就一個SQL語句就能搞定,絕對沒有標題黨的意思。
如果想寫成shell指令碼,也就是嵌入一個SQL語句即可。
tmp_sql_id=$1
sqlplus -s / as sysdba<<eof
set pages 0
set long 99999999
set linesize 300
col comm format a200
set long 99999
SELECT dbms_sqltune.report_sql_monitor(
sql_id => '${tmp_sql_id}',
report_level => 'ALL',
type=>'TEXT',
base_path =>''
) comm
FROM dual;
EOF
唯一的差別就是在type的地方。TEXT,HTML的就設定為TEXT,HTML即可。如果是ACTIVE格式的,這個我們得稍說一些背景。
這個功能在Enterprise Manager中檢視是很自然的一件事情,如果沒有安裝EM,我們不能因為這個專門去部署一個EM來不是。要達到同樣的效果,就需要連線網路下載相應的格式,當然退一步來說,要做以下的一些輔助工作,還可以下載幾個指令碼到本地即可。
比如我們設定一個本地的目錄結構,設定類似的站點 jeanron100
就需要在本地建立一個jeanron100的目錄
mkdir -p jeanron100/sqlmon
然後下載相應的指令碼
wget --mirror --no-host-directories --cut-dirs=1
wget --mirror --no-host-directories --cut-dirs=1
wget --mirror --no-host-directories --cut-dirs=1 http://download.oracle.com/otn_software/emviewers/scripts/document.js
wget --mirror --no-host-directories --cut-dirs=1
生成SQL語句的active報告語句如下:
SELECT dbms_sqltune.report_sql_monitor(
sql_id => '${tmp_sql_id}',
report_level => 'ALL',
type=>'ACTIVE',
base_path =>''
) comm
FROM dual;
把複製到的結果以HTML格式儲存,在本地的目錄下開啟即可。其實感興趣可以讀一下里面的內容,裡面大量使用了xml解析的方式。效果還是蠻不錯的。值得推薦。
</eof
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-2139015/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 掌握SQL Monitor這些特性,SQL最佳化將如有神助!SQL
- sql monitor的使用(一)SQL
- [譯]隱式轉型,你值得掌握
- mysql的三個sql的monitor選項MySql
- 【SQL】Oracle SQL monitorSQLOracle
- 排名前10的vue前端UI框架框架值得你掌握Vue前端UI框架
- HTTP 【值得你看個究竟】HTTP
- Oracle Real Time SQL MonitorOracleSQL
- 【譯】下一個你值得認真嘗試的框架 —— Sapper框架APP
- Newtonsoft 六個超簡單又實用的特性,值得一試 【上篇】
- Newtonsoft 六個超簡單又實用的特性,值得一試 【下篇】
- 使用sql monitor獲取更加詳細的執行計劃 - dbms_sqltune.report_sql_monitorSQL
- 8個值得關注的SQL-on-Hadoop框架SQLHadoop框架
- Java Annotation 必須掌握的特性Java
- 天天寫 SQL,這些神奇的特性你知道嗎?SQL
- 20個值得一試的JavaScript框架JavaScript框架
- 11g新動態效能檢視V$SQL_MONITOR,V$SQL_PLAN_MONITORSQL
- 深度掌握 Java Stream 流操作,讓你的程式碼高出一個逼格!Java
- 涉及到一個deadlock event monitor的問題
- HTTP/2有哪些值得期待的特性HTTP
- PHP 7 值得期待的新特性(上)PHP
- PHP 7 值得期待的新特性(下)PHP
- 10個你在JavaScript面試前需要掌握的概念JavaScript面試
- 10 個你必須掌握的超酷 VI 命令技巧
- SQL Monitor Report 使用詳解SQL
- Oracle SQL調優系列之SQL Monitor ReportOracleSQL
- Statement Tracer For Oracle 與 SQL Monitor 的比較OracleSQL
- 一文帶你快速掌握AQSAQS
- 你應該遠離的6個Java特性Java
- PHP 8 有哪些值得期待的新特性PHP
- 快速掌握iOS API的一個小技巧iOSAPI
- Android,你要掌握的一些東西Android
- plsql developer工具生成sql monitor reportSQLDeveloper
- 生成sql monitor active report指令碼SQL指令碼
- Monitor All SQL Queries in MySQL (alias mysql profiler)MySql
- Monitor Current SQL Running(10g)SQL
- 大神說Scala是個有趣的語言 你值得擁有
- 寫的一個SQLSQL