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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- session和v$session說明Session
- 10.17 V$SESSIONSession
- V$SESSION COMMANDSession
- v$Session詳解Session
- 10.18 V$SESSION_BLOCKERSSessionBloC
- 10.21 V$SESSION_EVENTSession
- 10.25 V$SESSION_WAITSessionAI
- v$session - 你看到的event真的是session當前的等待事件麼?Session事件
- 10.27 V$SESSION_WAIT_HISTORYSessionAI
- 10.26 V$SESSION_WAIT_CLASSSessionAI
- [20221023]v$session_longops.txtSessionGo
- V$ACTIVE_SESSION_HISTORY檢視的使用Session
- MTS方式連線V$SESSION中的SERVER狀態SessionServer
- [20211019]V$DETACHED_SESSION檢視.txtSession
- 利用v$session_longops監控長操作SessionGo
- oracle 什麼時候才回收v$session 中status='KILLED'的程式OracleSession
- [20220120]探究v$session.SQL_EXEC_ID在共享池.txtSessionSQL
- Cloud Foundry Session Affinity(Sticky Session)的實現CloudSession
- [20230226]探究v$session.SQL_EXEC_ID在共享池(windows).txtSessionSQLWindows
- [20180918]disconnect session和kill session的區別.txtSession
- PHP Session的用法PHPSession
- [20230227]探究v$session.SQL_EXEC_ID在共享池(補充).txtSessionSQL
- keycloak~關於session idle和session max的解釋Session
- [20221130]測試訪問檢視v$session幾種情況的效能差異.txtSession
- laravel session 與 php session配置LaravelSessionPHP
- [20211214]檢視檢視V$ACTIVE_SESSION_HISTORY遇到奇怪問題.txtSession
- SessionSession
- cookie與session的使用CookieSession
- PHP 的 SESSION 機制PHPSession
- MySQL的session過程MySqlSession
- Cassandra的Session會話Session會話
- 【遞迴SQL】v$session--X$KSUSE s,X$KSLED e對應情況遞迴SQLSession
- rman備份的時候讀取v$session_longops失敗導致備份失敗SessionGo
- Redis分散式Session和普通的cookie session有什麼區別?Redis分散式SessionCookie
- 【API】api 下 session 的 Yes or No?APISession
- cookie和session的區別CookieSession
- Tomcat中的session實現TomcatSession
- 對session和cookie的理解SessionCookie
- Spring Session JDBC的使用 - javadevjournalSpringSessionJDBCJavadev