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類:數據文件,日志文件,控制文件。 非主要物理文件包括:參數文件、密碼文件,告警和跟蹤文件、歸檔日志文件、備份文件。丟失主要物理文件,數據庫無法運行??刂莆募怯涗洈祿煳锢斫Y構的二進制文件。日志文件記錄了對數據庫的所有修改信息,用于數據恢復。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是數據庫測試用例所涉及的表所屬表空間。
?
?
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Oracle原理:11g的体系结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle原理: 行级锁和表级锁
- 下一篇: Oracle 原理: 11g的启动和关闭