incc與oracle連接_Oracle 連接和會話的區別

連接并不是會話的同義詞,發現這一點時很多人都很詫異。在大多數人眼里,它們都是一樣的,但事實上并不一定如此。在一條連接上可以建立0個、一個或多個會話。各個會話是單獨而且獨立的,即使它們共享同一條數據庫物理連接也是如此。一個會話中的提交不會影響該連接上的任何其他會話。實際上,一條連接上的各個會話可以使用不同的用戶身份!

在Oracle中,連接只是客戶進程和數據庫實例之間的一條特殊線路,最常見的就是網絡連接。這條連接可能連接到一個專用服務器進程,也可能連接到調度器。如前所述,連接上可以有0個或多個會話,這說明可以有連接而無相應的會話。另外,一個會話可以有連接也可以沒有連接。使用高級Oracle Net特性(如連接池)時,客戶可以刪除一條物理連接,而會話依然保留(但是會話會空閑)。客戶在這個會話上執行某個操作時,它會重新建立物理連接。下面更詳細地定義這些術語:

* 連接(connection):連接是從客戶到Oracle實例的一條物理路徑。連接可以在網絡上建立,或者通過IPC機制建立。通常會在客戶進程與一個專用服務器或一個調度器之間建立連接。不過,如果使用Oracle的連接管理器(Connection Manager ,CMAN),還可以在客戶和CMAN之間以及CMAN和數據庫之間建立連接。CMAN的介紹超出了本書的范圍,不過Oracle Net Services Administrator’s Guide(可以從http://otn.oracle.com免費得到)對CMAN有詳細的說明。

* 會話(session):會話是實例中存在的一個邏輯實體。這就是你的會話狀態(session state),也就是表示特定會話的一組內存中的數據結構。提到“數據庫連接”時,大多數人首先想到的就是“會話”。你要在服務器中的會話上執行SQL、提交事務和運行存儲過程。

可以使用SQL*Plus來看一看實際的連接和會話是什么樣子,從中還可以了解到,實際上一條連接有多個會話的情況相當常見。這里使用了AUTOTRACE命令,并發現有兩個會話。我們在一條連接上使用一個進程創建了兩個會話。以下是其中的第一個會話:

sqlplus "storm/unimas"

SQL> select username, sid, serial#, server, paddr, status from v$session where username = 'STORM';

USERNAME? ? ?SID ? ?SERIAL# SERVER ? ?PADDRSTATUS

------------------------------ ---------- ---------- --------- -------- --------

STORM? ? ?148?60 DEDICATED 30A1BDCC INACTIVE

SQL> set autotrace on statistics

SP2-0618: Cannot find the Session Identifier. ?Check PLUSTRACE role is enabled

SP2-0611: Error enabling STATISTICS report

SQL>

碰到錯誤,原來是沒有添加PLUSTRACE role

sqlplus "sys/unimas as sysdba"

SQL> create role plustrace;

Role created.

SQL> grant select on v_$sesstat to plustrace;

Grant succeeded.

SQL> grant select on v_$statname to plustrace;

Grant succeeded.

SQL> grant select on v_$mystat to plustrace;

Grant succeeded.

SQL> grant plustrace to dba with admin option;

Grant succeeded.

SQL> grant plustrace to STORM;

Grant succeeded.

重新登錄storm

SQL> set autotrace on statistics

USERNAME? ? ?SID ? ?SERIAL# SERVER ? ?PADDRSTATUS

------------------------------ ---------- ---------- --------- -------- --------

STORM? ? ?141180 DEDICATED 30A1BDCC INACTIVE

STORM? ? ?148?62 DEDICATED 30A1BDCC INACTIVE

SQL> disconnect

從技術上講,這個命令應該叫DESTROY_ALL_SESSIONS更合適,而不是DISCONNECT,因為我們并沒有真正物理地斷開連接。

在SQL*Plus中要真正地斷開連接,應該執行“exit”命令,因為你必須退出才能完全撤銷連接。

SQL> select username, sid, serial#, server, paddr, status from v$session where username = 'STORM';

no rows selected

可以看到,這個賬戶名下沒有會話,但是仍有一個進程,相應地有一條物理連接(使用前面的ADDR值)

SQL> select username, program from v$process where addr = hextoraw('30A1BDCC');

USERNAMEPROGRAM

--------------- ------------------------------------------------

oracleoracle@hb (TNS V1-V3)

SQL>

所以,這就有了一條沒有相關會話的“連接”。可以使用SQL*Plus的CONNECT命令(這個命令的名字也起得不恰當),在這個現有的進程中創建一個新會話(CONNECT命令叫CREATE_SESSION更合適):可以看到,這個賬戶名下沒有會話,但是仍有一個進程,相應地有一條物理連接(使用前面的ADDR值)

SQL> select username, sid, serial#, server, paddr, status from v$session where username = 'STORM';

USERNAME? ? ?SID ? ?SERIAL# SERVER ? ?PADDRSTATUS

------------------------------ ---------- ---------- --------- -------- --------

STORM? ? ?153?58 DEDICATED 30A1BDCC INACTIVE

可以注意到,PADDR還是一樣的,所以我們還是在使用同一條物理連接,但是(可能)有一個不同的SID。我說“可能有”,是因為也許還會分配同樣的SID,這取決于在我們注銷時是否有別人登錄,以及我們原來的SID是否可用。

另外:

Serial# is in v$session. It is an Oracle generated value used in

combination with the SID to create a unique session identifier.

SID和SERIAL合起來能作為一個session的唯一標識。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396327.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396327.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396327.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CodeForces 176B Word Cut(DP)

題意:給你a串和b串,你能切k次,每次切完將尾部分放在頭的前面,問有多少種方案切k次從a串變為b串 思路:令dp[i][0]為砍了i次變成b串的方案數,dp[i][1]為砍了i次變成非b串的方案數,然后預處理一下前…

如何將React App轉換為React Native

I have been working on a lot of mobile projects lately?—?including Cordova, PhoneGap, React Native, some Ionic and Swift?—?but I have to say, React Native is by far the best experience in mobile development I have had so far. It has great, web-like d…

HTTP狀態碼:400\500 錯誤代碼

轉自:http://blog.sina.com.cn/s/blog_59b052fa0100it74.html一些常見的狀態碼為:200 - 服務器成功返回網頁404 - 請求的網頁不存在503 - 服務不可用詳細分解:1xx(臨時響應)表示臨時響應并需要請求者繼續執行操作的狀態…

dhcp服務

安裝與配置 配置文件 修改配置文件 復制這個文件到另一端 打開另一端的配置文件 原端輸入這些命令可以去掉英文 然后vim進入另一端配置文件 全局配置不在{}內的 分發范圍是指哪個ip到哪個ip的范圍 指定固定電腦獲取固定位置 原端修改配置文件 下面進行啟動dhcp 克隆一臺虛擬機&…

python數據結構與算法40題_Python數據結構與算法40:遞歸編程練習題3:ASCII謝爾賓斯基地毯...

注:本文如涉及到代碼,均經過Python 3.7實際運行檢驗,保證其嚴謹性。本文閱讀時間約為7分鐘。遞歸編程練習題3:ASCII謝爾賓斯基地毯謝爾賓斯基地毯謝爾賓斯基地毯是形如上圖的正方形分形圖案,每個地毯可分為等大小的9份…

使用Python發送電子郵件

by Arjun Krishna Babu通過Arjun Krishna Babu 如何使用Python發送電子郵件 (How to send emails using Python) As a learning exercise, I recently dug into Python 3 to see how I could fire off a bunch of emails. There may be more straightforward methods of doing…

此blog不更了

1轉載于:https://www.cnblogs.com/ybai62868/p/5384097.html

Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart)

在接觸WebService時值得收藏的一篇文章: 在調試Axis1.4訪問WebService服務時,出現以下錯誤: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart) 有錯誤找到錯誤原因以及發現值得收藏的…

java遍歷樹結構數據_Java數據結構——二叉樹的遍歷(匯總)

二叉樹的遍歷分為深度優先遍歷(DFS)和廣度優先遍歷(BFS)DFS遍歷主要有:前序遍歷中序遍歷后序遍歷一、遞歸實現DFSNode.java:public class Node {private Object data;Node richild;Node lechild;public Object getData() {return data;}public void setData(Object …

vue 移動端頭像裁剪_使用vue-cropper裁剪正方形上傳頭像-阿里云開發者社區

引用方式在組件內使用import { VueCropper } from vue-croppercomponents: {VueCropper,},main.js里面使用import VueCropper from vue-cropperVue.use(VueCropper)基本使用方法ref"cropper":img"option.img":autoCrop"true":fixedNumber"[…

規則引擎 設計 git_引擎蓋下的Git

規則引擎 設計 gitby Wassim Chegham由Wassim Chegham 引擎蓋下的Git (Git under the hood) Let’s explore some common Git commands, and dive into its internals to see what Git does when you run them.讓我們探索一些常見的Git命令,并深入了解其內部&#…

練習題之死鎖

public class PrintMain {public static String obj1"obj1";public static String obj2"obj2";public static void main(String[] args) {new Thread(new Runnable() {public void run() {System.out.println(new Date().toString "LockA開始執行&qu…

啟用或禁用對 Exchange Server 中的郵箱的 POP3 或 IMAP4 訪問

https://docs.microsoft.com/zh-cn/Exchange/clients/pop3-and-imap4/configure-mailbox-access?viewexchserver-2019 記錄下轉載于:https://www.cnblogs.com/amoy9812/p/9875426.html

java有什么壓力_編程語言的心智負擔!你學編程得有多大的壓力快來測試一下...

很多編程語言對比的文章,總喜歡比較各種編程語言的性能、語法、IO模型。本文將從心智負擔這個角度去比較下不同的編程語言和技術。內存越界如:C語言、C(C with class)C/C可以直接操作內存,但編程必須要面對內存越界問題。發生內存越界后&…

什么叫有效物理網卡_如何區分虛擬網卡和物理網卡?-阿里云開發者社區

一、什么是物理網卡和虛擬網卡?圖示如下:紅色部分包含VMWare的為虛擬網卡。通常,我們部署VMWare虛擬機、VMSphere虛擬集群、XenCenter虛擬集群是都會涉及虛擬網卡。二、辨別物理網卡和虛擬網卡的應用場景場景一:一般部署虛擬集群的…

算法復雜度的表示法_用簡單的英語算法:時間復雜度和Big-O表示法

算法復雜度的表示法by Michael Olorunnisola通過Michael Olorunnisola 用簡單的英語算法:時間復雜度和Big-O表示法 (Algorithms in plain English: time complexity and Big-O notation) Every good developer has time on their mind. They want to give their us…

Android Studio 開始運行錯誤

/********************************************************************************* Android Studio 開始運行錯誤* 說明:* 打開Android Studio就拋出這個錯誤。* * 2017-4-1 深圳 南…

IOS 計步器

這篇博客介紹的是當前比較流行的“計步器”-只是簡單的知識點 計步器的實現在IOS8開始進行了改變。 但是我會對之前之后的都進行簡單介紹。 IOS 8 - // // ViewController.m // CX 計步器 // // Created by ma c on 16/4/12. // Copyright © 2016年 bjsxt. All rights…

vue學習之二ECMAScript6標準

一、ECMAScript6標準簡述 ECMAScript 6.0(以下簡稱 ES6)是 JavaScript 語言的下一代標準,已經在 2015 年 6 月正式發布了。它的目標,是使得 JavaScript 語言可以用來編寫復雜的大型應用程序,成為企業級開發語言。 1.1E…

抖音吸粉_抖音吸粉5大實用方法首次分享!輕松實現粉絲10000+

抖音,是一款可以拍短視頻的音樂創意短視頻社交軟件,該軟件于2016年9月上線,是一個專注年輕人音樂短視頻社區。用戶可以通過這款軟件選擇歌曲,拍攝音樂短視頻,形成自己的作品。抖音APP僅推出半年,用戶量就突…