前段寫了一篇DBA必備腳本:一鍵殺會話文章,有朋友反饋部分功能不完善。最近幾天根據朋友的建議,將核心的代碼做了適當修改,引入了部分新功能和排除了一些高危的進行。腳本的名字如下:
kill_sess_by_where.sql
主要的變動內容如下:
新增kill條件
- 根據SQLID的信息來選擇需要kill的session。
- 根據event的信息來選擇需要kill的session。
- 根據LAST_CALL_ET條件和非活動的會話來選擇需要kill的session。
- 根據登陸時間和非活動的會話來選擇需要kill的session。
- 根據登陸服務名來選擇需要kill的session。
殺會話的模式
支持disconnect和kill兩種方式,模式為disconnect方式,如果需要修改,可自定義修改參數。
排除系統管理用户的會話和後台會話
已經從代碼上排除了特殊用户和後台會話,防止kill錯誤會話。
WHERE s.username NOT IN ('SYSTEM','SYS','SYSMAN','DBSNMP')
and S.USERNAME IS NOT NULL
debug模式
默認在debug模式運行,只打印kill session的命令,可通過修改參數修改默認行為。
常用示例
kill last_call_et大於3600的非活動會話
kill_sess_by_where.sql "lastet=3600"
kill某用户的所有護花
kill_sess_by_where.sql "username=HTZ"
kill特定的sid
kill_sess_by_where.sql "sid=101,102"
腳本的獲取方式
關注公眾號,後台回覆“腳本”二字,已經關注並回復過的就直接下載即可。
------------------作者介紹-----------------------
姓名:黃廷忠
現就職:Oracle中國高級服務團隊
曾就職:OceanBase、雲和恩墨、東方龍馬等