DBA_Oracle基本體系記憶體和程式結構(概念)

weixin_34391854發表於2014-08-05

 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

相關文章