關於一次系統卡住不動的故障排查
一次系統卡住不動的故障排查
今天,我在oracle 的scott使用者下,執行了 create table emp1 as select * from emp 這條語句後,資料庫就卡住不動了。然後我再開個新的會話,在scott使用者下執行select * from tab後,也是卡住了。
於是我用v$sql和v$session 聯合查詢,定位出哪個會話在執行哪些操作,消耗多長時間:
SQL> selectb.sid,a.sql_text,b.status,b.last_call_et,b.event from v$sql a,v$session b wherea.sql_id=b.sql_id;
SID SQL_TEXT STATUS LAST_CALL_ET EVENT
---------- ------------------------------------------------------------------------------ ----------------------------------------------------------------------------
129 select b.sid,a.sql_text,b.status,b.last_call_et,b.event from v$sqla,v ACTIVE 0 SQL*Net messageto client
$session b where a.sql_id=b.sql_id
131 select * from tab ACTIVE 3 buffer busywaits
152 create table emp1 as select * from emp ACTIVE 9101 flashback buf free by RVWR
透過上面可以看到,status 列為active說明當前的sql的語句正在執行,會話處於活躍狀態,last_cakk_et=9101說明這條SQL語句已經執行了9101秒,當前會話正在處於等待狀態,等待的事件為flashback buf free by RVWR。
(注:可以透過下面這條命令定位更加詳細的資訊,如客戶端ip等。
select b.sid,b.machine,b.program,b.module,a.sql_text,b.status,b.last_call_et,b.eventfrom v$sql a,v$session b where a.sql_id=b.sql_id;)
透過百度,得知flashback buf free by RVWR等待事件可能是由於flashbackbuffer空間緊張。
下面檢視資料庫top 5事件:
SQL> selectrownum,sql_id,sql_text,optimizer_cost from (select sql_id,sql_text,optimizer_costfrom v$sqlarea order by 3 desc) whererownum<5 ;
ROWNUM SQL_ID SQL_TEXT OPTIMIZER_COST
---------- -------------------------------------------------------------------------------------------------
1 gfjvxb25b773h select o.owner#,o.obj#,decode(o.linkname,null,decode(u.name,null,'SYS 2427
',u.name),o.remoteowner),o.name,o.linkname,o.namespace,o.subname from
user$ u, obj$ o whereu.user#(+)=o.owner# and o.type#=:1 and not exis
ts (select p_obj# fromdependency$ where p_obj# = o.obj#) order by o.o
bj# for update
2 63fyqfhnd7u5k select OBJOID, CLSOID, RUNTIME, PRI, JOBTYPE, SCHLIM, WT, INST, RU 288
NNOW, ENQ_SCHLIM from( select a.obj# OBJOID, a.class_oid CLSOID, d
ecode(bitand(a.flags, 16384), 0,a.next_run_date, a.last_enabled_time)
RUNTIME, (2*a.priority + decode(bitand(a.job_status, 4), 0, 0,
decode(a.running_instance, :1, -1, 1))) PRI, 1 JOBTYPE,
ROWNUM SQL_ID SQL_TEXT OPTIMIZER_COST
---------- -------------------------------------------------------------------------------------------------
a.schedule_limitSCHLIM, a.job_weight WT, decode(a.running_instanc
e, NULL, 0,a.running_instance) INST, decode(bitand(a.flags, 16384)
, 0, 0, 1)RUNNOW, decode(bitand(a.job_status, 8388608),0, 0, 1) E
NQ_SCHLIM from sys.scheduler$_job a where bitand(a.job_status, 515)
= 1 and ((bitand(a.flags, 134217728 +268435456) = 0) or (b
itand(a.job_status,1024) <> 0)) and bitand(a.flags,4096) = 0 a
nd (a.next_run_date<= :2 or bitand(a.flags, 16384)<> 0) and
(a.class_oid isnull or (a.class_oid is notnull and a.clas
s_oid in (selectb.obj# from sys.scheduler$_class b
where b.affin
ROWNUM SQL_ID SQL_TEXT OPTIMIZER_COST
---------- -------------------------------------------------------------------------------------------------
3 cfz686a6qp0kg select o.obj#, u.name, o.name, t.spare1, DECODE(bitand(t.flags 207
, 268435456),268435456, t.initrans, t.pctfree$) from sys.obj$ o, s
ys.user$ u, sys.tab$t where (bitand(t.trigflag, 1048576) = 104857
6) and o.obj#=t.obj# and o.owner# = u.user#
4 b7jn4mf49n569 select o.name, u.name from obj$ o, type$ t, user$ u where o.oid$ = t. 185
tvoid andu.user#=o.owner# and bitand(t.properties,8388608) = 8388608
and (sysdate-o.ctime)> 0.0007
5 767pug2dbpqpc select * from tab 184
6 8ypwcums111db select distinct (case when cd.dbid = wr.dbid and 152
透過top 5事件沒看出什麼問題。
再看一下v$lock,檢查資料庫是否有鎖表的問題:
SQL> select sid,type,id1,id2,lmode,request,blockfrom v$lock;
SID TY ID1 ID2 LMODE REQUEST BLOCK
---------- -- ---------- -------------------- ---------- ----------
165 XR 4 0 1 0 0
165 CF 0 0 2 0 0
165 RS 25 1 2 0 0
161 FD 1 0 6 0 0
166 RT 1 0 6 0 0
167 PW 1 0 3 0 0
161 FD 0 0 6 0 0
164 TS 3 1 3 0 0
164 US 1 0 6 0 0
167 MR 1 0 4 0 0
167 MR 2 0 4 0 0
SID TY ID1 ID2 LMODE REQUEST BLOCK
---------- -- ---------- -------------------- ---------- ----------
167 MR 3 0 4 0 0
167 MR 4 0 4 0 0
167 MR 5 0 4 0 0
167 MR 201 0 4 0 0
164 TT 1 16 4 0 0
164 HW 1 8388617 6 0 0
164 CI 1 5 6 0 0
165 CI 1 1 4 0 0
160 TT 1 0 4 0 0
142 JQ 0 1 6 0 0
162 JS 0 0 4 0 0
SID TY ID1 ID2 LMODE REQUEST BLOCK
---------- -- ---------- -------------------- ---------- ----------
158 JS 0 1 6 0 1
162 JS 0 1 0 6 0
159 UL 7567243 0 6 0 0
159 JS 0 0 4 0 0
159 JS 0 1 0 6 0
142 TM 50288 0 2 0 0
142 TM 50291 0 3 0 0
158 TM 5123 0 3 0 0
透過上述可以看到,sid為158的會話block=1,說明它在阻塞其他的會話;sid為162的會話的request 為6,說明他正在請求lmode=6的會話,即sid=158的會話。
我的解決辦法: 把那個會話kill掉。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28916011/viewspace-1374854/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- windows10系統下滑鼠卡住不動的解決方法Windows
- 記一次詭異的故障排查經歷
- win10系統更新卡住了怎麼辦_win10更新卡住不動解決方法Win10
- 在Linux中,如何進行系統故障排查?Linux
- 一次“不負責任”的 K8s 網路故障排查經驗分享K8S
- Centos 伺服器系統記憶體故障排查CentOS伺服器記憶體
- dpdk-lvs的一次線上故障排查報告
- 線上故障的排查清單,運維拿走不謝!運維
- 解Bug之路-記一次儲存故障的排查過程
- 公司內部一次關於OOM故障覆盤分享OOM
- 應用故障排查
- rsync 故障排查整理
- 入門運維必知必會的系統故障排查和修復技巧運維
- 一次HIS系統卡頓原因排查過程分享
- 光纖故障診斷和故障排查
- MogDB openGauss故障排查流程
- 記一次SparkStreaming不產生新的batchJob的問題排查SparkBAT
- 記一次FreeBSD系統中mysql服務異常的排查過程MySql
- 記IPSec VPN對接故障的排查
- 記一次自動恢復的支付故障
- 一次StackOverflowError排查,原因竟然和Dubbo有關!Error
- 關於linux類系統的操作Linux
- 關於動態使用keepAlive不生效的問題
- 一次死鎖導致CPU異常飄高的整個故障排查過程
- windows系統相關命令及問題排查實踐Windows
- 故障排查工具-strace,tcpdump的簡單使用TCP
- 伺服器的路由故障怎麼排查伺服器路由
- 記一次 Homestead 啟動故障修復
- 004.OpenShift命令及故障排查
- 基於UNIX系統,邏輯故障的資料災難解讀
- 分散式系統–>(關於系統應用的基本概念)分散式
- linux出現故障字符集亂碼故障排查思路Linux
- Linux CPU 上下文切換的故障排查Linux
- 01關於版本控制系統
- Angular6專案執行到95%emitting LicenseWebpackPlugin不動卡住AngularMITWebPlugin
- 關於React中動畫不生效的一些思考React動畫
- 記一次線上 K8s Ingress 訪問故障排查,最後竟不是 Post 的鍋K8S
- 伺服器網路故障如何排查伺服器
- win10轉圈無法進入系統怎麼辦_win10開機轉圈卡住不動解決方法Win10