[ADMIN]oracle入門-oracle體系結構
一個完整的oracle服務包括一個oracle instance和一個oracle database。前者主要包括記憶體結構和一些process,後者主要涉及一些儲存方面的結構。
oracle的記憶體結構主要包括SGA(共享記憶體區)和PGA(program global area)。SGA是在oracle instance起的時候就預分配好的,主要包括以下幾個部分:
shared pool:分別dictionary cache和library cache,前者主要存放資料字典的資訊,後者主要存放一些sql語句和他們的執行計劃等資訊。
database buffer cache:主要存放資料塊
log buffer:主要存放redo log entries
large pool:一般用於一些需要分配比較大記憶體的任務,如用於備份或恢復,或在共享伺服器模式下存放一部分使用者session的資訊。這是一個可選的區域。
java pool:好象是用於存放一些與java程式碼相關的內容,具體沒有研究過。
stream pool:用於oracle stream
在oracle 10g中,可以設定sga_target值,為sga分配一個總共的值,由系統自動調整各個部分的值。
oracle的process:
有user process和server process之分。user process為發起連線請求的程式,而server process負責與資料庫例項進行互動,為user process的請求服務。oracle的連線模式有專用伺服器(dedicated server)和共享伺服器(shared server)兩種模式。兩者的差別在於,前者一個server process只為一個user process服務,而後者一共server process服務多個user process。一般共享服務模式適用於那些資源較緊張的系統。在這種模式下,PGA中的部分內容被存放在SGA中,但總的記憶體使用量是減少的。在我接觸過的資料庫伺服器中,大多是採用專用伺服器模式。
後臺程式(background process)是在資料庫例項啟動時啟動的一系列後臺程式,主要用於資料庫的各種管理。比較重要的幾個後臺程式有:
SMON:用於在資料庫例項crash時執行恢復操作
PMON:用於在程式失敗時進行清理和資源釋放
DBWn:用於將database buffer cache中的髒塊寫入資料檔案中
LGWR:將log buffer中的redo entries寫入redo檔案
CKPT:用於在資料檔案頭和control檔案中記錄最近的檢查點(checkpoint)
ARCn:用於將redo檔案中的內容寫到archive檔案中
其中SMON程式是最重要的,當我們使用shutdown abort也無法關閉資料庫時,kill掉SMON程式後一般其他程式就也被kill掉了
資料庫儲存結構:
一個oracle database由以下三部分檔案組成:
control檔案:在資料庫例項mount資料庫時開啟control檔案。control檔案記錄的主要是資料庫的物理儲存結構,包括資料庫有哪些資料檔案、redo檔案等。
資料檔案:顧名思義存放的是資料庫中最關鍵的資料。
online redo檔案:redo檔案記錄的是資料庫的更新日誌。它主要用於例項的恢復。當資料庫例項crash時,記憶體中的資料全部丟失,資料庫重啟時,可以根據redo檔案將資料庫恢復到最近的一個檢查點,然後可以再根據回滾段中的內容回滾未提交的事務。
除此之外,還有一些檔案雖然不屬於oracle database的範疇,但對於維持資料庫的正常執行也至關重要。主要包括以下幾部分:
引數檔案:引數檔案用於在資料庫啟動時指定一些相關引數的值。引數檔案有pfile和spfile兩種。前者是文字檔案,可以用編輯器手工修改。後者是二進位制檔案。9i以後,推薦用spfile啟動資料庫,它支援動態修改資料庫引數,即在資料庫執行過程中,可以使用alter system命令同時修改記憶體和spfile中引數的值(僅限於動態引數,對於靜態引數,可用alter system ... scope=spfile命令修改spfile中的值,重啟後生效),在資料庫重啟後該引數修改仍然生效。而如果使用pfile啟動,對於動態引數的修改,首先必須使用alter system 命令在記憶體中修改,其次還需要手工編輯pfile檔案。比較麻煩。
密碼檔案:密碼檔案主要用於保證具有sysdba許可權的使用者可以遠端訪問資料庫,並對資料庫進行起停操作。
歸檔日誌檔案:歸檔日誌檔案其實是redo檔案的離線備份。redo檔案一般有幾組,在資料庫執行過程中是迴圈使用的,因此前面的組勢必會被後面的組覆蓋掉。如果開啟資料庫歸檔,資料庫就會將redo檔案中的記憶體儲存到離線的歸檔日誌檔案中。這樣,如果資料庫發生了介質損壞或檔案丟失,只要有備份以及其後所有的歸檔日誌檔案,就可以進行是資料庫恢復。
資料庫邏輯結構:
tablespace:每個資料庫在邏輯上被分為幾個表空間。每個表空間由一個或多個資料檔案組成。其中,system表空間主要用於存放資料字典資訊,相當關鍵。而sysaux表空間是oracle10g新增的表空間,它主要用於存放一些與oracle的元件相關的輔助資訊。
segment:資料庫的物件一般以segment的方式儲存在資料庫中,如一張表,一個索引,一張分割槽表的一個分割槽等等。
extent:一個segment由一個或多個extent組成。extent是給segment分配儲存的最小單位。一個extent一般由一些連續的block組成。
block:data block是資料庫讀寫的最小單位。一般選擇預設的8KB即可。對於主要用於批次的系統,可以選擇16KB的block size。資料庫的block size在建庫時決定,一旦決定就無法更改。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8558093/viewspace-973606/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle體系結構Oracle
- ORACLE體系結構小結Oracle
- oracle體系結構總結Oracle
- oracle體系結構(轉)Oracle
- ORACLE-體系結構Oracle
- Oracle體系結構梳理Oracle
- Oracle 體系結構圖Oracle
- oracle體系結構(1)Oracle
- oracle體系結構(2)Oracle
- oracle體系結構(3)Oracle
- MySQL入門--體系結構MySql
- Oracle體系結構之-物理結構Oracle
- 【Oracle體系結構】 Oracle19C 系統結構介紹Oracle
- Oracle體系結構之-記憶體結構Oracle記憶體
- Oracle記憶體體系結構Oracle記憶體
- 3:Oracle體系結構(邏輯結構)Oracle
- oracle體系結構概覽Oracle
- Oracle 體系結構介紹Oracle
- Oracle系列:Oracle RAC叢集體系結構Oracle
- Oracle體系結構之-Oracle後臺程式Oracle
- Oracle體系結構:記憶體結構和程式結構(轉)Oracle記憶體
- Oracle體系結構部落格連結Oracle
- Oracle例項和Oracle資料庫(Oracle體系結構)Oracle資料庫
- Oracle體系結構之記憶體結構(SGA、PGA)Oracle記憶體
- Oracle OCP(37):Database 體系結構OracleDatabase
- Oracle 11g體系結構Oracle
- Oracle體系結構理論篇Oracle
- Oracle 12C 體系結構Oracle
- Oracle資料庫體系結構Oracle資料庫
- 【00】Oracle體系結構詳解Oracle
- Oracle RAC 體系結構--儲存Oracle
- Oracle 體系結構介紹(轉)Oracle
- Oracle 體系結構 SGA 和PGA 總結Oracle
- Oracle體系結構之-Oracle中各種名稱Oracle
- 0718_oracle 體系結構Oracle
- Oracle體系結構學習筆記Oracle筆記
- oracle 11g 體系結構研究Oracle
- 【體系結構】Oracle引數介紹Oracle