2014-08-05 Created By BaoXinjian
一、摘要
1. Oracle的記憶體結構
- 記憶體結構式Oracle資料庫體系中最為重要的一部分,記憶體也是印象資料庫效能的第一因素
- 分類
- 系統全域性區SGA (System Global Area)
- 程式全域性區PGA (Program Gobal Area)
- 使用者全域性區UGA (User Global Area)
2. Oracle程式結構
程式是作業系統中的一種機制,它可執行一系列的操作步驟,作業系統會使用多個程式來執行Oracle的不同部分,並且對每個連線的使用者都有一個程式
(1). 使用者程式
(2). Oracle程式
- 伺服器程式
- 後臺程式
- PMON(程式監控程式)
- SMON(系統監控程式)
- DBWR(資料庫寫入程式)
- LGWR(日誌寫入程式)
- ARCH(歸檔程式)
- CKTP(檢查點程式)
- CJQO(作業佇列協調器程式)
- RECO(恢復程式)
3. Oracle易混淆概念
- 例項和資料
- 使用者和模式
- 使用者和角色
二、記憶體結構
1. 系統全域性區SGA (System Global Area)
(1). 概念:是所有資料都可以訪問的例項的共享區, 資料塊、事物處理日誌、資料字典資訊等都儲存在SGA中
(2). 詳解:其中每個例項都只能有一個系統全域性區,它是不同使用者程式與服務程式進行通訊的中心。資料庫的各種操作主要在系統全域性區進行。
(3). SGA所包含的資料:
- 快取資料塊
- 在資料庫上執行的SQL語句
- 使用者執行的儲存過程、函式和觸發器
(4). SGA的組成:
- DB快取記憶體
- 資料快取記憶體database buffer cache (DBC)
- DBC的作用:儲存最近從資料檔案中讀取的資料塊,其中的資料被所有使用者共享
- 影響DBC的兩個引數: DB_BLOCK_SIZE和DB_BLOCK_BUFFERS
- 共享池
- 共享池儲存了最近執行的SQL語句、PLSQL程式和資料字典資訊,是對SQL語句和PLSQL程式進行預防解析、編譯執行的記憶體去
- 重做日誌快取
- 重做日誌快取記憶體就是儲存重做記錄的快取
- 重做記錄並不直接寫入磁碟的重做日誌檔案,而是先寫入重做的日誌快取
- 當重做日誌快取中的重做記錄達到一定的數量時,由LGWR程式寫入重做日誌
- 大型池
- 大型池用於大記憶體操作提供相對獨立的記憶體空間那件
- 需要大型池的操作有:資料庫備份和恢復,用於共享服務程式的會話記憶體(大量排序的SQL語句),並行化資料操作
2. 程式全域性區PGA (Program Gobal Area)
(1). 概念: 是一類沒有共享的記憶體,專用於特定的伺服器程式,並只能夠由這個程式訪問
(2). PGA的組成
- 排序區
- 儲存執行order by、group by等包含排序操作的SQL語句時所產生的臨時資料
- 會話區
- 儲存所具有的許可權、角色、效能統計資訊
- 遊標區
- 儲存執行帶有遊標的PLSQL語句所產生的臨時資料
- 堆疊區
- 儲存會話中繫結的變數,會話變數以及SQL語句執行的記憶體結構資訊
3. 使用者全域性區UGA (User Global Area)
(1).概念: 這個記憶體區域為我們使用者程式儲存了會話狀態
三、程式結構
1. 使用者程式
2. Oracle程式
(1). 伺服器程式
(2). 後臺程式
- PMON (程式監控程式)
- 用以監控伺服器程式,以確保能否銷燬發生損壞或者出現故障的程式,釋放他們的資源
- 在主機作業系統上使用Oracle監聽器註冊資料庫伺服器
- SMON (系統監控程式)
- 在例項出現故障的情況下,SMON負責重新啟動系統,執行崩潰恢復
- SMON將會清楚已經分配但還沒有被釋放的臨時段
- SMON也會在表空間管理中執行盤區結合
- DBWR (資料庫寫入程式)
- 該程式將快取區的使用者所使用的資料寫入資料檔案
- 使使用者程式總是可以得到未用的快取區
- LGWR (日誌寫入程式)
- 是向線上重做日誌檔案中所記錄的所有資料庫的已提交事務
- 日誌寫入程式會在以下四種情況執行寫入操作
- 事務處理程式提交
- 重做日誌快取已填充1/3
- 重做日誌快取中的資料量達到1MB
- 每3秒時間
- ARCH (歸檔程式)
- 將重做日誌事務變化寫入歸檔日誌
- CKTP (檢查點程式)
- 在檢查點出現時,對全部資料檔案的標題進行修改
- CJQO (作業佇列協調器程式)
- 在Oracle中規劃將要再資料後臺執行的程式或者作業
- RECO (恢復程式)
- 在分散式資料庫環境中恢復程式自動恢復失敗的分散式事務
四、概念區分
1. 例項和資料庫
(1). 例項 (程式+記憶體結構)
- Oracle例項時SGA和後臺程式的組合
- 資料庫只是調入到例項所包含的記憶體和程式中,才可以使用
(2). 資料庫 (資料檔案+重做檔案+控制檔案+臨時檔案)
(3). 兩者區別
- Oracle例項時SGA(系統全域性區)和一組後臺程式的組合
- Oralce資料庫時指執行資料庫所有的所有資料庫檔案
- Oracle服務啟動時先啟動例項,然後轉載資料庫檔案,即裝在資料庫
2. 使用者和模式
(1). 使用者:
- 能夠唯一標識一組信任憑著的名稱和密碼組合
- Oracle中的使用者其實就是用於登入Oracle命名賬號
- 使用者可以擁有自己的資料物件
(2). 模式
- 是使用者所建立的資料庫物件的總稱
- 模式中的物件包括:表、檢視、索引、同義詞、序列、過程、程式包
(3). 兩者關係
- 模式本身不是物件,模式只是一個用來描述特定使用者的物件集合的屬於
- 模式和使用者是一一對應的關係
3. 使用者和角色
(1). 使用者
使用者就是使用者登入Oracle的命名賬號
例如:sys, system, scott, hr
(2). 角色
角色就是一組相關許可權的命名結合
例如:connect, resource, DBA
(3). 兩者關係
角色是一組許可權的組合,我麼將角色付給使用者,從而讓使用者擁有角色所擁有的許可權
Thanks and Regards