|
偶爾被問及數(shù)據(jù)庫的共享模式和專用模式的區(qū)別,有一些模糊,故做一下區(qū)別分析:
MTS(多線程服務)和專用模式的區(qū)別是:
專用模式是 專用服務進程為客戶端進程做一對一處理,客戶進程(不管什么程序連接到數(shù)據(jù)庫)將直接在如TCP/IP套接詞這樣的一些網(wǎng)絡(luò)管道上,與專用服務器連接。數(shù)據(jù)緩沖池中查找數(shù)據(jù),處理sql。
MTS模式是 共享服務進程 取代了 專用模式的 專用服務進程 ?蛻暨M程將首先由分配器dispatche進程來分配 客戶端請求 到SGA中的 請求隊列,然后由 共享服務進程來調(diào)出并處理,得出的結(jié)果(數(shù)據(jù),返回代碼等)響應 被共享服務進程放入到響應對列,等待分配器進程來傳送給客戶端進程。
當我們發(fā)布
sqlplus scott/tiger@tns
其中tns是TNS服務名稱,tns代表(transparent network substrate),它是內(nèi)建于oracle客戶端的‘平臺’軟件,它處理遠程連接--允許對等通信。TNS連接串告訴oracle軟件如何連接到遠程數(shù)據(jù)庫。一般來說,運行在機器上的客戶端軟件將讀取tnsname.ora文件。
tns = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = jimmypeng)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = test) ) )
通過這個文件,客戶端軟件知道要連接誰,它將連接打開1521端口的服務端jimmypeng的tcp/ip套接字連接。
服務端的net8配置好后,監(jiān)聽器也在運行,那么這個連接就可以接受了。服務端有個tns listener進程開啟,當它接收到聯(lián)入的連接請求時,負責檢查這個請求,使用自己的配置文件,檢查ip地址是否正確,或者是主機名是否正確,來判斷是否接受請求或者是拒絕請求,并使我們完成連接。
如果是專用模式,會由監(jiān)聽進程創(chuàng)建一個專用服務進程,最后由服務器進程接受客戶端的請求。監(jiān)聽進程與請求脫鉤 。
如果是多線程模式,監(jiān)聽進程的行為將不同,監(jiān)聽器進程知道我們在數(shù)據(jù)庫上的分配進程dispatcher。當接受到客戶端請求時,監(jiān)聽器從可用的分配器池中選擇一個分配進程。監(jiān)聽器把 對客戶端如何連接到分配器進程的信息發(fā)送給客戶端。因為監(jiān)聽器是在服務端的一個主機名和端口上運行,所以必須做此事。但是分配器將接受主機上隨機分配的端口上的連接。監(jiān)聽器知道這個隨機分配的端口,并選擇一個分配器?蛻舳巳缓笈c監(jiān)聽器斷開并直接連接到這個分配端口上的分配器。對數(shù)據(jù)庫就有了一個物理上的連接。
|
|
【收藏】【打印】【進入論壇】 |
|
|
|
|
|
|
|