透過shell指令碼來檢視Undo中資源消耗高的sql
在檢視undo的使用率的時候,在Undo_management為auto的時候,經常會看到undo自己在不斷的伸縮擴充套件,自我調節。
有時候看到Undo收縮的很緊,就想知道哪些sql語句在執行,可能有哪些潛在的問題。對於線上業務系統而言,如果某一條sql語句執行時間較長,而且消耗的undo資源極高的情況下,sql語句很可能是有問題的。
可以透過如下的sql語句來簡單定位,找到一個sql_id列表,可以看到每個sql_id消耗的Undo資源情況。
sqlplus -s <<EOF
set pages 53
select sum(undoblks)*8/1024 total_size_MB from v\$undostat ;
select *from (
select maxqueryid,
round(sum(undoblks )*8/1024) consumed_size_MB
from v\$undostat group by maxqueryid order by consumed_size_MB desc
) where rownum<50;
EOF
Exit
指令碼執行結果如下:
TOTAL_SIZE_MB
-------------
70299.2188
MAXQUERYID CONSUMED_SIZE_MB
------------- ----------------
7wx3cgjqsmnn4 39990
210ndtcx5fwgs 20738
648600hq1s1s8 5795
cjqdgd14xjwjm 1116
4ad8ypr3nf6vm 869
0my2xfpqrk6gw 597
f3pq3mdycwcd2 455
cwp9zk1y7cthy 312
ddtx15a9nzmjt 139
csrj5pnpx4wtr 72
6tshctswzutbk 49
3a4vsqkf8yaxs 49
gpzkq2kv9vhan 27
fa311gg43yjyf 21
cysbbg2h86xc6 19
fjzknc02f7019 18
aty7a3bvqfxxx 17
ftmvqxfzq1fv0 16
可以看到sql_id為7wx3cgjqsmnn4 的sql 消耗資源情況最嚴重,很有可能存在一定的效能問題。在檢視執行計劃後發現,確實如此。
具體的細則就不羅列了,此處略去幾百字。
總之透過undo的使用情況來檢視可能存在的效能sql也是一種方式。當然了undo的使用情況是頻繁變更的,可以根據自己的情況來對undo進行一定範圍內的監控,相信會有一定的收穫。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30633755/viewspace-2127764/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 結合作業系統執行緒 檢視mysql中的sql資源 消耗作業系統執行緒MySql
- Shell指令碼 – 檢視網路介面資訊指令碼
- Laravel 透過遷移指令碼建立MySQL檢視Laravel指令碼MySql
- Oracle 中定位重要(消耗資源多)的SQLOracleSQL
- 通過shell指令碼檢測MySQL服務資訊指令碼MySql
- Oracle - 執行過的SQL、正在執行的SQL、消耗資源最多的SQLOracleSQL
- T-SQL運維指令碼——檢視SQLServer平均最耗資源時間的SQL語句SQL運維指令碼Server
- 透過 Prometheus 編寫 TiDB 巡檢指令碼(指令碼已開源,內附連結)PrometheusTiDB指令碼
- 如何使用 Shell 指令碼來檢視多個伺服器的埠是否開啟?指令碼伺服器
- 透過shell指令碼監控日誌切換頻率指令碼
- shell指令碼企業巡檢指令碼
- 【資訊採集】IBM AIX系統硬體資訊檢視命令(shell指令碼)IBMAI指令碼
- SQL SERVER巡檢指令碼SQLServer指令碼
- linux shell指令碼中 =~ 的作用Linux指令碼
- 透過v$sql_bind_capture 檢視繫結變數。SQLAPT變數
- MySQL 5.7定位消耗CPU高的SQLMySql
- linux透過shell指令碼實現ssh互動式自動化Linux指令碼
- 通過shell指令碼批量操作mysql資料庫指令碼MySql資料庫
- Linux中檢視指令碼程式是否存在的命令!Linux指令碼
- Laravel 通過遷移指令碼建立MySQL檢視Laravel指令碼MySql
- 如何呼叫python中的shell指令碼?Python指令碼
- Shell指令碼中的 /Dev/Null 用途指令碼devNull
- [ Shell ] 通過 Shell 指令碼匯出 CDL 網表指令碼
- 2.4.12 Step 11: 執行指令碼來構建資料字典檢視指令碼
- 指令碼 - 透過 mac 反查 IP指令碼Mac
- Bash 指令碼實現每次登入到 Shell 時可以檢視 Linux 系統資訊指令碼Linux
- 【SQL_PLAN】Oracle 透過檢視sql_plan 格式化執行計劃SQLOracle
- 什麼是Shell指令碼?Shell指令碼在Linux運維工作中的地位!指令碼Linux運維
- [ Shell ] 通過 Shell 指令碼匯出 GDSII/OASIS 檔案指令碼
- shell指令碼指令碼
- 通過shell指令碼防止埠掃描指令碼
- 使用shell指令碼替換csv檔案中的資料指令碼
- Shell 指令碼中的exit狀態解釋指令碼
- shell指令碼中的變數及應用指令碼變數
- 注意shell指令碼中ps -ef|grep的坑指令碼
- 透過預熱來最佳化PG資料庫的SQL效能資料庫SQL
- shell指令碼中cd命令無效指令碼
- 檢測不同伺服器上程式碼差別的shell的指令碼伺服器指令碼
- 通過shell指令碼 批量新增使用者指令碼