Oracle體系結構理解(1)
數據庫與實例
數據庫(database):物理操作系統文件或者磁盤的集合。使用Oracle的ASM(自動存儲管理)時,或者在使用RAW分區時,數據庫可能不作為文件系統中單獨的文件,但是定義仍然不變。
注:ASM在我第一次接觸的時候,暫時被解釋為和LVM具有相似功能的管理機制。
實例(instance):一組Oracle後台進程(Linux與Unix下)以及一個共享內存區(內存結構),就算沒有磁盤存儲,實例也可以存在。
注:數據庫可以由多個實例裝載和打開,而實例可以在任何時間點轉載和打開僅僅一個數據庫。也就是說,在同一個時間,通過當前實例僅僅可以訪問一個數據庫並進行交互。
當我們執行一個僅軟件安裝的數據庫的操作,並不包括“啟動”數據庫的行為的時候,除軟件之外什麼都沒有。
此時$ORACLE_HOME/dbs目錄(oracle的工作目錄)下沒有任何文件,我們使用ls -l查看會發現一下信息:
Total 0
其中不存在init.ora文件(parameter file 參數文件),此時通過ps命令也不會發現任何關於oracle的進程(除了grep oracle操作出現的oracle關鍵字之外),如果建庫執行dbca創建數據庫後,執行sqlplus / as sysdba,作為sysdba不使用用戶密碼認證訪問$ORACLE_SID所指定的實例名後,會生成init.ora的參數文件。
在訪問數據庫後,系統上執行ps aux就會發現許多進程,他們是以ora_開頭的,包括smon(系統監控),ckpt(檢查點),pmon(進程監控)等進程。
注:一個實例在其生存期中最多只能裝載和打開一個實例,如果關閉數據庫(alter close database;),那麼則生存周期完畢(回收內存空間,結束相關進程),如果再想打開一個數據庫,那麼需要丟棄該實例,創建一個新的實例(嘗試shutdown關閉實例後再startup再開啟相當於重新建立實例,可以打開數據庫)。
這裡就是Oracle的instance與database概念的劃分。