通過shell指令碼定位效能sql和生成報告
可以通過如下的指令碼來定位sql monitor中的效能sql,發現一些潛在的效能問題。
這個指令碼可以定位正在sql monitor監控範圍內的sql語句。
MONITOR_OWNER=`sqlplus -silent $DB_CONN_STR@$SH_DB_SID <
set linesize 200
col status format a20
col username format a15
col module format a20
col program format a25
col sql_id format a20
col sql_text format a20
select sql_id,STATUS , USERNAME , MODULE , PROGRAM, substr(SQL_TEXT,0,20) sql_text from v\\$sql_monitor where username =upper('$1') group by sql_id,STATUS , USERNAME , MODULE , PROGRAM, substr(SQL_TEXT,0,20);
exit;
END`
if [ -z "$MONITOR_OWNER" ]; then
echo "no object exists, please check again"
exit 0
else
echo '*******************************************'
echo " $MONITOR_OWNER "
echo '*******************************************'
fi
指令碼執行結果如下,可以顯示sql_id和狀態,還有簡單的sql語句。
尤其可以重點關注那些正在執行的語句。
SQL_ID STATUS USERNAME MODULE PROGRAM SQL_TEXT
-------------------- -------------------- --------------- -------------------- ------------------------- --------------------
7u9gsk798bvrp DONE (ALL ROWS) TEST_USER JDBC Thin Client JDBC Thin Client SELECT AA.DATA_GRO
cjqdgd14xjwjm DONE (ALL ROWS) TEST_USER JDBC Thin Client JDBC Thin Client SELECT TO_CHAR (SUBS
2zymmn3s4xn1k DONE (ALL ROWS) TEST_USER JDBC Thin Client JDBC Thin Client SELECT nrg."Cyc
1hg2wcuapy3y3 EXECUTING TEST_USER JDBC Thin Client JDBC Thin Client select d1_run_reque
可以採用如下的指令碼
MONITOR_OWNER=`sqlplus -silent $DB_CONN_STR@$SH_DB_SID <
set linesize 200
col status format a20
col username format a15
col module format a20
col program format a25
col sql_id format a20
col sql_text format a20
select sql_id,STATUS , USERNAME , MODULE , PROGRAM, substr(SQL_TEXT,0,20) sql_text from v\\$sql_monitor where sql_id='$1' group by sql_id,STATUS , USERNAME , MODULE , PROGRAM, substr(SQL_TEXT,0,20) ;
exit;
END`
if [ -z "$MONITOR_OWNER" ]; then
echo "no object exists, please check again"
exit 0
else
echo '*******************************************'
echo " $MONITOR_OWNER "
echo '*******************************************'
fi
sqlplus -silent $DB_CONN_STR@$SH_DB_SID <
set pages 0
set linesize 200
col status format a20
col username format a30
col module format a20
col program format a20
col sql_id format a20
col sql_text format a50
col comm format a200
set long 999999
SELECT dbms_sqltune.report_sql_monitor(
sql_id => '$1',
report_level => 'ALL',
type=>'TEXT'
) comm
FROM dual;
EOF
如果要檢視html格式的,直接替換上述標黃的部分為HTML即可。
生成的報告可讀性很好,可以很容易看到瓶頸倒底在哪兒
SQL Monitoring Report
SQL Text
xxxxxxxxxxxxxx
Global Information: DONE (ALL ROWS)Instance ID | : | 1 |
|
||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Session | : | xxxxxxxx (4940:57969) | |||||||||||||||||||||
SQL ID | : | cjqdgd14xjwjm | |||||||||||||||||||||
SQL Execution ID | : | 16783859 | |||||||||||||||||||||
Execution Started | : | 07/17/2014 14:48:09 | |||||||||||||||||||||
First Refresh Time | : | 07/17/2014 14:48:15 | |||||||||||||||||||||
Last Refresh Time | : | 07/17/2014 14:48:20 | |||||||||||||||||||||
Duration | : | 11s | |||||||||||||||||||||
Module/Action | : | JDBC Thin Client/- | |||||||||||||||||||||
Service | : | SYS$USERS | |||||||||||||||||||||
Program | : | JDBC Thin Client | |||||||||||||||||||||
PL/SQL Entry Ids | : | 2455820,1 | |||||||||||||||||||||
PL/SQL Ids (Obj/Sub) | : | 2455820,1 | |||||||||||||||||||||
Fetch Calls | : | 2 |
Binds
Name | Position | Type | Value |
---|---|---|---|
:B2 | 1 | NUMBER | 10308170 |
:B1 | 2 | NUMBER | 6 |
SQL Plan Monitoring Details (Plan Hash Value=1125972187)
Id | Operation | Name |
Estimated Rows |
Cost |
Active Period (11s) |
Execs | Rows |
Memory (Max) |
Temp (Max) |
IO Requests | CPU Activity | Wait Activity | |||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
. |
0 | SELECT STATEMENT |
. |
. |
. |
|
1 | 1 |
. |
. |
|
. |
. |
||
. |
1 | . SORT ORDER BY |
. |
6 | 67758 |
|
1 | 1 | 2.0KB |
. |
|
. |
. |
||
. |
2 | .. COUNT STOPKEY |
. |
. |
. |
|
1 | 1 |
. |
. |
|
. |
. |
||
. |
3 | ... VIEW | xxxxxxxxxxxxx | 577K | 59898 |
|
1 | 1 |
. |
. |
|
. |
. |
||
. |
4 | .... SORT UNIQUE STOPKEY |
. |
577K | 59898 |
|
1 | 1 | 2.0KB |
. |
|
. |
. |
||
. |
5 | ..... UNION-ALL |
. |
. |
. |
|
1 | 1 |
. |
. |
|
. |
. |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1221309/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [ Shell ] 通過 Shell 指令碼匯出 CDL 網表指令碼
- 通過shell指令碼防止埠掃描指令碼
- [ Shell ] 通過 Shell 指令碼匯出 GDSII/OASIS 檔案指令碼
- 通過shell指令碼和企業微信實現報警功能(完整版)指令碼
- 通過shell指令碼 批量新增使用者指令碼
- 通過shell指令碼批量操作mysql資料庫指令碼MySql資料庫
- 通過shell指令碼檢測MySQL服務資訊指令碼MySql
- awr報告每天自動生成指令碼指令碼
- 【AWR】Oracle批量生成awr報告指令碼Oracle指令碼
- 通過錄制指令碼進行壓測,生成的測試報告真的有價值嗎?指令碼測試報告
- shell指令碼報錯:[: missing `]‘指令碼
- 案例四:Shell指令碼生成隨機密碼指令碼隨機密碼
- Linux通過Shell指令碼命令修改密碼不需要互動Linux指令碼密碼
- 通過 shell 指令碼完成 GitLab11.9.11 的一鍵安裝指令碼Gitlab
- MySQL5.7/8.0效能分析shell指令碼MySql指令碼
- 案例:通過shell指令碼實現mysql資料備份與清理指令碼MySql
- 生成 Linux 執行時間報告的 Bash 指令碼Linux指令碼
- shell指令碼指令碼
- SQL Server映象自動生成指令碼方法SQLServer指令碼
- [20231023]生成bbed的執行指令碼(bash shell).txt指令碼
- Linux命令和shell指令碼學習Linux指令碼
- shell和bash指令碼命令學習指令碼
- 主題 2 Shell工具和指令碼指令碼
- Shell指令碼 | 效能測試之啟動時間指令碼
- PowerDesigner: 利用sql指令碼檔案逆生成模型SQL指令碼模型
- Shell指令碼實現生成SSL自簽署證書指令碼
- shell指令碼案例指令碼
- 常用shell指令碼指令碼
- Linux Shell指令碼Linux指令碼
- shell指令碼(6)-shell陣列指令碼陣列
- JMeter做效能測試(1)-效能壓測指令碼的生成以及完善和增強JMeter指令碼
- shell指令碼技巧—建立和清空檔案指令碼
- shell 指令碼加密 | shc指令碼加密
- 執行shell指令碼指令碼
- Shell 指令碼語句指令碼
- 初識shell指令碼指令碼
- 【指令碼】shell語法指令碼
- shell 指令碼寫法:指令碼
- 如何加密shell指令碼加密指令碼