kill_session_temptablespace_highparallel.sh 查殺執行時間較長的sql
#!/bin/bash
# by ray
# 2016-06-16
ksfile=/tmp/.kill_session.tmp #kill session 的檔案路徑
killSqlFile=/tmp/.kill_session_temptablespace_highparallel.sql #kill指令碼的路徑
killSqlHisFile=/home/oracle/shell/killSqlHisInfo.txt #被kill的會話資訊
oraUser=**** #oracle的使用者名稱
oraPwd=****** #oracle的密碼
#函式,獲取執行較長時間的sql的資訊
getSqlInfo(){
[ -e ${killSqlFile} ]&& rm -f ${killSqlFile}
[ -e $3 ]&& rm -f $3
sqlplus -s /nolog <<-RAY
conn $1/$2
set termout off;
set echo off;
set feedback off;
set verify off;
set heading off;
set wrap on;
set trimspool on;
set serveroutput on;
set escape on;
set pagesize 50000;
set long 2000000000;
set linesize 300;
spool $3
select distinct b.SID,b.SERIAL\#,b.LAST_CALL_ET,a.sql_id,b.OSUSER,b.MACHINE from v\$sql a,v\$session b,v\$process p where a.SQL_ID=b.SQL_ID and b.PADDR=p.ADDR and b.STATUS=\'ACTIVE\' and b.LAST_CALL_ET>100 and b.MODULE=\'JDBC Thin Client\' order by a.sql_id,B.LAST_CALL_ET desc;
spool off
RAY
#形成kill會話指令碼
awk '$0!=""{print "alter system kill session'\''"$1","$2"'\'';"}' $3 > ${killSqlFile}
#把被kill會話的資訊寫入檔案
echo "#########################################################################################" >> ${killSqlHisFile}
echo "#######################################"`date`"#######################################" >> ${killSqlHisFile}
cat $3 >> ${killSqlHisFile}
}
#執行指令碼的函式
execSQL(){
sqlplus /nolog <<-RAY
conn $1/$2
@$3
RAY
}
#指令碼入口
getSqlInfo ${oraUser} ${oraPwd} ${ksfile}
execSQL ${oraUser} ${oraPwd} ${killSqlFile}
[ -e ${ksfile} ]&& rm -f ${ksfile}
[ -e ${killSqlFile} ]&& rm -f ${killSqlFile}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28572479/viewspace-2134467/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- kill執行時間較長的會話會話
- oracle查詢sql執行耗時、執行時間、sql_idOracleSQL
- 如何使用Docker構建執行時間較長的指令碼Docker指令碼
- 監控長時間執行的查詢(監控資料庫效能的SQL ) -- 轉資料庫SQL
- 查詢正在執行的sql語句及該語句執行的時間SQL
- MyBatis列印SQL執行時間MyBatisSQL
- 計算SQL執行時間SQL
- job 執行時間比排程間隔時間長
- 獲取執行次數最多和單次執行時間最長的10個SQLSQL
- 定位rac環境中某條sql執行時間過長SQL
- 大表建索引,rman備份等耗費的時間通常比較長?還有多長時間才能執行完?索引
- JAMon監控SQL執行時間SQL
- lr計算程式執行消耗時間的比較:
- SQL Server中檢視SQL句子執行所用的時間SQLServer
- oracle 中如何顯示sql語句的執行時間和sql語句的執行後的當前時間OracleSQL
- Job長時間執行不能退出的分析
- 批次殺執行某條sql的sessionSQLSession
- 演算法執行時間、logN、NlogN 之間的比較演算法
- Linux開機執行多長時間Linux
- Oracle 執行 DDL 長時間無響應Oracle
- 指定快照時間內根據等待類查詢消耗較高的sqlSQL
- 自適應查詢執行:在執行時提升Spark SQL執行效能SparkSQL
- 透過pl/sql計算程式的執行時間SQL
- 通過pl/sql計算程式的執行時間SQL
- 後臺執行以及保持程式在後臺長時間執行
- SQL時間段查詢SQL
- 微服務中的事件、流程和長時間執行業務微服務事件行業
- 執行長查詢時,怎樣獲取進度?
- azkaban執行任務長時間無法結束
- 取消超時執行的sqlSQL
- sql查詢是如何執行的?SQL
- abap執行時間
- MySql定位執行效率較低的SQL語句MySql
- 一次awr報告分析(密碼錯誤引發sql執行時間過長)密碼SQL
- 伺服器長時間執行如何做好維護伺服器
- 監控Oracle長時間執行的工作(v$session_longops)OracleSessionGo
- Undistract-me:當長時間執行的終端命令完成時獲取通知
- 關於UPDATE中關聯查詢的執行時間考慮