" 學習一東西,一般思路是:架構->細節",某老師曾經這樣說,這也符合本人的習慣,廢話不多說,進入正題.
一.oracle體系的組成
oracle的體繫結構主要分為三大部分:
1.檔案 主要包括構成資料庫的五大類檔案:參數檔案,資料檔案,臨時檔案,控制檔案和重做記錄檔。
2.記憶體結構 主要包括系統全域區(System Global Area,SGA),進程全域區(System Global Area,PGA)和
使用者全域區(User Global Area,UGA).
3.進程或線程 主要包括3類不同的進程:伺服器處理序,後台進程和從屬進程
二.常用術語
執行個體與資料庫
資料庫:物理作業系統檔案或磁碟的集合。
執行個體:一組oracle後台進程或線程以及一個共用記憶體區,記憶體共用區,有同一個電腦上啟動並執行進程或線程所共用, 沒
有磁碟儲存,資料庫執行個體也能存在.
關係:一個資料庫可以由多個執行個體裝載和開啟,而執行個體在其生存期中最多能裝載和開啟一個資料庫.
本質:執行個體就是一組作業系統進程(或者一個多線程的進程)以及一些記憶體,這些進程可以操作資料庫.而資料庫只
是 一個檔案的集合(資料檔案,臨時檔案,重做記錄檔,控制檔案等).一個執行個體只能有一組相關的檔案.
(與一個資料庫關聯)
典型的應用:oracle的真正應用叢集(Real Application Clusters,RAC),允許多個執行個體同時裝載並開啟一個資料庫
(位於一組共用物理磁碟上),因此,我們可以同時從多台不同的電腦上訪問這個資料庫.
一個執行個體能開啟多個資料庫嗎?
答:可以,一個磁碟上有4個資料庫和一個執行個體,只要有不同的設定檔,就能裝載並開啟4個資料庫中的任意一個.
在任意時間點上只能訪問一個資料庫.
三.串連oracle的模式
伺服器處理請求的兩種常見方式:專用伺服器串連和共用伺服器串連
專用伺服器串連:在登陸時,oracle在服務端總會建立一個新的進程,這個服務進程在會話生存期中會專門為我
服務,會話與專用伺服器之間存在一對一的映射.客戶進程會與這個專用伺服器直接通訊,並有
這個伺服器接收和執行我的sql,並返回結果.
共用伺服器串連:這種方式不會對每個使用者的串連建立另外的進程或線程,在共用伺服器中,oracle使用一個"共用
進程"池為大量使用者提供服務.利用共用伺服器,不用為1000個資料庫會話建立1000個專用服務
器(進程或線程),而只需很少的一部分進程或線程,這些進程或線程將由所有會話共用.這樣可以
讓更多的使用者與資料庫連接.否者很難串連更多使用者.
區別:與資料庫連接的使用者不會與共用伺服器直接通訊,因為服務進程是共用的,為共用進程,引入了"調度器"的機制,
使用者與調度機直接通訊.而專用伺服器,客戶進程與專用伺服器直接通訊。