[20200319]KILL STATUS ='KILLED'的程式.txt
[20200319]KILL STATUS ='KILLED'的程式.txt
--//生產系統例行檢查,我發現存在一些STATUS ='KILLED'的會話。
--//看看這些程式如何刪除。
1.環境:
SYS@ZZZZ/SIDSID> @ ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
SYS@ZZZZ/SIDSID> select paddr,inst_id,SID,S.SERIAL#,status,client_info ,logon_time,CREATOR_ADDR,CREATOR_SERIAL# from gv$session S where STATUS ='KILLED' order by sid;
PADDR INST_ID SID SERIAL# STATUS CLIENT_INFO LOGON_TIME CREATOR_ADDR CREATOR_SERIAL#
---------------- ---------- ---------- ---------- -------- -------------------- ------------------- ---------------- ---------------
000000134207A620 1 167 6305 KILLED aaa.bbb.c5.116 2020-03-11 20:22:26 0000001291D9E998 77
000000134207A620 1 1747 12439 KILLED AAA.BBB.C.74 2020-03-10 07:23:33 00000012A1E0DCE0 89
000000134207A620 1 3499 1473 KILLED aaa.bbb.c0.224 2020-03-13 15:40:14 00000012A1DBB418 218
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
000000134207A620 1 5055 15825 KILLED aaa.bbb.c0.224 2020-03-13 10:31:55 00000012B1D5A100 121
000000134207A620 2 6393 11793 KILLED aaa.bbb.c5.116 2020-03-11 20:24:13 00000012D1D47F68 20
000000134207A620 1 6980 3377 KILLED aaa.bbb.c0.224 2020-03-13 10:31:56 00000012B1F37978 122
000000134207A620 1 7261 10139 KILLED aaa.bbb.c5.116 2020-03-11 20:22:25 00000012A1DFC0A8 71
000000134207A620 1 7423 23319 KILLED AAA.BBB.C.74 2020-03-10 07:23:33 00000012A1E32608 215
8 rows selected.
--//出現這樣的情況PADDR地址指向都已一樣的,如果你使用該地址查詢檢視v$process無法獲得spid程式號的。
SYS@ZZZZ/SIDSID> select * from v$process where addr=hextoraw('000000134207A620');
no rows selected
--//只能查詢使用CREATOR_ADDR查詢。
SYS@ZZZZ/SIDSID> select * from v$process where addr=hextoraw('00000012A1DBB418')
2 @ prxx
==============================
ADDR : 00000012A1DBB418
PID : 203
SPID : 102216
PNAME :
USERNAME : grid
SERIAL# : 218
TERMINAL : UNKNOWN
PROGRAM : oracle@ZZZZZZZZZZZZZZZZ
TRACEID :
TRACEFILE : /u01/app/oracle/diag/rdbms/SIDSID/SIDSID1/trace/SIDSID1_ora_102216.trc
BACKGROUND :
LATCHWAIT :
LATCHSPIN :
PGA_USED_MEM : 1927126
PGA_ALLOC_MEM : 3231990
PGA_FREEABLE_MEM : 1048576
PGA_MAX_MEM : 5329142
PL/SQL procedure successfully completed.
--//奇怪 USERNAME='grid',什麼回事。
SELECT s.paddr
,s.inst_id
,s.SID
,S.SERIAL#
,s.status
,s.client_info
,s.logon_time
,s.CREATOR_ADDR
,s.CREATOR_SERIAL#
,p.spid
,p.username
FROM gv$session s, gv$process p
WHERE s.STATUS = 'KILLED'
AND p.addr = s.CREATOR_ADDR
AND ( (s.USERNAME IS NOT NULL)
AND (NVL (s.osuser, 'x') <> 'SYSTEM')
AND (s.TYPE <> 'BACKGROUND'))
AND (s.ownerid = 2147483644)
AND ( s.module <> 'TOAD background query session' OR s.module IS NULL)
AND p.inst_id = s.inst_id;
--//我查詢發現都是USERNAME='grid'。加入其它條件是抄toad的查詢,主要避免下面kill時刪除重要程式。
# netstat -tnop 2>/dev/null | grep 102216
tcp 0 0 192.168.100.104:1521 aaa.bbb.c0.224:2549 ESTABLISHED 102216/oracleSIDSID1 keepalive (61.59/0/0)
# ps -fp 102216
UID PID PPID C STIME TTY TIME CMD
oracle 102216 1 0 Mar13 ? 00:00:00 oracleSIDSID1 (LOCAL=NO)
--//說明該程式存在。如果採用原來的方式是不行的。
SYS@ZZZZ/SIDSID> alter system disconnect session 3499,1473 immediate ;
alter system disconnect session 3499,1473 immediate
*
ERROR at line 1:
ORA-00026: missing or invalid session ID
--//知道程式號直接殺程式就ok了。
SELECT 'kill -9 ' || spid c20, inst_id
FROM (SELECT s.paddr
,s.inst_id
,s.SID
,S.SERIAL#
,s.status
,s.client_info
,s.logon_time
,s.CREATOR_ADDR
,s.CREATOR_SERIAL#
,p.spid
FROM gv$session s, gv$process p
WHERE s.STATUS = 'KILLED'
AND p.addr = s.CREATOR_ADDR
AND ( (s.USERNAME IS NOT NULL)
AND (NVL (s.osuser, 'x') <> 'SYSTEM')
AND (s.TYPE <> 'BACKGROUND'))
AND (s.ownerid = 2147483644)
AND ( s.module <> 'TOAD background query session'
OR s.module IS NULL)
AND p.inst_id = s.inst_id) order by 2;
C20 INST_ID
---------------- -------
kill -9 102216 1
kill -9 77715 1
kill -9 125001 1
kill -9 77731 1
kill -9 92612 1
kill -9 125003 1
kill -9 92620 1
kill -9 60858 2
8 rows selected.
--//注意例項號。最後1行是另外一臺機器的。先嚐試1個程式看看。
# kill -9 102216
# ps -fp 102216
UID PID PPID C STIME TTY TIME CMD
# netstat -tnop 2>/dev/null | grep 102216
--//執行前還是建議檢視一下。
$ ps -fp 102216,77715,125001,77731,92612,125003,92620
--//然後copy and paste執行以上命令,注意伺服器千萬別選擇錯了。一般等2,3秒程式就會消失。我翻了以前筆記以前寫成如下:
select spid from v$process where addr in(select creator_addr from v$session where status='KILLED');
select 'kill -9 '||spid from v$process where addr in(select creator_addr from v$session where status='KILLED');
--//感覺執行前還是給仔細看看什麼程式,貿然操作還是存在一定風險。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2681300/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 什麼時候才回收v$session 中status='KILLED'的程式OracleSession
- [20180918]disconnect session和kill session的區別.txtSession
- SQLServer會話KILL不掉,一直處於KILLED/ROLLBACK狀態情形淺析SQLServer會話
- [20211020]奇怪lsnrctl status顯示.txt
- kill 已啟動的程式
- [20210506]RAC crsctl status ... -v 獲取last started or status changes資訊.txtAST
- linux 檢視程式 kill程式Linux
- [20211209]pdb資料庫kill job遇到的奇怪情況.txt資料庫
- 程式命令ps/top/kill
- Linux下Python程式Killed,分析其原因LinuxPython
- SESSION處於KILLED狀態下如何找出對應的程式Session
- linux 下根據埠kill 程式Linux
- android 測試 kill -3 生成的 trace_xx.txt日誌怎麼重置Android
- kill 程式時遇到的一件有意思的事情
- 精通 Linux 的 “kill” 命令Linux
- (轉貼)Out of Memory: Killed process
- 簡述top命令與結束程式kill命令
- kill與pkill的區別
- kill 指令的執行原理
- [Bash] Kill command
- 如何在 Linux 上使用 kill 和 killall 來管理程式Linux
- 使用pt-kill根據一定的規則來kill連線的方法
- [20220623]grid使用者執行srvctl status service -d xxx報PRCD-1229.txt
- 詳解 Flink 容器化環境下的 OOM KilledOOM
- Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0) CUDNN_STATUS_INTERNAL_ERRORAIDNNError
- SAP CRM One order裡user status和system status的mapping邏輯APP
- 【linux】kill命令模板Linux
- mysql批次kill sessionMySqlSession
- MySQL的show engine innodb statusMySql
- MySQL: kill 會話的實現原理MySql會話
- 使用rust編寫dwm status-bar應用程式Rust
- TIC Read Status
- git status 命令Git
- sqlserver kill long time lockSQLServer
- 無腦批量kill sessionSession
- 兩種使用程式碼獲得SAP CRM product sales status的辦法
- [20211217]滑稽可笑的程式程式碼2.txt
- Edge崩潰(Edge錯誤程式碼STATUS_ACCESS_DENIED的修復方法)