設為首頁收藏本站

艾歐踢論壇

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

搜索
熱搜: 活動 交友 discuz
查看: 1643|回復: 0
打印 上一主題 下一主題

Oracle 系統架構

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2020-3-13 19:39:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
整個 Oracle 系統架構包含以下三個部分,如圖一所示:
1)System Global Area (系統共同區,SGA)
2)Process (處理單元)
3)Files (系統檔案)



System                                         Global Area (系統共同區,SGA)

每當 Oracle 系統啟動時,會佔用主機一大塊資料庫專屬的記憶体空間來控制資訊與儲存資料,這塊資料庫專屬的記憶体空間稱為 System Global Area(SGA)。
SGA 與系統 Background Process (背景處理單元) 合稱 Oracle Instance(實例)。

SGA 主要是由 Shared Pool、Database Buffer Cache 與 Redo Log Buffer 三個主要部份所組成:
1)Shared Pool
2)Database Buffer Cache
3)Redo Log Buffer
Process                                         (處理單元)


在 Oracle 中的 Process 分為兩種:User Process 與 Oracle Process 兩種:
 
User Process:
當使用者的應用程式欲以 SQL 指令存取資料庫資料時,例如:Pro*C程式、Oracle Tools、SQL*plus、Oracle Form 等等,Oracle 會產生 User Process去執行這些工作。
 
Oracle Process:
Oracle Process 依執行的方式不同可大概分為 Server Process 與 Background Process 兩種:
Background Proces

Database Writer (DBWR)
Log Writer (LGWR)
Process Monitor (PMON)
System Monitor (SMON)
Checkpoint (CKPT)
Archiver (ARCH)
Recoverer (RECO)
LOCK (LCKn)

DML 指令的執行步驟。

假設我們下 DML 指令                                 (UPDATE EMP SET SAL = SAL * 1.05 WHERE EMPNO = 7788)。其步驟如下:

1)User Process 將 DML 指令送給 Server Process。
2)如果資料有在 Database Buffer Cache 中,則直接執行 DML 指令,也就是執行 UPDATE 指令。如果資料沒有在 Database Buffer Cache 中,則 Server Process 會從 Data files 中將資料與 Rollback blocks 讀入 Database Buffer Cache 中。
3)將從 Data files 讀入的資料複製一份到 Database Buffer Cache 中。
4)對 Database Buffer Cache 中的資料做鎖定(Lock)的動作,並且執行DML 指令,也就是執行 UPDATE 指令。
5)Server Process 將未變動前的資料記錄與變動後的資料記錄放入 Redo Log Buffer 中。並且將執行過的 SQL 指令放入 Shared pools 的 Library cache 中。
6)Server Process 將未變動前的資料記錄放入 Database Buffer Cache 中的 Rollback blocks。並將變動後的資料記錄放入 Database Buffer Cache 中 Data blocks 中。這些 Rollback blocks 與 Data blocks 都會被註記為 Database Buffer Cache 中的 Dirty buffers,也就是這些 blocks 與硬碟中的 Data files 中 Data blocks 與 Rollback blocks 並不一致。


Database writer (DBWn)資料庫寫行程:

只做一件事,將資料寫到磁盤。就是將資料庫的變化寫入到資料檔案。
該行程最多20 個,即使你有36 個CPU 也只能最多有20 個資料庫寫行程。
行程名稱DBW0-DBW9 DBWa-DBWj
註意:資料庫寫行程越多,寫資料的效率越高。該行程的個數應該和cpu的個數對應,如果設置的資料庫寫行程數大於CPU 的個數也不會有太明顯的效果,因為CPU 是分時的。
Checkpoint (CKPT)檢查點行程:

主要用戶更新資料檔案頭,更新控制檔案和觸發DBWn資料庫寫行程。
Ckpt 行程會降低資料庫性能,但是提高資料庫崩潰時,自我恢復的性能。我們可以理解為階段性的儲存資料,一定的條件滿足就觸發,執行DBWn存盤操作。
Process monitor(PMON)行程監測行程:

PMON在後臺行程執行失敗後負責清理資料庫快取和閑置資源,是Oracle的自動維護機制。

清除死行程
重新啟動部分行程(如調度行程)
監聽的自動註冊
回滾事務
釋放鎖
釋放其他資
System monitor (SMON)系統監測行程:

SMON啟動後會自動的用於在實體崩潰時進行資料庫實體自動恢復。
清除作廢的排序臨時段,回收整理碎片,合併空閑空間,釋放臨時段,維護閃回的時間點。
在老資料庫版本中,當我們大量刪除表的時候,會觀測到SMON行程很忙,直到把所有的碎片空間都整理完畢。

重做日誌檔案和日誌寫入行程

主要用於記錄資料庫的改變和記錄資料庫被改變之前的原始狀態,所以應當對其作多重備份,用於恢復和排錯。

激活LGWR的情況:

提交指令
日誌緩衝區超過1/3
每三秒
每次DBWn執行之前
歸檔行程(ARCn)
——是非核心行程。







本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?立即註冊

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 轉播轉播 分享分享 分享淘帖
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|Archiver|手機版|艾歐踢創新工坊    

GMT+8, 2024-5-15 13:38 , Processed in 0.256192 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表