oracle後臺程序以及large pool
large pool用來分配大記憶體快,用來處理shared pool更大的記憶體,是做備用池,用以緩解oracle對共享池和pga區記憶體的使用壓力
使用large pool的物件主要有:
多執行緒伺服器MTS:在SGA的large_pool中分配UGA
語句的並行查詢parallel exection:用作程序間的訊息緩衝器
恢復管理器rman:備份時用作磁碟io緩衝器
檢視large_pool引數預設設定值,為0則應表示ASMM已開啟
show parameter large_pool_size
檢視large_pool當前執行期間ASMM實際分配大小
select pool,sum(bytes) from v$sgastat group by pool;
java pool
oracle在核心中加入了對java的支援,該緩衝區專為java開發和應用所設,若不用java程式則沒有必要改變該緩衝區的預設大小
檢視java_pool引數預設設定值,為0則應表示ASMM已開啟
show parameter java_pool_size
檢視Java_pool當前執行期間ASMM實際分配大小
select pool,sum(bytes) from v$sgastat group by pool;
streams_buffer
用於對流複製進行緩衝
檢視大小
show parameter streams_pool_size;
redo_log_buffer
對資料庫的任何修改都按順序被記錄在該緩衝區中,然後由LGWR程序根據條件更改資訊批量寫入磁碟上的redolog檔案,以節省磁碟io,該快取不參與ASMM的動態管理,不能自動調整大小
檢視redo_log_buffer大小
show parameter log_buffer;
select name,bytes from v$sgastat where name='log_buffer';
手工修改redo_log_buffer大小
alter system set log_buffer=6000000 scope=spfile;
oracle程序:
後臺程序
伺服器程序
使用者程序
後臺程序:
後臺程序是oracle的程式,用來管理資料庫的讀寫,恢復和監視等工作,伺服器程序主要是通過後臺程序和使用者程序進行聯絡和溝通,並由後臺程序與使用者程序進行資料交換
檢視已在執行的後臺程序
$ps -ef |grep ora_
sql>select name,description from v$bgprocess where paddr != '00';
DBWn(資料庫寫入程序)
將資料緩衝區的資料寫入資料檔案,是負責資料緩衝區管理的一個後臺程序。預設數量是1個,最多10個。
資料緩衝快寫盤時,要將每個資料快取快的內容寫入到資料檔案內的指定快中,因這些指定快通常都是不連續的,因此寫這些快稱為離散寫,因磁頭須要反覆定位資料檔案內的各指定快,而磁頭反覆定位非常耗時,因此離散寫比較慢
DBWn的作用:
通過LRU演算法管理資料緩衝區,將修改後的dirty緩衝區資料寫入資料檔案,維護資料緩衝區的clean,以便使用者程序總能夠找到足夠的空閒緩衝區
通過延遲寫資料來優化磁碟io讀寫
LGWR
將日誌資料從日誌緩衝區寫入redolog日誌檔案組,日誌緩衝塊寫盤時,每個日誌緩衝塊的內容無需寫入到指定快,而只需順序寫入到日誌檔案內的每個快中即可,因此稱為順序寫,順序寫速度較快。
LGWR的作用·:
管理·日誌緩衝區,將資料庫的更改·寫入日誌檔案,以便維護資料的一致性,併為資料丟失後進行恢復提供依據
通過延遲寫日誌來優化磁碟io讀寫
關於事務
‘一個事務生成一條或多條重做記錄,一個重做記錄包含多個改動向量change vector,用用日誌資料進行恢復時,以事物為最小單位進行