shell指令碼自動化採集效能sql

2021-06-22 20:43:56 字數 1504 閱讀 7837

原鏈結見:

shell指令碼自動化採集效能sql 2014-07-20 19:14:58

分類: oracle

通過v$sql_monitor能夠實時採集可能存在的sql效能問題,但是每次問題發生的時候採取採取措施就有點「晚」了,我們需要防患於未然,把一些潛在問題提前發現,並加以解決。

如果有些sql執行很頻繁,我們需要得到乙個執行的報告,但是因為sql執行很頻繁,每次都生成乙個報告就顯得有些過於消耗資源了。

現在想達到的目標就是能夠在每天早上上班的時候能夠得到一些已經生成的報告。如果有些sql已經生成過報告了,就不需要重複生成報告了,這樣一切問題都在監控之中。

採用的指令碼如下:

date=`date '+%y%m%d'`

sqlplus -s n1/n1 tmp_current_exist_sql

sort tmp_monitor_sql.lst_$date > monitor_sql.lst_$date

comm -13 tmp_current_exist_sql monitor_sql.lst_$date > tmp_monitor_sql_minus.lst

issue_sql_cnt=`cat tmp_monitor_sql_minus.lst|wc -l`

for((i=1;i< $;i++))

dotmp_sql_id=`sed -n ''$i'p' tmp_monitor_sql_minus.lst`

sqlplus -s  n1/n1 < '$tmp_sql_id',

report_level => 'all',

type=>'html'

) comm

from dual;

spool off;

eofdone

rm tmp_monitor_sql_minus.lst

rm  tmp_monitor_sql.lst_$date

rm tmp_current_exist_sql

rm  monitor_sql.lst_$date

指令碼執行後結果如下:

如果有sql在執行超過5秒,耗用了大量的資源,就會被記錄下來。

[ora11g@rac1 tmp]$ ll

total 876

-rw-r--r-- 1 ora11g dba 103889 jul 20 03:44 4dtvhq9n8s751_rpt.lst_140720

-rw-r--r-- 1 ora11g dba  77917 jul 20 03:44 5zruc4v6y32f9_rpt.lst_140720

-rw-r--r-- 1 ora11g dba 403473 jul 20 03:44 63n9pwutt8yzw_rpt.lst_140720

-rw-r--r-- 1 ora11g dba 119744 jul 20 03:44 7hdtv2wcb63my_rpt.lst_140720

如果下次執行指令碼,報告已經存在,就不會重複生成報告了。

可以把這個指令碼設為crontab或者nohup模式。

shell自動化指令碼發布

關於指令碼發布 部分,將這個 流程拆分為兩個部分 簡單指令碼 遠端主機上執行 和大型指令碼 線上機器執行 簡單指令碼從四個方面來學習 1 命令羅列實現功能 2 固定內容變數實現 3 功能函式實現 4 遠端執行命令 簡單的命令羅列 例項 cd data codes f django.tar.gz rm...

自動化編譯shell指令碼 jenkins

為了實現我們的應用自動編譯 組織版本 設定md5值 上傳編譯包 打基線等操作。自動化編譯shell指令碼 export lc ctype zh cn.utf 8 輸入引數 發布版本號設定 編譯時根據實際情況改動 relversion x.y.z 輸入引數 庫的測試基線路徑設定 需改動 buildba...

shell指令碼 自動化部署lnmp

root localhost shell vim lnmp.sh bin bash yum y install httpd 安裝http yum y install mariadb mariadb devel mariadb server 安裝資料庫 yum y install php php my...