V$SESSION記錄的BLOCKING_SESSION錯誤
記錄一個很詭異的問題,在進行一個測試時碰到的,V$SESSION中記錄的BLOCKING_SESSION資訊是錯誤的,可惜這個問題當時沒有注意,後續也無法再重現出來,只好作為一個現象記錄一下,Oracle給出的一些資訊看來也是不完全可信的。
在會話1執行:
[tingkun.yang@node1 ~]$ sqlplus
test/test
SQL*Plus: Release 10.2.0.5.0 -
Production on Sun Nov 25 04:04:00 2012
Copyright (c) 1982, 2010, Oracle.
All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL> set pages 100 lines 140
SQL> create table t_lock (id number, name varchar2(30), gender varchar2(8));
Table created.
SQL> insert into t_lock values
(1, 'a', 'm');
1 row created.
SQL> insert into t_lock values
(2, 'b', 'f');
1 row created.
SQL> commit;
Commit complete.
SQL> update t_lock set name =
'c' where id = 1;
1 row updated.
SQL> select sid from v$mystat
where rownum = 1;
SID
----------
151
在會話2執行同一行的更新,被鎖定:
[tingkun.yang@node1 ~]$ sqlplus
test/test
SQL*Plus: Release 10.2.0.5.0 -
Production on Sun Nov 25 04:03:27 2012
Copyright (c) 1982, 2010, Oracle.
All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL> set pages 100 lines 120
SQL> update t_lock set name = 'd' where id = 1;
在會話3上執行對V$SESSION的查詢,當時沒有太注意:
SQL> conn / as sysdba
Connected.
SQL> select sid, event, blocking_session from v$session where usernamE =
'TEST';
SID EVENT
BLOCKING_SESSION
---------- ----------------------------------------------------------------
----------------
131 SQL*Net message from client
151 SQL*Net message from client
SQL> select sid, event,
blocking_session from v$session where usernamE = 'TEST';
SID EVENT
BLOCKING_SESSION
---------- ----------------------------------------------------------------
----------------
131 enq: TX - row lock
contention
161
151 SQL*Net message from client
隨後在會話1執行了ROLLBACK:
SQL> roll;
Rollback complete.
檢查了會話2的連線資訊:
1 row updated.
SQL> select sid from v$mystat
where rownum = 1;
SID
----------
131
這時才發現,之前查詢的V$SESSION中的BLOCKING_SESSION資訊是錯誤的。當前資料庫只有兩個測試會話,分別是131和151,而BLOCKING_SESSION給出的結果居然是161。雖然V$SESSION中還有BLOCKING_SESSION_STATUS列來表示當前的BLOCKING_SESSION是否有意義,但是一般而言,如果BLOCKING_SESSION_STATUS的值不是VALID,那麼BLOCKING_SESSION的值會是NULL,但是像這種值本身就是錯誤的,還是第一次碰到。
由於沒有辦法重現,現在確定不了Oracle為什麼會出現這種問題,只能先作為一個異常案例記錄一下,如果以後發現類似的錯誤,再進行分析。不過這提示一點,Oracle檢視的返回結果經常作為我們診斷、分析問題的依據,但是如果結果本身不可信,那麼在此基礎上推匯出來的結果很可能也是不可信的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-1060813/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SpringMVC錯誤記錄SpringMVC
- C++錯誤記錄C++
- 碰見一個BLOCKING_SESSION顯示不正確的BUGBloCSession
- 記錄一次根據錯誤資訊無法定位錯誤的錯誤
- 錯誤記錄:apache預設網頁訪問錯誤Apache網頁
- 20201215]記錄工作中的錯誤.txt
- tensorflow錯誤記錄:tf.concat
- JS錯誤記錄 – dom操作 – 排序JS排序
- 假資料填充錯誤記錄
- Qt 錯誤記錄registered using qRegisterMetaType().QT
- [20181219]記錄自己工作中的錯誤.txt
- Docker環境編譯時的錯誤記錄Docker編譯
- CRSF過期,錯誤跳轉(記錄)
- python程式碼錯誤RuntimeError: Session is closedPythonErrorSession
- 記錄一次錯誤的使用當前時間new Date()引發的錯誤
- 記錄redis佇列read error on connection to錯誤Redis佇列Error
- vagrant homestead 錯誤記錄以及解決方案
- 記錄一次homestead意外關閉導致的錯誤
- [記錄]關於安裝VMware workstation 時我遇到的錯誤
- Laravel 大檔案分塊上傳錯誤記錄Laravel
- abp9 .net8 升級錯誤記錄
- 虛擬機器部署 Sentinel 服務錯誤記錄虛擬機
- 記錄一個 Nginx-FastCGI-"Primary script unknown" 錯誤NginxAST
- [記錄]在高光譜影像分類中遭遇的愚蠢錯誤
- session和v$session說明Session
- Session物件改變請求頭值導致的401錯誤Session物件
- 10.17 V$SESSIONSession
- V$SESSION COMMANDSession
- 華為雲 PHP 加速映象建立 Laravel 專案錯誤記錄PHPLaravel
- JS錯誤記錄 – 右側懸浮框 – 緩衝運動JS
- 記錄一次一次監聽無法連線的錯誤
- 記錄一次數字和字串比較時候犯的錯誤字串
- Windows 下 PHP 7 中 *getcsv 函式解析 CSV 錯誤的問題記錄WindowsPHP函式
- v$Session詳解Session
- 記錄springboot專案裡關於session的一個問題(session監聽器失效)Spring BootSession
- 記錄安裝conda install Python庫時報No module named ‘tensorflow‘錯誤Python
- 如何在其他Session跳過被鎖定的記錄Session
- mongodb 報錯記錄MongoDB
- Go 的錯誤處理策略 筆記Go筆記