所謂會(huì)話,其實(shí)就是一次連接,假設(shè)你用plsql連接數(shù)據(jù)庫,只要你連上了(不管有沒有操作),他都是一個(gè)會(huì)話。其他的也是一樣,比如說在數(shù)據(jù)庫執(zhí)行的計(jì)劃任務(wù),這個(gè)也是一次會(huì)話,只不過這個(gè)會(huì)話是oracle自己發(fā)起的,而不是人為發(fā)起的。比如,網(wǎng)頁連接了數(shù)據(jù)庫,那么這個(gè)也是一次會(huì)話。斷開連接后,會(huì)話關(guān)閉。
創(chuàng)新互聯(lián)公司主要從事網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)牙克石,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
至于一次調(diào)用,這個(gè)好理解,你調(diào)用了oracle里面的東西就可以說成調(diào)用,不過這個(gè)沒什么實(shí)際意義,基本上在查詢和操作時(shí),沒什么人注意。舉例說吧,一張表按某字段分組取最大值,如果用select max(yyy) from table group by xxx
那么這張表調(diào)用一次(因?yàn)槟阒挥昧艘淮尉桶褑栴}搞定了,動(dòng)作包括分組和取最大值)
但是實(shí)際的生產(chǎn)系統(tǒng),不可能這么簡單,會(huì)有一些很復(fù)雜的sql和存儲(chǔ)過程,人們一般為了優(yōu)化,就會(huì)去盡量減少相同表的調(diào)用次數(shù),其實(shí)一般就是減少嵌套的層數(shù)和使用盡量短的語句,個(gè)人的理解。
連接 (connection)與會(huì)話 (session)這兩個(gè)概念均與用戶進(jìn)程 (user process)緊密相關(guān),但二者又具有不同的含義。
連接 :用戶進(jìn)程和 Oracle 實(shí)例間的通信通道(communication pathway)。這個(gè)通信通道是通過進(jìn)程間的通信機(jī)制(interprocess communication mechanisms)(在同一個(gè)計(jì)算機(jī)上運(yùn)行用戶進(jìn)程和 Oracle 進(jìn)程)或網(wǎng)絡(luò)軟件(network software)(當(dāng)數(shù)據(jù)庫應(yīng)用程序與 Oracle 服務(wù)器運(yùn)行在不同的計(jì)算機(jī)上時(shí),就需要通過網(wǎng)絡(luò)來通信)建立的。
會(huì)話 :用戶通過用戶進(jìn)程與 Oracle 實(shí)例建立的連接[此處連接與上文中的連接含義不同 ,主要指用戶和數(shù)據(jù)庫間的聯(lián)系 ]。例如,當(dāng)用戶啟動(dòng) SQL*Plus 時(shí)必須提供有效的用戶名和密碼,之后 Oracle 為此用戶建立一個(gè)會(huì)話。從用戶開始連接到用戶斷開連接(或退出數(shù)據(jù)庫應(yīng)用程序)期間,會(huì)話一直持續(xù)。
Oracle 數(shù)據(jù)庫中的同一個(gè)用戶可以同時(shí)創(chuàng)建多個(gè)會(huì)話。例如,用戶名/密碼為的SCOTT/TIGER 用戶可以多次連接到同一個(gè) Oracle 實(shí)例。
當(dāng)系統(tǒng)沒有運(yùn)行在共享服務(wù)模式下時(shí),Oracle 為每個(gè)用戶會(huì)話創(chuàng)建一個(gè)服務(wù)進(jìn)程(server process)。而當(dāng)系統(tǒng)運(yùn)行在共享服務(wù)模式下時(shí),多個(gè)用戶會(huì)話可以共享同一個(gè)服務(wù)進(jìn)程。
希望能幫到您!
連接并不是會(huì)話的同義詞,發(fā)現(xiàn)這一點(diǎn)時(shí)很多人都很詫異。在大多數(shù)人眼里,它們都是一樣的,但事實(shí)上并不一定如此。在一條連接上可以建立0個(gè)、一個(gè)或多個(gè)會(huì)話。各個(gè)會(huì)話是單獨(dú)而且獨(dú)立的,即使它們共享同一條數(shù)據(jù)庫物理連接也是如此。一個(gè)會(huì)話中的提交不會(huì)影響該連接上的任何其他會(huì)話。實(shí)際上,一條連接上的各個(gè)會(huì)話可以使用不同的用戶身份!
在Oracle中,連接只是客戶進(jìn)程和數(shù)據(jù)庫實(shí)例之間的一條特殊線路,最常見的就是網(wǎng)絡(luò)連接。這條連接可能連接到一個(gè)專用服務(wù)器進(jìn)程,也可能連接到調(diào)度器。如前所述,連接上可以有0個(gè)或多個(gè)會(huì)話,這說明可以有連接而無相應(yīng)的會(huì)話。另外,一個(gè)會(huì)話可以有連接也可以沒有連接。使用高級Oracle Net特性(如連接池)時(shí),客戶可以刪除一條物理連接,而會(huì)話依然保留(但是會(huì)話會(huì)空閑)??蛻粼谶@個(gè)會(huì)話上執(zhí)行某個(gè)操作時(shí),它會(huì)重新建立物理連接。下面更詳細(xì)地定義這些術(shù)語:* 連接(connection):連接是從客戶到Oracle實(shí)例的一條物理路徑。連接可以在網(wǎng)絡(luò)上建立,或者通過IPC機(jī)制建立。通常會(huì)在客戶進(jìn)程與一個(gè)專用服務(wù)器或一個(gè)調(diào)度器之間建立連接。不過,如果使用Oracle的連接管理器(Connection Manager ,CMAN),還可以在客戶和CMAN之間以及CMAN和數(shù)據(jù)庫之間建立連接。CMAN的介紹超出了本書的范圍,不過Oracle Net Services Administrator‘s Guide對CMAN有詳細(xì)的說明。
* 會(huì)話(session):會(huì)話是實(shí)例中存在的一個(gè)邏輯實(shí)體。這就是你的會(huì)話狀態(tài)(session state),也就是表示特定會(huì)話的一組內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)。提到“數(shù)據(jù)庫連接”時(shí),大多數(shù)人首先想到的就是“會(huì)話”。你要在服務(wù)器中的會(huì)話上執(zhí)行SQL、提交事務(wù)和運(yùn)行存儲(chǔ)過程。
可以使用SQL*Plus來看一看實(shí)際的連接和會(huì)話是什么樣子,從中還可以了解到,實(shí)際上一條連接有多個(gè)會(huì)話的情況相當(dāng)常見。這里使用了AUTOTRACE命令,并發(fā)現(xiàn)有兩個(gè)會(huì)話。我們在一條連接上使用一個(gè)進(jìn)程創(chuàng)建了兩個(gè)會(huì)話。以下是其中的第一個(gè)會(huì)話: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 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
碰到錯(cuò)誤,原來是沒有添加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 PADDR STATUS
------------------------------ ---------- ---------- --------- -------- --------
STORM 141 180 DEDICATED 30A1BDCC INACTIVE STORM 148 62 DEDICATED 30A1BDCC INACTIVE
SQL disconnect
從技術(shù)上講,這個(gè)命令應(yīng)該叫DESTROY_ALL_SESSIONS更合適,而不是DISCONNECT,因?yàn)槲覀儾]有真正物理地?cái)嚅_連接。
在SQL*Plus中要真正地?cái)嚅_連接,應(yīng)該執(zhí)行“exit”命令,因?yàn)槟惚仨毻顺霾拍芡耆蜂N連接。
SQL select username, sid, serial#, server, paddr, status from v$session where username = 'STORM';no rows selected
可以看到,這個(gè)賬戶名下沒有會(huì)話,但是仍有一個(gè)進(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)會(huì)話的“連接”??梢允褂肧QL*Plus的CONNECT命令(這個(gè)命令的名字也起得不恰當(dāng)),在這個(gè)現(xiàn)有的進(jìn)程中創(chuàng)建一個(gè)新會(huì)話(CONNECT命令叫CREATE_SESSION更合適):可以看到,這個(gè)賬戶名下沒有會(huì)話,但是仍有一個(gè)進(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還是一樣的,所以我們還是在使用同一條物理連接,但是(可能)有一個(gè)不同的SID.我說“可能有”,是因?yàn)橐苍S還會(huì)分配同樣的SID,這取決于在我們注銷時(shí)是否有別人登錄,以及我們原來的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合起來能作為一個(gè)session的唯一標(biāo)識。
這個(gè)不一樣的,舉個(gè)簡單的例子你就明白了
假如說,你去移動(dòng)營業(yè)廳辦理業(yè)務(wù),你跟移動(dòng)營業(yè)廳的服務(wù)人員就建立了一個(gè)鏈接,一個(gè)會(huì)話,這個(gè)是一個(gè)邏輯上的概念,也可以簡單的理解為一個(gè)鏈接就是一個(gè)會(huì)話。
你去了可能辦理很多業(yè)務(wù),比如查話費(fèi),辦套餐,買手機(jī)等等,每一個(gè)行為都可以理解為一個(gè)事務(wù),這里稍微提一下,事務(wù)的四個(gè)特性ACID(原子性(Atomicity) ;一致性(Consistency) ;隔離性(Isolation);持久性(Durability) ),事務(wù)是業(yè)務(wù)層面的一個(gè)概念。比如你充話費(fèi),當(dāng)你把錢交給業(yè)務(wù)員,業(yè)務(wù)員那邊操作成功了,你的賬號才會(huì)有話費(fèi)到賬,這就是一個(gè)事務(wù);
想象一下,當(dāng)你與Oracle簡歷鏈接(會(huì)話)時(shí)候,你可能會(huì)有多個(gè)操作,比如update操作,當(dāng)你執(zhí)行完update后只有當(dāng)你提交了,別的鏈接才能看到跟你一樣的值。
一個(gè)會(huì)話可以有多個(gè)事務(wù)。
查看session:
select * from v$session where username is not null
select username,count(username) from v$session where username is not null group by username
當(dāng)前連接數(shù):
select count(*) from v$process
查看連接數(shù)參數(shù)的設(shè)置情況
select value from v$parameter where name = 'processes'
Select count(*) from v$session where status='ACTIVE' #并發(fā)連接數(shù)
當(dāng)前名稱:如何理解oracle會(huì)話,oracle 會(huì)話
本文鏈接:http://jinyejixie.com/article4/dsdjcoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、App設(shè)計(jì)、搜索引擎優(yōu)化、網(wǎng)站內(nèi)鏈、全網(wǎng)營銷推廣、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)