上圖為Oracle的體系結構概貌,以圖所示:從大的方面來講Oracle由用戶進程、服務器端進程、實例以及數據等幾個部分組成。下面是各個部分的詳細說明:
(1)用戶進程(User Process)與服務器端進程(Server process) 用戶進程是用戶用來與Oracle服務器交互的,其運行于客戶端,當用戶運行某個工具(如SQL*Plus)時創建,當用戶退出上述工具時結束,由上圖可以看出用戶進程并不是直接與Oracle實例或者是數據庫交互而是通過Oracle server process進行的。Oracle服務器端進程是用戶進程與Oracle核心的橋梁,用戶進程通過服務器端進程操作實例(instance)最終影響數據庫,如用戶發出一條SQL語句,會首先交由服務器端進程然后才會傳至實例。
(2)實例(Instance) 實例由兩部分組成:一組Oracle進程和SGA。SGA全稱為System Global
Area是一塊巨大的共享內存區域,他被看作是Oracle數據庫的一個大緩沖池,這里的數據可以被Oracle的各個進程共用。SGA本身又由其他的模塊組成,
1:共享池(Shared Pool)
共享池是SGA中最關鍵的內存片段,特別是在性能和可伸縮性上。一個太小的共享池會扼殺性能,使系統停止,太大的共享池也會有同樣的效果,將會消耗大量的
CPU來管理這個共享池。不正確的使用共享池只會帶來災難。共享池主要又可以分為以下兩個部分:
<1>SQL語句緩沖(Library Cache): 當一個用戶提交一個SQL語句,Oracle會將這句SQL進行分析(parse),這個過程類似于編譯,會耗費相對較多的時間。在分析完這個SQL,Oracle會把他的分析結果給保存在
Shared pool的Library
Cache中,當數據庫第二次執行該SQL時,Oracle自動跳過這個分析過程,從而減少了系統運行的時間。這也是為什么第一次運行的SQL比第二次運行的SQL要慢一點的原因。
<2>數據字典緩沖區(Data Dictionary Cache):ORACLE特地為數據字典準備的一塊緩沖池,供ORACLE內部使用.
2:塊緩沖區高速緩存(Database Buffer Cache):這些緩沖是對應所有數據文件中的一些被使用到的數據塊。讓他們能夠在內存中進行操作。在這個級別里沒有系統文件,用戶數據文件,臨時數據文件,回滾段文件之分。也就是任何文件的數據塊都有可能被緩沖。數據庫的任何修改都在該緩沖里完成,并由DBWR進程將修改后的數據寫入磁盤。
posted on 2008-08-18 10:38
零全零美 閱讀(203)
評論(0) 編輯 收藏