kill執行時間較長的會話
#!/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-2123950/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- kill_session_temptablespace_highparallel.sh 查殺執行時間較長的sqlSessionParallelSQL
- 如何使用Docker構建執行時間較長的指令碼Docker指令碼
- job 執行時間比排程間隔時間長
- 大表建索引,rman備份等耗費的時間通常比較長?還有多長時間才能執行完?索引
- lr計算程式執行消耗時間的比較:
- 【會話】Oracle kill session系列會話OracleSession
- Kill會話過程分析會話
- MySQL: kill 會話的實現原理MySql會話
- Job長時間執行不能退出的分析
- 檢視長時間鎖定物件的程式,並kill掉物件
- MySQL kill會話不起作用?MySql會話
- Kill會話過程分析(二)會話
- 演算法執行時間、logN、NlogN 之間的比較演算法
- ORACLE快速徹底Kill掉的會話Oracle會話
- Linux開機執行多長時間Linux
- Oracle 執行 DDL 長時間無響應Oracle
- kill 指令的執行原理
- 後臺執行以及保持程式在後臺長時間執行
- Oracle kill會話--sed修改檔案Oracle會話
- 批量kill殺死某些會話session的plsql會話SessionSQL
- 微服務中的事件、流程和長時間執行業務微服務事件行業
- azkaban執行任務長時間無法結束
- abap執行時間
- 讓 sudo 會話時間隨心所欲會話
- 修改oracle會話時間表達方式Oracle會話
- 獲取執行次數最多和單次執行時間最長的10個SQLSQL
- 監控Oracle長時間執行的工作(v$session_longops)OracleSessionGo
- 伺服器長時間執行如何做好維護伺服器
- 定時kill長事務指令碼kill_long_session.sh指令碼Session
- Kill執行中的JOB的問題
- Undistract-me:當長時間執行的終端命令完成時獲取通知
- 程式執行時間的測量
- 執行crontab最好的時間(轉)
- 使用Oracle PROFILE控制會話空閒時間Oracle會話
- banq求助servlet out.println()的內容太多...執行時間太長..Servlet
- 定位rac環境中某條sql執行時間過長SQL
- laravel 自定義命令 執行指令碼(採集介面資料),時間長就會停止,求指教Laravel指令碼
- 更改SERVICE_NAME導致大量會話被KILL會話