殺會話之查詢鎖表的物件及相關操作
主題:殺會話之查詢鎖表的物件及相關操作
作者:基毛飛上天
場景:今天有個小哥哥跟我說:他們正在truncate一張表,但是卻報了錯誤,你可以幫我們看下是什麼導致資源正在繁忙嗎?順便就幫我們殺掉會話吧!
報錯內容如下:
處理思路:
(1)透過相關語句查詢出佔用該表資源的會話sid和serial#,以及process
(2)找到相關資訊之後,需要殺會話,殺process程式
1. 透過v$locked_object、dba_objects、v$session和v$process等檢視找出相關的資訊
2. 根據SQL_ID查詢對應的SQL語句
瞭解下這個操作是否導致資源繁忙。
3. 殺會話
殺會話也不是那麼容易就能殺掉的喔,需要等待一些時間
4. 檢視會話的狀態
5. 查process程式
6. 檢視會話是否存在
7. 收工結束
作者:基毛飛上天
場景:今天有個小哥哥跟我說:他們正在truncate一張表,但是卻報了錯誤,你可以幫我們看下是什麼導致資源正在繁忙嗎?順便就幫我們殺掉會話吧!
報錯內容如下:
點選(此處)摺疊或開啟
-
SQL> truncate table ZJDB.T_TABLE;
-
truncate table ZJDB.T_TABLE
-
*
-
ERROR at line 1:
- ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
(1)透過相關語句查詢出佔用該表資源的會話sid和serial#,以及process
(2)找到相關資訊之後,需要殺會話,殺process程式
1. 透過v$locked_object、dba_objects、v$session和v$process等檢視找出相關的資訊
點選(此處)摺疊或開啟
-
select object_name ,machine ,s.program ,
-
s.sid,s.serial#
-
p.spid as os_pid ,
-
s.sql_address,
-
l.locked_mode,
-
s.username,
-
s.process,
-
s.sql_id
-
from v$locked_object l,dba_objects o ,v$session s ,v$process p
-
where l.object_id=o.object_id
-
and l.session_id=s.sid
-
and s.paddr=p.addr
-
and object_name='T_TABLE' and o.owner='ZJDB'
- order
-
by 1
- ;
-
OBJECT_NAME MACHINE PROGRAM sid serial# OS_PID SQL_ADDRESS LOCKED_MODE USERNAME PROCESS SQL_ID
------------- ------------- ---------------- ----- ------ --------- ------------- ----------- -------- ---------- -------------
T_TABLE RACZJ-DB01 plsqldev.~~ 5489 21743 4202874 071113A2QA1CC0 3 SCOTT 5416:7556 7qaxjdqwm4tkf
2. 根據SQL_ID查詢對應的SQL語句
瞭解下這個操作是否導致資源繁忙。
點選(此處)摺疊或開啟
-
SQL> SELECT SQL_TEXT FROM V$SQLTEXT WHERE SQL_ID = '7qaxjdqwm4tkf' ORDER BY PIECE;
- delete from /*+parallel(t,4)*/ from ZJDB.T_TABLE t where id=10;
殺會話也不是那麼容易就能殺掉的喔,需要等待一些時間
點選(此處)摺疊或開啟
- SQL> alter system kill session '5489,21743';
alter system /*AP_HW_20180423_6351799*/ kill session '5389,21743'
*
ERROR at line 1:
ORA-00031: session marked for kill
*
ERROR at line 1:
ORA-00031: session marked for kill
點選(此處)摺疊或開啟
-
SQL> select sid,serial#,status from v$session where sid =5489 and serial#=21743;
-
-
SID SERIAL# STATUS
-
---------- ---------- --------
- 5389 41743 KILLED
5. 查process程式
點選(此處)摺疊或開啟
-
$ps -ef|grep 4392874
-
0 17:09:20 pts/0 0:00 grep 4202874
- 9 10:08:17 - 19:18 oracle RAZJDB1 (LOCAL=NO) --刷出非本地連線資訊
$ps -ef|grep 4392874 |grep LOCAL=NO|awk '{print " -9 "$2}' --刷出可以直接用於kill的資訊
-9 4392874
$ps -ef|grep 4392874 |grep LOCAL=NO|awk '{print " -9 "$2}'|xargs kill --殺process
-9 4392874
$ps -ef|grep 4392874 |grep LOCAL=NO|awk '{print " -9 "$2}'|xargs kill --殺process
$
點選(此處)摺疊或開啟
-
SQL> alter system kill session '5489,21743';
-
alter system kill session '5489,21743'
-
*
-
ERROR at line 1:
- ORA-00030: User session ID does not exist.
7. 收工結束
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-2155350/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Django筆記十五之in查詢及date日期相關過濾操作Django筆記
- sql 開發篇一 之 表鎖查詢及解鎖SQL
- MySQL 之慢查詢相關操作MySql
- mysql鎖表查詢MySql
- Oracle阻塞會話查詢Oracle會話
- 字典及相關操作
- 列表及相關操作
- python的字典及相關操作Python
- MySQL 相關子查詢MySql
- CURL查詢ES相關
- 物件及函式相關物件函式
- 什麼是SQL 語句中相關子查詢與非相關子查詢SQL
- 關於Solidity指令碼相關環境配置及指令碼資料的查詢Solid指令碼
- Mongodb 關聯表查詢MongoDB
- JSON及Python操作JSON相關JSONPython
- MySQL 中的約束及相關操作MySql
- Linux 查詢 日誌 相關命令Linux
- sql-server相關子查詢SQLServer
- flink維表關聯絡列之Redis維表關聯:實時查詢Redis
- MySQL鎖表相關問題查詢思路MySql
- oracle的會話如何自殺?Oracle會話
- mysql 三表關聯查詢MySql
- mysql三表關聯查詢MySql
- 會話和鎖資訊查詢檢視 | 全方位認識 sys 系統庫會話
- JavaScript 複習之 Object物件的相關方法JavaScriptObject物件
- Oracle 查詢佔用臨時表空間大的歷史會話和SQLOracle會話SQL
- 簡版會員私信表設計及sql 私信列表查詢SQL
- 查詢資料庫表及表欄位資料庫
- Mapbox詞彙表中文文件(查詢Mapbox相關的術語及其定義)
- oracle 查詢鎖 && 解鎖Oracle
- Oracle查詢鎖、解鎖Oracle
- SQL SERVER死鎖查詢,死鎖分析,解鎖,查詢佔用SQLServer
- Android多媒體之Camera的相關操作Android
- 解讀數倉中的資料物件及相關關係物件
- MySQL全面瓦解9:查詢的排序、分頁相關MySql排序
- HAC叢集部署vip及相關操作
- 兩表關聯查詢:sql、mybatisSQLMyBatis
- mysql三張表關聯查詢MySql