樓主您好
成都創(chuàng)新互聯(lián)云計(jì)算的互聯(lián)網(wǎng)服務(wù)提供商,擁有超過13年的服務(wù)器租用、達(dá)州服務(wù)器托管、云服務(wù)器、網(wǎng)站空間、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn),已先后獲得國(guó)家工業(yè)和信息化部頒發(fā)的互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)許可證。專業(yè)提供云主機(jī)、網(wǎng)站空間、域名申請(qǐng)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
會(huì)話,指的是客戶端連接到服務(wù)器的一個(gè)上下文環(huán)境。它是一個(gè)邏輯概念。你比如,創(chuàng)建了一個(gè)會(huì)話,這個(gè)會(huì)話記錄了客戶端的ip,客戶端的用戶名等信息。以及發(fā)布的sql命令的游標(biāo)等。這些信息都是存儲(chǔ)在內(nèi)存中的。oracle實(shí)例賦予一個(gè)id(session——id)來邏輯地把這些信息組織在一起。
事務(wù),指的是你在當(dāng)前會(huì)話中要做的一件事情,而這件事情包括好多步操作。任何一步操作失敗,你要做的整個(gè)這個(gè)事情也會(huì)失敗。這就是事務(wù)的原子性。
會(huì)話和事務(wù)其實(shí)在概念上沒有多大的聯(lián)系,所以也就沒有什么區(qū)別之分。給你舉個(gè)例子來說明會(huì)話與事物的一個(gè)大概關(guān)系。
比如,你要給你家人拜年(這是一個(gè)事物)。前提是你必須先聯(lián)系上你的家人,假如你打電話給你家人,當(dāng)接通時(shí)你們就產(chǎn)生了一個(gè)會(huì)話,然后你就可以拜年了(就可以進(jìn)行事務(wù)了)。
由此可見,事務(wù)的運(yùn)行必須建立在會(huì)話的基礎(chǔ)上,但是有了會(huì)話不一定有事務(wù)(可以空閑,比如你接通了電話,什么都不說)。
這個(gè)不一樣的,舉個(gè)簡(jiǎn)單的例子你就明白了
假如說,你去移動(dòng)營(yíng)業(yè)廳辦理業(yè)務(wù),你跟移動(dòng)營(yíng)業(yè)廳的服務(wù)人員就建立了一個(gè)鏈接,一個(gè)會(huì)話,這個(gè)是一個(gè)邏輯上的概念,也可以簡(jiǎn)單的理解為一個(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ù)員那邊操作成功了,你的賬號(hào)才會(huì)有話費(fèi)到賬,這就是一個(gè)事務(wù);
想象一下,當(dāng)你與Oracle簡(jiǎn)歷鏈接(會(huì)話)時(shí)候,你可能會(huì)有多個(gè)操作,比如update操作,當(dāng)你執(zhí)行完update后只有當(dāng)你提交了,別的鏈接才能看到跟你一樣的值。
一個(gè)會(huì)話可以有多個(gè)事務(wù)。
連接并不是會(huì)話的同義詞,發(fā)現(xiàn)這一點(diǎn)時(shí)很多人都很詫異。在大多數(shù)人眼里,它們都是一樣的,但事實(shí)上并不一定如此。在一條連接上可以建立0個(gè)、一個(gè)或多個(gè)會(huì)話。各個(gè)會(huì)話是單獨(dú)而且獨(dú)立的,即使它們共享同一條數(shù)據(jù)庫(kù)物理連接也是如此。一個(gè)會(huì)話中的提交不會(huì)影響該連接上的任何其他會(huì)話。實(shí)際上,一條連接上的各個(gè)會(huì)話可以使用不同的用戶身份!
在Oracle中,連接只是客戶進(jìn)程和數(shù)據(jù)庫(kù)實(shí)例之間的一條特殊線路,最常見的就是網(wǎng)絡(luò)連接。這條連接可能連接到一個(gè)專用服務(wù)器進(jìn)程,也可能連接到調(diào)度器。如前所述,連接上可以有0個(gè)或多個(gè)會(huì)話,這說明可以有連接而無相應(yīng)的會(huì)話。另外,一個(gè)會(huì)話可以有連接也可以沒有連接。使用高級(jí)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ù)庫(kù)之間建立連接。CMAN的介紹超出了本書的范圍,不過Oracle Net Services Administrator‘s Guide對(duì)CMAN有詳細(xì)的說明。
* 會(huì)話(session):會(huì)話是實(shí)例中存在的一個(gè)邏輯實(shí)體。這就是你的會(huì)話狀態(tài)(session state),也就是表示特定會(huì)話的一組內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)。提到“數(shù)據(jù)庫(kù)連接”時(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ì)話。我們?cè)谝粭l連接上使用一個(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ì)話的“連接”。可以使用SQL*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í)是否有別人登錄,以及我們?cè)瓉淼腟ID是否可用。
另外: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)識(shí)。
連接 (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ù)庫(kù)應(yīng)用程序與 Oracle 服務(wù)器運(yùn)行在不同的計(jì)算機(jī)上時(shí),就需要通過網(wǎng)絡(luò)來通信)建立的。
會(huì)話 :用戶通過用戶進(jìn)程與 Oracle 實(shí)例建立的連接[此處連接與上文中的連接含義不同 ,主要指用戶和數(shù)據(jù)庫(kù)間的聯(lián)系 ]。例如,當(dāng)用戶啟動(dòng) SQL*Plus 時(shí)必須提供有效的用戶名和密碼,之后 Oracle 為此用戶建立一個(gè)會(huì)話。從用戶開始連接到用戶斷開連接(或退出數(shù)據(jù)庫(kù)應(yīng)用程序)期間,會(huì)話一直持續(xù)。
Oracle 數(shù)據(jù)庫(kù)中的同一個(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)程。
希望能幫到您!
網(wǎng)站名稱:oracle會(huì)話會(huì)怎么用 oraclekill會(huì)話
URL地址:http://chinadenli.net/article38/hgopsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站制作、網(wǎng)站策劃、用戶體驗(yàn)、微信公眾號(hào)、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)