實 例
PGA(process global area 程序全局區):
結構:
stack PGA session info
cursor info
sort area
stack 堆棧:存放PGA各個部分的指針,Stack Space是用來存儲用戶會話變量和數組的存儲區域;
session info:存放會話信息,用戶信息,也是數據庫返回目標判斷條件。
cursor info :存放緩存sql語句,軟軟解析的位置(默認50條)
sort area:排序區,將返回的結果集,根據執行計劃進行排序。(ORDER BY、GROUP BY、ROLLUP、窗口函數);
(排序動作都在PGA sort area中執行,SGA中不存在排序區)
----------------------------------------------------------------------------------------
SGA(system global area 系統全局區):
Fixed Size
·oracle 的不同平臺和不同版本下可能不一樣,但對於確定環境是一個固定的值,裏面存儲了SGA各部分組件的信息,可以看作引導建立SGA的區域。
shared pool(共享池)
library cache
·緩存sql,PL/SQL
·hash-value
·執行計劃
(三者關係:通過hash-value值=>sql文本=>執行計劃)
data DICT CACHE
·緩存包括數據字典的定義,如表結構、權限等
Database buffer cache(數據庫緩衝區)
·數據庫緩衝區的主要作用:
在內存中緩存從數據庫中讀取的數據塊。
數據庫緩衝區越大,爲用戶已經在內存裏的共享數據提供的內存就越大,
這樣可以減少所需要的磁盤物理讀,調高性能。
largepool
·與sql無關,用於備份加速。減少磁盤I/O
·用於MTS、並行查詢和RMAN。如果使用了MTS或RMAN,large_pool特別有用,它可以降低用戶對share pool的爭用。
Java pool
·緩存Java命令服務分析要求
Streams pool(如沒有分配空間,需要用時劃分10%的shared pool空間)
·緩存數據同步
Redo log buffer (大小:512KB或1024KB)
·緩存數據塊的變化塊的位置及改變信息
update:sal 800 -> 1000
(redo log) T(事務) F(文件) B(塊) R(ROW) C(COL) V(VAL)
T1 2 155 5 6 800
T1 4 135 5 6 1000
T(事務):包含:SCN(時間指針向量)、RDB
控制文件:CPODS
連機日誌保證redo日誌的安全性
--------------------------------------------------------------------------------------
PMON:過程監視進程(定期發包檢測)
·重起非核心後臺進程
·監控所用用戶會話,回收垃圾資源,回退交易
·動態註冊實列信息到監聽程序
·集羣環境參與採集cpu壓力(負載均衡)
進程失敗,後臺PMON通過下面的方法進行清理
·回退用戶的當前事務處理
·釋放當前保留的所有表鎖或行鎖
·釋放用戶當前保留的其它資源
·重新啓動已失效的調度程序
----------------------------------------------------------------------------------------
DBWn:數據庫寫進程
作用:
將buffer cache中的髒數據寫入磁盤
觸發條件:
1.檢查點
2.灰數據值達到10%buffer cache值
3.發現buffer cache中無可用空間(LRUW算法,LRU)
4.timeout超時
5.集羣環境中的ping請求
6.drop,truncate操作
7.表空間只讀(table space read only)
8.表空間離線(table space offline)
9.熱備份 begin backup
----------------------------------------------------------------------------------------
SMON:系統監控進程
1.實列恢復
–前滾重做日誌中的更改
–打開數據庫供用戶訪問
–回退未提交的事務處理
2.合併空閒空間
3.回收臨時段
----------------------------------------------------------------------------------------
CKPT:檢查點進程
·在檢查點發信號給DBWn
·使用檢查點信息更新數據文件的標頭
·使用檢查點信息更新控制
啓動檢查點的原因如下:
·確保定期向磁盤寫入內存中發生修改的數據塊,以便在系統或數據庫失敗時不會丟失數據
·縮短例程恢復所需的時間。只需處理最後一個檢查點後面的重做日誌條目以啓動恢復操作
·確保提交的所有數據在關閉期間均已寫入數據文件
由CKPT寫入的檢查點信息包括檢查點位置、系統更改號、重做日誌中恢復操作的起始位置以及有關日誌的信息等等。
注:CKPT並不將數據塊寫入磁盤,或將重做塊寫入聯機重做日誌。
----------------------------------------------
LGWR:日誌寫進程
·將LOG BUFFER中的日誌寫入硬盤。
觸發:
1.Commit
2.log buffer三分之一滿
3.timeout 3秒
4.DBWn寫入前,日誌寫優先。
5.有1MB重做日誌緩存時
--------------------------------------------------------------------------------
ARCn:歸檔程序
可選的後臺進程,用於設置ARCHIVELOG 模式時自動貴練級重做日誌,保留數據庫的全部更改記錄。
任務:當LGWR將再現重做日誌填滿之後,就將起復制到另外一位置,成爲歸檔的重做日誌。
==================================================================================
數據庫
數據庫的邏輯架構:
DB(文件大小限制)
數據文件(大小限制:4M 個 8K = 32G)
數據文件最多65533個,總大小爲2PB)
oracle架構瞭解:
表空間:用來存放數據庫對象的邏輯容器。
段:數據段,索引段,臨時段,回滾段,區,數據塊
數據段:用來存放表數據
索引段:用來存放表索引
臨時段:用來存放中間結果
回滾段:用於處理異常時,恢復事務
區:是數據庫存儲空間分配的邏輯單位,一個範圍有許多的連續數據塊組成,範圍是由段依次分配的,分配的第一個範圍叫初始範圍,以後的分配範圍稱爲增量範圍
數據塊:是數據庫進行IO操作的最小單位,他與操作系統的塊不是一個概念,Oracle數據庫不是以操作系統的塊爲單位來請求數據,而是以多個Oracle數據塊爲單位。
文件結構編輯
數據庫的物理存儲結構是由一些多種物理文件組成,主要有數據文件、控制文件、重做日誌文件、歸檔日誌文件、參數文件、口令文件、警告文件等。[2]
控制文件:存儲實例、數據文件及日誌文件等信息的二進制文件。alter system set control_files=‘路徑’。V$CONTROLFILE。
數據文件:存儲數據,以.dbf做後綴。一句話:一個表空間對多個數據文件,一個數據文件只對一個表空間。dba_data_files/v$datafile。
日誌文件:即Redo Log Files和Archivelog Files。記錄數據庫修改信息。ALTER SYSTEM SWITCH LOGFILE; 。V$LOG。
參數文件:記錄基本參數。spfile和pfile。
警告文件:show parameter background_dump_dest---使用共享服務器連接
跟蹤文件:show parameter user_dump_dest---使用專用服務器連接[2]
online redo 聯機日誌
記錄最新的改變(log buffer),循環覆蓋,存在目的:保證實列恢復,保存最新的,事物會滾的基礎,部分閃回技術的基礎。
========================================================================================
外部文件
(這裏大概介紹種類,每種文件的實際用處,請看我的其他筆記。也可百度)
口令文件
password file
審計文件
audit file
參數文件
paramater file
歸檔文件
archived
體系架構全解析:(一個完美的事物,內部總是特別的精緻)
===================================================================
由於本人能力有限,存在字面、表達錯誤請指出。