Oracle原理:11g的體系結構

目錄

1.11g的物理結構和邏輯結構

2.全局系統區SGA和程序全局區PGA

3. 9i中的自動PGA管理

4. 10g中的自動SGA管理和MMAN進程和MMON進程

5. 11g中的AMM配置和MMAN進程

6.11g默認表空間的結構和特點


1.11g的物理結構和邏輯結構

  1.1  Oracle服務器由Oracle數據庫和Oracle實例組成。Oracle數據庫裏的是看得見的,這些數據存放在數據文件裏,也就是存放在內存中,是具有物理概念的。而Oracle實例指的是內存結構和後臺進程的集合。相當於C++把數據封裝起來的類一樣,是具有邏輯概念的。內存結構包含全局系統區SGA和程序全局區PGA,後臺進程包括PMON,SMON、CKPT、LGWR、ARC等.

實例啓動時,先分配好內存再啓動後臺進程。

主要物理文件包括3類:數據文件,日誌文件,控制文件。 非主要物理文件包括:參數文件、密碼文件,告警和跟蹤文件、歸檔日誌文件、備份文件。丟失主要物理文件,數據庫無法運行。控制文件是記錄數據庫物理結構的二進制文件。日誌文件記錄了對數據庫的所有修改信息,用於數據恢復。select * from v$datafile  可以開數據文件信息,v$controlfile控制文件信息,v$logfile日誌文件信息。在SQL_PLUS窗口輸入 show parameter spfile ;查看參數文件信息。$ORACLE_HOME/database/PWD%ORACLE_SID%.ora爲密碼文件 

show param dump_dest來查詢告警跟蹤文件;show parameter log_archive_format查詢歸檔日誌文件

1.2 邏輯結構是看不見的。爲便於管理,Oracle在邏輯層面上劃分,一個數據庫由多個表空間組成;一個表空間由多個段組成;一個段由多個區組成,一個區由多個數據塊組成。數據塊是存儲、讀寫數據的最小單位。

表空間由一個或多個數據文件.dbf 組成。一個數據文件只能屬於一個表空間。v$tablespace,v$datafile聯合查詢可以查看錶空間信息。 如果段存放的是數據信息就叫數據段,如果這個段存放回滾信息就叫回滾段,類似的還有索引段,臨時段。段擴展會再分配一個區,一個區只能存儲於一個數據文件中;數據塊默認是8k(8192)字節,db_block_size,show param db_block_size 儘管只需要幾個字節的數據,也會把整個數據塊數據都取下來。

2.全局系統區SGA和程序全局區PGA

2.1SGA:

  一般情況下,SGA使用Oracle整個內存的80%,而PGA使用Oracle內存的20%。Oracle實例啓動時分配SGA,服務器進程(Server Process)啓動時分配PGA.。數據庫信息存儲於SGA,由多個數據庫進程共享。

SGA內存又包含了6個部分:共享池,數據緩衝區、日誌緩衝區、Large池、stream流池、JAVA池。

共享池是SQL、PL/SQL程序進行語法分析、編譯、執行的內存區域。共享池由庫緩存和數據字典緩存組成,它的內存大小直接影響了數據庫的性能。編譯後的語句就會放進共享池中,之後如果重複執行的SQL,就會先查共享池裏是否有已經好的語句。如果有 則直接執行,可以省去了編譯的步驟。相當於JAVA裏面的 .class文件。也就是說只要執行的SQL語句發生了更新,更新的部分要重新編譯一遍。

數據緩衝區:所有用戶共享,用於存儲從磁盤數據文件中讀入的數據。因爲 用戶直接從硬盤存取頻繁地IO會導致速度會非常慢,所以,Oracle設立了一塊內存,名爲數據緩衝區。先把IO的數據存入數據緩衝區中,然後用戶在從這塊內存中讀取數據。用戶每次需要讀入寫入數據時,會從這塊內存中查找,有則直接取出,沒有則讓數據緩衝區載入硬盤數據,再從中讀取。讀寫內存要比讀寫磁盤的速度快得多寫入硬盤也是一樣的:先從硬盤數據讀入數據緩衝區,用戶更改數據緩衝區,數據緩衝區再寫入硬盤。數據緩衝區能加快提取速度,數據緩衝區的大小直接影響了Oracle的讀取數據的速度。

日誌緩衝區:讀寫入在線日誌文件時,會把信息寫入日誌緩衝區中,數據緩衝區的原理類似。由於日誌不是執行SQL的必要條件,所以日誌緩衝區對Oracle性能影響較小。

Large池:爲了進行大的後臺進程操作而分配的內存空間,如備份恢復、大型IO操作、並行查詢等

Stream池: 爲Stream應用而分配的內存空間

JAVA池:爲JAVA應用而分配的內存空間

 

2:.2  PGA

PGA包含了單個服務器進程所需的數據和控制信息。排序的數據也在PGA中存放。

 實例進程包含了3中類型:用戶進程、服務器進程、後臺進程。

用戶進程位於客戶端,在用戶運行一個應用程序時準備向數據庫服務器發送交互請求時創建。PGA是在用戶進程連接到數據庫並創建一個會話時自動分配的。有幾個用戶連接數據庫,就有多少個服務器進程在服務器上創建,每個用戶對應了自己的用戶進程,用戶進程和服務器進程一 一對應。服務器進程所佔用的空間位於PGA,PGA資源各不共享。

專有連接:9i和9i以後用的是專有連接。每個用戶對應了自己的用戶進程,用戶進程和服務器進程一 一對應。對專有連接來說,用戶在啓動了一個應用程序與服務器交互,就是在客戶端上創建了一個用戶進程,與oracle服務器端成功連接後,會在服務器端生成一個服務器進程,該服務器進程作爲用戶進程的代理進程,代替客戶端執行各種命令並把結果返回給客戶端。用戶進程一旦終止,服務器進程也立刻中止。

共享連接:8i和8i以前用的是共享連接。一個用戶可以對應多個服務器進程。一個服務器進程可以對應多個用戶進程。

 

2.3 後臺進程:

會話指的是用戶與Oracle服務器的單個連接。會話信息可以: select * from v$session where username='[用戶名]'; 來查看

Oracle實例啓動時,會創建一系列後臺進程,必須創建的後臺進程被稱爲必備進程,4個,PMON,SMON,DBWn。CKPT。

PMON進程監控進程:用來清理出現的故障進程,施放所有的當前掛起的鎖定,施放故障進程所使用的資源。比如用戶進程中斷,就其對應的服務器進程就會發生故障,這個服務器進程的清理就由PMON來做。

SMON系統監控進程:在實例失敗,重新打開數據庫時自動恢復實例。整理數據文件的自由空間,將相鄰區域結合起來,施放不再使用的臨時段。 9i之前是手動管理自由空間,9i和9i之後是自動管理。實例失敗指的是程序中斷(程序返回值不爲0),比如服務器關機。重啓啓動服務器時,實例的恢復就有SMON完成。

DBWn數據寫入進程:管理數據緩存區的進程。把最近使用過的數據保留在內存,將修改後的緩衝數據寫入數據文件中就是DBWn在做。比如,用戶發送update命令,會把對應的數據從硬盤移入數據緩衝區中,改完數據後再寫入數據文件中。

LGWR日誌寫入進程:和DBWn原理類似,只不過是管理日誌緩衝區的進程。將緩衝數據寫入日誌文件,系統一般有多個日誌文件,該進程通常以循環的方式將日誌寫入日誌文件。

CKPT檢查點進程。CheckPoint,爲了在實例崩潰後儘快恢復實例所設定的進程,CheckPoint分爲完全檢查點和增量檢查點。完全檢查點只有下面兩種情況下被觸發:,一個是用戶發出 alter system checkpoint ,第二個是除了shutdowon abort以外的方式關閉數據庫。增量檢查點只有下面兩種情況下被觸發:每個3秒觸發一次,在線日誌切換時觸發。

ARCn進程:當數據庫日誌狀態爲ArchiveLog模式時,ARCn會在LogSwitch時自動把Redo Log File 複製到指定目錄下。即歸檔日誌文件。用來把在線日誌文件 歸檔成 歸檔日誌文件。

MMAN進程:10g出現,用於自動SGA管理,11g中的MMAN用於自動內存管理。

MMON進程:10g出現,用於自動統計信息收集。

查詢進程信息示例如 :select * from v$process where program like '%DBW%'

 

3. 9i中的自動PGA管理

自動PGA管理的前提是設置初始化參數workarea_size_policy爲AUTO。在專有連接下,數據庫管理員根據數據庫的負載情況,估計所有的Session大概是需要消耗的PGA的總大小,然後把該值設置成初始化參數pga_aggregare_target.。Oracle就會自動調整每個session的PGA的大小。每個用戶的PGA大小都是一樣的,操控的是PGA上的服務器進程的大小。

在一般情況下服務器進程所需要的資源大小是不斷變化的,有些服務器進程需要的資源小,有些服務器進程需要的資源大。我們很難進行手動的管理,9i以後,可以自動PGA管理來完成。

 

4. 10g中的自動SGA管理和MMAN進程和MMON進程

   ASMM自動SGA管理(Automatic Share Memory Management),10g的時候出現,可以不用9i那樣具體分配SGA中的每一個部分大小。初始化參數 statistics_level爲TYPICAL或ALL時纔可以啓動ASMM, 用sga_target來定義了整個SGA的大小。因此10g以後有了新的後臺進程MMAN來進行自動SGA管理。MMON進程,用於自動統計信息收集。

5. 11g中的AMM配置和MMAN進程

   11g出現了AMM(自動內存管理),需要初始化參數statistics_level爲TYPICAL或ALL時纔可以啓動AMM。初始化參數Menory_target定義了整個內存大小(SGA和PGA的總大小),新的Memory_max_target來定義了整個內存大小可以達到的最大值。如果使用AMM自動內存管理,sga_target和pga_aggregate_target的值應該設置成0

查看修改這些參數:

打開SQL_PLUS命令窗口:查詢參數命令  show param [參數名,自動模糊查詢]

修改參數命令:alter system set [參數名全名] =[值];

修改成功後重啓數據庫後即可生效。

6.11g默認表空間的結構和特點

    11g的默認默認表空間包含了SYSTEM、SYSAUX、TEMP、UNDOtbs1、USERS、EXAMPLE。

SYSTEM 是系統表空間,存放系統的最基本信息; SYSAUX在10g中才引入,是SYSTEM的輔助表空間,用來減少SYSTEM的負荷所設立的。把一些其他表空間的一些組件放在了SYSAUX表空間裏了,比如以前SYSTEM中的LogMiner、Logical Standby,DRSYS表空間裏的Oracle Text 等;TEMP是臨時表空間,當分配的空間無法完成排序時,就會在TEMP表空間用磁盤排序的方式(效率低)來排序;UNDO類型的表空間,保存用戶DML(增刪改)操作,修改前的數據;USERS 是系統默認的永久性表空間,創建表的時候,沒有指定表空間時就會放入默認表空間USERS,當然數據庫的默認表空間是可以被修改的;EXAMPLE是數據庫測試用例所涉及的表所屬表空間。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章