V$SESSION的SID&SERIAL#
最近學習ORACLE優化總想著收集一些高手常用的指令碼(諸多效能檢視關聯來關聯去)直接拿來主義,但是收集多了卻自己記不住,總要去查,反省一下原因,就是因為自己拿來的多,變成自己的東西少,其根源在於沒有紮紮實實地打基礎。
因此今後要從每一個重要的效能檢視入手,把他們的內容、什麼情況下使用、之間的關係等好好搞搞清楚。
先記錄一下關於V$SESSION.SID&SERIAL#的關係,這是我在需要殺掉一個會話時產生的疑問:
alter system kill session 'SID, SERIAL#';
我的疑問是:為什麼需要SERIAL#,不是隻是用SID就能唯一確定一個會話嗎?
網上的到的答案是:
sid 會重用,但是同一個SID被重用時,serial#會增加,不會重複。
比如說你在10:00時發現有一個SID 為10 ,serial#為100的session 不正常,想殺掉他,要是直接用kill sid 10 ,而同時這個session 主動退出,新session近來 而又正好用了 10這個SID (這時新session的serial#不會=100,只會比100高),就會發生誤殺的情況。所以Oracle要求我們在殺session時,必須同時指定sid和serial#.
從另外一個角度上說,sid 在同一個instance的當前session中是一個unique key, 而sid ,serial#則是在整個instance生命期內的所有session中是unique key。(不考慮serial#超過最大值,重用的情況)
例如之前我需要執行alter system kill session '147, 33306';
執行之後,我還在同一個PL/SQL DEV的SQL WINDOW中重新做一個查詢,就會又產生一個SID=147的SESSION,但是此時的SERIAL#變為33308了。
因此今後要從每一個重要的效能檢視入手,把他們的內容、什麼情況下使用、之間的關係等好好搞搞清楚。
先記錄一下關於V$SESSION.SID&SERIAL#的關係,這是我在需要殺掉一個會話時產生的疑問:
alter system kill session 'SID, SERIAL#';
我的疑問是:為什麼需要SERIAL#,不是隻是用SID就能唯一確定一個會話嗎?
網上的到的答案是:
sid 會重用,但是同一個SID被重用時,serial#會增加,不會重複。
比如說你在10:00時發現有一個SID 為10 ,serial#為100的session 不正常,想殺掉他,要是直接用kill sid 10 ,而同時這個session 主動退出,新session近來 而又正好用了 10這個SID (這時新session的serial#不會=100,只會比100高),就會發生誤殺的情況。所以Oracle要求我們在殺session時,必須同時指定sid和serial#.
從另外一個角度上說,sid 在同一個instance的當前session中是一個unique key, 而sid ,serial#則是在整個instance生命期內的所有session中是unique key。(不考慮serial#超過最大值,重用的情況)
例如之前我需要執行alter system kill session '147, 33306';
執行之後,我還在同一個PL/SQL DEV的SQL WINDOW中重新做一個查詢,就會又產生一個SID=147的SESSION,但是此時的SERIAL#變為33308了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26521853/viewspace-1281714/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Oracle】-【v$session】v$session的SNIPED狀態OracleSession
- V$SESSIONSession
- 【SESSION】v$session and v$license 中sessions_current 的區別Session
- v$session的解釋Session
- v$session的來源Session
- v$session中的serverSessionServer
- v$session表的妙用Session
- V$session 表的妙用Session
- v$session的blocking_session含義SessionBloC
- session和v$session說明Session
- v session_wait v session_event v system_eventSessionAI
- v$session_event , v$system_event , v$session_waitSessionAI
- [轉] V$session 表的妙用Session
- V$session 表的妙用^_^(轉)Session
- v$session_wait和v$session_event檢視SessionAI
- V$SESSION記錄的BLOCKING_SESSION錯誤SessionBloC
- 10.17 V$SESSIONSession
- V$SESSION COMMANDSession
- v$Session詳解Session
- v$session 檢視Session
- Oracle V$SESSION中的常用列OracleSession
- v$session command 的含義Session
- v$session的一點認知Session
- 關於v$process與v$session中process的理解Session
- 幾個檢視 v$mystat v$systata v$sessionSession
- v$action_session_historySession
- V$SESSION_LONGOPSSessionGo
- V$SESSION_WAITSessionAI
- 10G V$SESSIONSession
- 幾個重要檢視(V$SYSTEM_EVENT V$SESSION_EVENT V$SESSION_WAIT)SessionAI
- kill session V$SESSION標記為KILLED 的2種情況Session
- 11g v$session的新增列Session
- V$session 檢視的小運用Session
- v$session - 你看到的event真的是session當前的等待事件麼?Session事件
- v$session_wait_session的等待情況及熱點塊SessionAI
- 10.21 V$SESSION_EVENTSession
- 【會話】V$SESSION檢視會話Session
- Oracle V$SESSION_WAITOracleSessionAI