1. 程式人生 > >Oracle學習筆記—oracle體系架構及狀態(nomount、mount和open)簡介

Oracle學習筆記—oracle體系架構及狀態(nomount、mount和open)簡介

位置 正常 處理 管理 共享服務器 體系 操作記錄 sysdba png

oracle體系架構簡介

先來簡要了解一下Oracle數據庫體系架構以便於後面深入理解,Oracle Server主要由實例(instance數據庫(database組成。實例(instance共享內存(SGA後臺進程系統組成,數據庫(database是存儲在磁盤上的一系列物理文件。

技術分享

SGA主要由Share Pool(共享池,又分Library Cache和Data Dictionary Cache,前者臨時存儲最近執行過的語句代碼等,後者臨時存儲數據位置、表定義及用戶權限等)、Database Buffer Cache(數據緩沖區,臨時存儲讀過的數據塊)、Redo Log Buffer

(重做日誌緩沖區,臨時存儲數據庫修改操作)、Large Pool(大池,分擔Share Pool部分工作供共享服務器進程使用,如備份恢復、大型I/O操作、並行查詢等)和Java Pool(Java池,分析Java語句)。

後臺進程是數據庫和操作系統進行交互的通道,後臺進程的命名由ORACLE_SID決定,ORACLE根據ORACLE_SID來尋找參數文件啟動實例。是Oracle數據庫為保持最佳性能和協調多用戶請求而設置的,主要有DBWR(將Database Buffer Cache數據寫入Data Files)、LGWR(將Redo Log Buffer數據寫入Redo Log Files)、CKPT

(協調數據文件、控制文件和重做日誌,將System Change Number即SCN寫入到控制文件和數據文件頭部,促使DBWR、LGWR執行)、SMON(System Monitor,3方面作用:instance recovery實例故障數據恢復、合並空閑碎片空間、回收臨時段)、PMON(用戶例程意外終止時處理事務,如回退事務、釋放鎖及其他資源等)、ARCH(將Redo Log Files寫入Archive Log Files)、CJQ0(job queue coordinator)、RVWR(recover writer,為flashback database提供日誌記錄)等進程。

數據庫(database

是指存儲在磁盤上的一組物理文件,如數據文件(Data files,用於存儲數據)、控制文件(Control files,存儲數據文件、重做日誌文件、歸檔日誌文件位置及維護數據庫完整性所需信息)和重做日誌文件(Redo Log files,存儲修改數據的所有操作記錄以備故障後恢復),這三個是啟動數據庫必須的文件;另外還有參數文件(Parameter file,設置內存後臺進程的啟動等)、歸檔日誌文件(Archived Log files,歸檔記錄寫滿的重做日誌文件的內容)和口令文件(Password file,驗證用戶名密碼),這三個是非必須的文件。

oracle啟動狀態

Oracle啟動分3個過程nomount、mount和open,這三個過程具體執行的工作如下:

技術分享

  • NOMOUNT狀態: SGA和後臺進程已經啟動
  • MOUNT狀態: 通過參數讀取了控制文件 ,擁有sysdba權限的可以進行一些數據的備份和恢復操作,其他用戶還不能訪問
  • OPEN狀態; 其他用戶正常訪問

NOMOUNT狀態

創建數據庫實例 首先從spfile或者pfile中讀取數據庫參數文件,然後分配SGA和創建後臺進程。 相當於生產線和工人都到位了,但是沒有開始生產,生產線上沒有產品。

MOUNT狀態

建立數據庫和實例的關系。 首先根據初始化參數文件中的CONTROL_FILE參數找到相應的控制文件然後打開它們,在控制文件中包含了數據庫的數據文件和redo log文件信息。 這個時候數據庫還沒有打開,仍然處於關閉狀態,這個時候普通的用戶還不能連接到數據庫,只有數據庫管理員可以進行一些備份恢復等工作。

OPEN狀態

打開數據庫。

通過控制文件信息找到聯機數據文件和redo log 文件,如果沒有以上兩個文件,數據庫就會報錯。如果這兩個文件壞了,數據庫無法打開,這個時候可以通過sysdba權限進入mount掛載狀態後,對這兩個數據文件進行恢復操作後再打開數據庫。

參考:

Oracle數據庫啟動過程及狀態詳解(nomount、mount和open)

oracle啟動的四個狀態

Oracle學習筆記—oracle體系架構及狀態(nomount、mount和open)簡介