Oracle體系結構的3個主要組件:
1.文件:組成數據庫實例的5個文件(參數文件,控制文件,數據文件,臨時數據文件,重做日志文件)
2.系統全局區(qū)域SGA( System Global Area): java池,共享池等
3.物理進程與線程: 在數據庫上運行3種不同類型的進程(服務器server進程,后臺backgroud進程,從屬slave進程)
術語解釋:
數據庫: 物理操作系統文件的集合
實例: 一組oracle進程和SGA
二者關系:
一個數據庫可以被多個實例裝載mount和打開open
實例可以及時地裝載并打開一個單獨的數據庫,被實例打開并裝載的數據庫在啟動時不必相同
文件:
1.參數文件:
TNSNAMES.ORA, LISTENER.ORA,SQLNET.ORA, PROTOCOL.ORA,NAMES.ORA, SMAN.ORA, LDAP.ORA
(refer to "Oracle Net administrator Guide")
$ORACLE_HOME/DBS/int<ORACLE_SID>.ora: 內容為一系列的變量名和值對
sUCh as:
db_name="wmdb"
db_block_size=8192
control_files=("c:/oradata/control01.ctl","c:/oradata/control02.ctl")
...
其中有一些在Oracle文檔中沒有說明的參數以下劃線開始
除了在開發(fā)環(huán)境中設置_TRACE_FILES_PUBLIC=TRUE這個參數外,其他沒有說明的參數最好不要改動
2.數據文件:
數據庫database-->表空間tablespace-->segment段-->extent擴展區(qū)-->block塊
1)數據庫由一個或多個表空間組成
2)表空間由一個或多個數據文件組成,一個表空間有一個或多個段
3)一個段(表,索引等)由多個擴展區(qū)組成,段存在于表空間中,但在表空間中可有多個數據文件中的數據.
4)一個擴展區(qū)是在磁盤上一些連續(xù)分配的塊,一個擴展區(qū)在一個表空間中,而且總是表空間中單一的文件
5)塊是數據庫中最小的分配單元和I/O單元,它的大小在數據庫創(chuàng)建時就固定下來了
3.臨時文件
當內存不足以保存一個大規(guī)模排序操作的中間結果(集),Oracle用臨時文件來存儲它們,永久數據,如表或索引是不會存儲到臨時文件中的,但臨時表或臨時索引的內容則可能存儲到臨時文件 中
推薦用本地治理臨時表空間來配置數據庫???,例
create temporary tablespace temp
tempfile 'c:/oracle/oradata/walter/temp.dbf'
size 5m
extent management local
uniform size 64k
4.控制文件
一個相當小的文件,至多為64M,包含Oracle需要的其他文件的目錄
數據文件init<SID>.ora告訴實例控制文件 的位置
控制文件則把數據庫和聯機重做日志文件的位置告訴實例
控制文件也向Oracle提供其他信息,如檢查點,數據庫名稱,數據庫創(chuàng)建的時間戳,歸檔重做日志歷史等
5.重做日志文件
數據的事務日志,僅在恢復時才使用
1)聯機重做日志
2)歸檔重做日志
內存結構
1.SGA(System Global Area)
2.PGA(Process Global Area)
3.UGA(User Global Area)
待續(xù)