Oracle 連接和會話的區(qū)別

Oracle 連接和會話的區(qū)別

連接并不是會話的同義詞,發(fā)現(xiàn)這一點(diǎn)時很多人都很詫異。在大多數(shù)人眼里,它們都是一樣的,但事實(shí)上并不一定如此。

在一條連接上可以建立0個、一個或多個會話。

各個會話是單獨(dú)而且獨(dú)立的,即使它們共享同一條數(shù)據(jù)庫物理連接也是如此。一個會話中的提交不會影響該連接上的任何其他會話。實(shí)際上,一條連接上的各個會話可以使用不同的用戶身份!在Oracle中,連接只是客戶進(jìn)程和數(shù)據(jù)庫實(shí)例之間的一條特殊線路,最常見的就是**連接。這條連接可能連接到一個專用服務(wù)器進(jìn)程,也可能連接到調(diào)度器。

如前所述,連接上可以有0個或多個會話,這說明可以有連接而無相應(yīng)的會話。另外,一個會話可以有連接也可以沒有連接。使用高級Oracle Net特性(如連接池)時,客戶可以刪除一條物理連接,而會話依然保留(但是會話會空閑)。

客戶在這個會話上執(zhí)行某個操作時,它會重新建立物理連接。下面更詳細(xì)地定義這些術(shù)語:* 連接(connection):連接是從客戶到Oracle實(shí)例的一條物理路徑。連接可以在**上建立,或者通過IPC機(jī)制建立。

通常會在客戶進(jìn)程與一個專用服務(wù)器或一個調(diào)度器之間建立連接。不過,如果使用Oracle的連接管理器(Connection Manager ,CMAN),還可以在客戶和CMAN之間以及CMAN和數(shù)據(jù)庫之間建立連接。CMAN的介紹超出了本書的范圍,不過Oracle Net Services Administrator‘s Guide對CMAN有詳細(xì)的說明。

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

可以使用SQL*Plus來看一看實(shí)際的連接和會話是什么樣子,從中還可以了解到,實(shí)際上一條連接有多個會話的情況相當(dāng)常見。這里使用了AUTOTRACE命令,并發(fā)現(xiàn)有兩個會話。我們在一條連接上使用一個進(jìn)程創(chuàng)建了兩個會話。以下是其中的**個會話:sqlplus \”storm/unimas\” SQL> select username, sid, serial#, server, paddr, status from v$session where username = \’STORM\’;USERNAME SID SERIAL# SERVER PADDR STATUS—————————— ———- ———- ——— ——– ——–STORM 148 60 DEDICATED 30A1BDCC INACTIVESQL> 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 statisticsUSERNAME SID SERIAL# SERVER PADDR STATUS—————————— ———- ———- ——— ——– ——–STORM 141 180 DEDICATED 30A1BDCC INACTIVE STORM 148 62 DEDICATED 30A1BDCC INACTIVESQL> disconnect從技術(shù)上講,這個命令應(yīng)該叫DESTROY_ALL_SESSIONS更合適,而不是DISCONNECT,因?yàn)槲覀儾]有真正物理地斷開連接。

在SQL*Plus中要真正地斷開連接,應(yīng)該執(zhí)行“exit”命令,因?yàn)槟惚仨毻顺霾拍芡耆蜂N連接。SQL> select username, sid, serial#, server, paddr, status from v$session where username = \’STORM\’;no rows selected可以看到,這個賬戶名下沒有會話,但是仍有一個進(jìn)程,相應(yīng)地有一條物理連接(使用前面的ADDR值)SQL> select username, program from v$process where addr = hextoraw(\’30A1BDCC\’);USERNAME PROGRAM————— ————————————————oracle oracle@hb (TNS V1-V3)SQL>所以,這就有了一條沒有相關(guān)會話的“連接”??梢允褂肧QL*Plus的CONNECT命令(這個命令的名字也起得不恰當(dāng)),在這個現(xiàn)有的進(jìn)程中創(chuàng)建一個新會話(CONNECT命令叫CREATE_SESSION更合適):可以看到,這個賬戶名下沒有會話,但是仍有一個進(jìn)程,相應(yīng)地有一條物理連接(使用前面的ADDR值)SQL> select username, sid, serial#, server, paddr, status from v$session where username = \’STORM\’;USERNAME SID SERIAL# SERVER PADDR STATUS—————————— ———- ———- ——— ——– ——–STORM 153 58 DEDICATED 30A1BDCC INACTIVE可以注意到,PADDR還是一樣的,所以我們還是在使用同一條物理連接,但是(可能)有一個不同的SID.我說“可能有”,是因?yàn)橐苍S還會分配同樣的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的**標(biāo)識。

傳輸層建立的“連接”和會話層建立的“會話”有什么區(qū)別?

這樣說吧,傳輸層是會話層的建立的基礎(chǔ)。根據(jù)OSI模型。

傳輸層的上層是會話層。

越是上層越是接近用戶的使用。會話層建立的是一個會話連接,此端的一個程序連接對放的一個程序。你可以理解成我要給你打電話,只需要用自己的手機(jī)撥打?qū)Ψ降碾娫捥柎a就可以了。而傳輸層呢,真正意義上的建立連接,有兩個傳輸層協(xié)議,tcp和udp。

使用端口號區(qū)分上層也就是會話層的程序連接。例:192.168.100.2:2000—-202.12.23.145:80在傳輸層就是這樣的連接方式。再往下就是**層,進(jìn)行尋址路由轉(zhuǎn)發(fā),讓的數(shù)據(jù)能過到達(dá)對方那里。

傳輸層也就可以理解成對方的手機(jī)號碼。手機(jī)電話本里的名字比如應(yīng)用程序。想要詳細(xì)了解這方面信息,去看一看TCP/IP協(xié)議,你會受益匪淺的。

白話Oracle的連接和會話的區(qū)別

有A/B兩個城市,需要從A運(yùn)送白菜到B城 我們先建設(shè)一條公路 然后運(yùn)送白菜過去,包括準(zhǔn)備白菜和運(yùn)送白菜以及返回等一系列的動作。 一條公路,可以運(yùn)送0-n次的白菜 當(dāng)然從A到B的公路也可能不只一條。

ssl包含哪些協(xié)議?3.ssl連接和ssl會話的區(qū)別是什么

SSL百科(Secure Sockets Layer)安**接層協(xié)議是Netscape公司1995年推出的一種安全通信協(xié)議。SSL提供了兩臺計算機(jī)之間的安全連接,對整個會話進(jìn)行了加密,從而保證了安全傳輸。

SSL協(xié)議建立在可靠的TCP傳輸控制協(xié)議之上,并且與上層協(xié)議無關(guān),各種應(yīng)用層協(xié)議(如:HTTP,F(xiàn)TP,TELNET等)能通過SSL協(xié)議進(jìn)行透明傳輸。

SSL協(xié)議分為兩層:SSL握手協(xié)議和SSL記錄協(xié)議。

什么是數(shù)據(jù)庫連接?連接和會話之間有什么關(guān)系?

原理上和網(wǎng)站的一個session差不多,只是session是把key放在cookie里面,數(shù)據(jù)庫連接是把key放在客戶端的library的內(nèi)存里(比如.Net Sql Client)。對MS SQL來說,這個連接的協(xié)議叫TDS,底下可以走多種傳輸層協(xié)議,比如tcpip,也可以named pipe。

而MySQL就又有自己的協(xié)議。

當(dāng)然在拿到key之前,先要走個authentication過程,比如Windows Authentication或者Sql authentication,過了authentication才會產(chǎn)生一個session key。如果是啟用SSL的話那么整個連接上的數(shù)據(jù)流還會被加密,防止信息泄露或者中間人攻擊。

session 和connection的不同

1.連接(connection)是一個物理的概念,它指的是一個通過**建立的客戶端和專有服務(wù)器(Dedicated Server)或調(diào)度器(Shared Server)的一個**連接。2.會話(session)是一個邏輯的概念,它是存在于實(shí)例中。

一個連接可以擁有多個會話也可以沒有會話,同一個連接上的不同會話之間不會相互影響。