SESSION處於KILLED狀態下如何找出對應的程式
SQL> select 'alter system kill session '''||sid||','||SERIAL#||''';' from v$session where program like 'PlSqlDev.exe%';
'ALTERSYSTEMKILLSESSION'''||SID||','||SERIAL#||''';'
--------------------------------------------------------------------------------------------------------------
alter system kill session '12,14459';
alter system kill session '18,379';
alter system kill session '35,63717';
alter system kill session '43,37798';
alter system kill session '56,38333';
alter system kill session '106,59769';
alter system kill session '138,18817';
alter system kill session '163,64575';
alter system kill session '186,18270';
alter system kill session '219,43397';
alter system kill session '266,32098';
alter system kill session '267,64616';
alter system kill session '306,15258';
alter system kill session '309,21923';
--執行以上語句
--抽查其中一個會話的狀態
SQL> select * from v$session where sid=12;
SADDR SID SERIAL# AUDSID PADDR USER# USERNAME COMMAND
---------------- ---------- ---------- ---------- ---------------- ---------- ------------------------------ ----------
OWNERID TADDR LOCKWAIT STATUS SERVER SCHEMA# SCHEMANAME
---------- ---------------- ---------------- -------- --------- ---------- ------------------------------
OSUSER PROCESS MACHINE
------------------------------ ------------ ----------------------------------------------------------------
TERMINAL PROGRAM TYPE SQL_ADDRESS
------------------------------ ------------------------------------------------ ---------- ----------------
SQL_HASH_VALUE SQL_ID SQL_CHILD_NUMBER PREV_SQL_ADDR PREV_HASH_VALUE PREV_SQL_ID PREV_CHILD_NUMBER
-------------- ------------- ---------------- ---------------- --------------- ------------- -----------------
PLSQL_ENTRY_OBJECT_ID PLSQL_ENTRY_SUBPROGRAM_ID PLSQL_OBJECT_ID PLSQL_SUBPROGRAM_ID
--------------------- ------------------------- --------------- -------------------
MODULE MODULE_HASH ACTION ACTION_HASH
------------------------------------------------ ----------- -------------------------------- -----------
CLIENT_INFO FIXED_TABLE_SEQUENCE ROW_WAIT_OBJ# ROW_WAIT_FILE#
---------------------------------------------------------------- -------------------- ------------- --------------
ROW_WAIT_BLOCK# ROW_WAIT_ROW# LOGON_TIME LAST_CALL_ET PDM FAILOVER_TYPE FAILOVER_M FAI
--------------- ------------- ------------ ------------ --- ------------- ---------- ---
RESOURCE_CONSUMER_GROUP PDML_STA PDDL_STA PQ_STATU CURRENT_QUEUE_DURATION
-------------------------------- -------- -------- -------- ----------------------
CLIENT_IDENTIFIER BLOCKING_SE BLOCKING_INSTANCE BLOCKING_SESSION
---------------------------------------------------------------- ----------- ----------------- ----------------
SEQ# EVENT# EVENT
---------- ---------- ----------------------------------------------------------------
P1TEXT P1 P1RAW
---------------------------------------------------------------- ---------- ----------------
P2TEXT P2 P2RAW
---------------------------------------------------------------- ---------- ----------------
P3TEXT P3 P3RAW WAIT_CLASS_ID WAIT_CLASS#
---------------------------------------------------------------- ---------- ---------------- ------------- -----------
WAIT_CLASS WAIT_TIME SECONDS_IN_WAIT STATE
---------------------------------------------------------------- ---------- --------------- -------------------
SERVICE_NAME SQL_TRAC SQL_T SQL_T
---------------------------------------------------------------- -------- ----- -----
00000000FC523C28 12 14459 2217887 00000000FC50C798 40 ID5ZZ 0
2147483644 KILLED PSEUDO 40 ID5ZZ
liping 7380:6428 WORKGROUPGZT-120
GZT-120 PlSqlDev.exe USER 00
0 00000000D5331888 2674323898 bydf32qgqdwdu 1
PL/SQL Developer 1190136663 SQL Window - select * from query 3567217222
11937839 14097 6
380 0 16-APR-08 20262 NO NONE NONE NO
DISABLED ENABLED ENABLED 0
NO HOLDER
106 257 SQL*Net message from client
driver id 1413697536 0000000054435000
#bytes 1 0000000000000001
0 00 2723168908 6
Idle 0 20262 WAITING
SYS$USERS DISABLED FALSE FALSE
可以看到會話的狀態為killed,等了十分鐘,會話的狀態仍然沒有改變,該會話仍然在V$SESSION中,也就是仍然佔用的連線。此時可以考慮直接在作業系統上直接kill掉對應的程式。
但是由於ORACLE的bug,此時是沒有辦法直接關聯V$SESSION和V$PROCESS得到會話對應的SPID的:
Bug 5453737 WHEN A SESSION IS KILLED, PADDR CHANGES IN V$SESSION BUT ADDR NOT IN V$PROCESS
此時的解決辦法是:
SQL> select spid, program from v$process
2 where program!= 'PSEUDO'
3 and addr not in (select paddr from v$session)
4 and addr not in (select paddr from v$bgprocess);
SPID PROGRAM
------------ ------------------------------------------------
18180
18206
15851
15321
15327
19766
15095
15101
15109
15267
32742
15477
22059
22550
以上的查詢出來的SPID就是之前我們刪除的會話對應的SPID。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-1002729/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQLServer會話KILL不掉,一直處於KILLED/ROLLBACK狀態情形淺析SQLServer會話
- oracle 什麼時候才回收v$session 中status='KILLED'的程式OracleSession
- CRM下載物件一直處於Wait狀態的原因物件AI
- OGG的replicat程式的Time Since Chkpt一直增加,程式處於假死狀態
- Linux下Python程式Killed,分析其原因LinuxPython
- 爬蟲如何利用session方法保持登陸狀態(selenium)爬蟲Session
- 對於“前端狀態”相關問題,如何思考比較全面前端
- [譯] Flutter 中的原生應用程式狀態Flutter
- MTS方式連線V$SESSION中的SERVER狀態SessionServer
- NetApp使有狀態應用程式更易於在Kubernetes中完成APP
- 使用JDK自帶的jmap和jhat監控處於執行狀態的Java程式JDKJava
- 使用 Provider 管理 Flutter 應用狀態 (下)IDEFlutter
- 益普索:全球80%的女性處於隔離狀態
- Visio2016裡應該如何對狀態列進行設定
- [20200319]KILL STATUS ='KILLED'的程式.txt
- ASP.NET Core 應用程式狀態ASP.NET
- WCS:全球僅23%陸地處於近乎自然的荒野狀態
- 關於iOS 狀態列、導航欄的幾處筆記iOS筆記
- State Processor API:如何讀取,寫入和修改 Flink 應用程式的狀態API
- KVM虛擬機器處於暫停狀態怎麼處理虛擬機
- MogDB備機處於standby need-repair(WAL)狀態AI
- Hbase 之 某Region長期處於 RIT 狀態 ( 空洞 )
- 程式的建立和程式的狀態
- Oracle ORA-06575: 程式包或函式WM_CONCAT處於無效狀態Oracle函式
- 程式的3種狀態
- 如何檢測 SAP 電商雲 Spartacus UI 當前正處於導航狀態UI
- Flutter狀態管理Provider(三)基於Provider的程式碼框架FlutterIDE框架
- Linux程式狀態——top,ps中看到程式狀態D,S的含義Linux
- 工作流從無狀態切換到有狀態的好處
- Elasticsearch叢集狀態健康值處於red狀態問題分析與解決(圖文詳解)Elasticsearch
- CCAI 2020 | 塗威威:AI發展、監管處於動態博弈狀態AI
- 程式的狀態與轉換
- 基於 Riverpod 的 Flutter 狀態管理Flutter
- wechat-rematch 用於小程式的狀態管理工具REM
- ITU:2021年全球29億人仍處於離線狀態
- Angular Ngrx Store 應用程式狀態的一些典型例子Angular
- 關於設計業務應答狀態碼的一點思考
- 基於 Redux + Redux Persist 進行狀態管理的 Flutter 應用示例ReduxFlutter