標籤:oracle
專用伺服器與共用伺服器
1.專用伺服器
在我登陸時,Oracle總是會為我建立一個新的進程來串連Oracle伺服器,這樣配置的伺服器叫做Oracle專用伺服器,這個產生的伺服器處理序會在SGA生存周期裡專門為我的請求服務。也就是說,每當我開啟一個會話,則會產生一個進程,會話與伺服器的對應關係是一對一的映射關係。
用戶端 --> 1521連接埠:監聽器 --> 產生進程 --> 串連執行個體 --> 資料庫
而執行個體是通過parameter檔案尋找control檔案的位置,來構建起與資料庫進行資料交換的橋樑的。
2.共用伺服器
在共用伺服器當中,Oracle使用共用進程池來為大量的使用者提供服務(類似排隊的機制)。
不像專用伺服器,我們不必每次為串連過來的用戶端專門開啟一個進程進行服務,如果我有10000個使用者同時訪問資料庫,那麼我們要開啟10000個進程,這會使得我的Oracle伺服器資源損耗巨大,甚至將伺服器壓垮。但是我在進程共用池裡開啟100個進程供所有使用者使用,系統在管理進程的時候,由於進程數不大,提高管理效率,而且不會由於負載過大而造成崩潰的狀態。
但是為了有效管理這100個進程,需要引入一個新的概念叫做調度器來管理,當用戶端對伺服器進行訪問,監聽器收到用戶端請求,監聽器通過調度器瞭解到這100個進程中其中一個進程正在空閑當中,那麼就會回複用戶端哪個進程正在閑置並且進行訪問。然後訪問執行個體,進而訪問資料庫。
用戶端 --> 1521連接埠:監聽器 -->調用調度器 -->發現18888進程正在閑置 --> 回複用戶端通過18888進程進行訪問 --> 用戶端通過18888連接埠訪問執行個體 --> 資料庫
3.TNS透明網路底層
tns是處理Oracle遠端存取的基本軟體,查看一下Oracle工作目錄下的tnsnames.ora,在$ORACLE_HOME/network/admin/下。查看一下內容:
ORCL =
( DESCRIPTION =
( ADDRESS =
( PROTOCOL = TCP)
...
))
這裡配置著用戶端要訪問哪個主機的哪個連接埠,使用哪一個執行個體來訪問底層資料庫。
在Server端也會存放著Client端的相關資訊,類似於Linux的ssh服務ssh_know_hosts檔案。
該文章僅供技術參考,如有不足,盡請指正。謝謝。
Oracle體繫結構理解(2)