Oracle認識

數據庫結構算法

每個運行的Oracle 數據庫都與一個Oracle 實例關聯。在數據庫服務器上啓動數據庫後,Oracle 軟件會分配一個稱爲系統全局區(SGA) 的共享內存區,還會啓動若干個Oracle 後臺進程。這種由SGA 和Oracle 進程組成的組合就稱爲一個Oracle 實例
啓動實例後,Oracle 軟件會將實例與特定的數據庫關聯。這個過程稱爲裝載數據庫。而後可打開數據庫,使得受權用戶可訪問數據庫。在同一臺計算機上能夠併發執行多個實例,每個實例只訪問它本身的物理數據庫。
您能夠將Oracle 數據庫體系結構看做各類不一樣的、相互關聯的結構化組件。
Oracle 數據庫使用內存結構和進程來管理、訪問數據庫。全部內存結構都存在於構成數據庫服務器的計算機的主存中。進程指的是在這些計算機內存中運行的做業。進程被定義爲「控制線程」或操做系統中能夠運行一系列步驟的一種機制。
 
數據庫

 

Oracle 內存結構緩存

與Oracle 實例關聯的基本內存結構包括:
系統全局區(SGA):由全部服務器進程和後臺進程共享
程序全局區(PGA):專用於每個服務器進程或後臺進程。每個進程使用一個PGA
SGA 是包含實例的數據和控制信息的內存區。
SGA 包含如下數據結構:
數據庫緩衝區高速緩存:緩存從數據庫檢索的數據塊
重作日誌緩衝區:高速緩存重作信息(用於實例恢復),直到能夠將其寫入磁盤中存儲的物理重作日誌文件
共享池:緩存可在用戶間共享的各個結構
大型池:是一個可選區域,可爲某些大型進程(如Oracle 備份和恢復操做、I/O 服務器進程)提供大量內存分配
Java 池:用於Java 虛擬機(JVM) 中全部特定會話的Java 代碼和數據
Streams 池:由Oracle Streams 使用
經過使用Enterprise Manager 或SQL*Plus 啓動實例,能夠顯示爲SGA 分配的內存量。
服務器

程序全局區(PGA) 是包含每個服務器進程的數據及控制信息的內存區。Oracle 服務器進程爲客戶機的請求提供服務。每個服務器進程都有本身專用的PGA,這個PGA 是在服務器進程啓動時建立的。由該服務器進程獨佔對PGA 的訪問,PGA 只由對它自身執行操做Oracle 代碼讀寫。
使用動態SGA 基礎結構時,能夠在不關閉實例的狀況下更改數據庫緩衝區高速緩存、共享池、大型池和Java 池和Streams 池的大小。
Oracle 數據庫使用初始化參數建立並配置內存結構。例如,SGA_TARGET參數用於指定
SGA 可用的總空間量。若是SGA_TARGET設置爲0,則會禁用「自動共享內存管理」。
數據結構

 

進程結構併發

調用應用程序或Oracle 工具時,如調用Enterprise Manager 時,Oracle 服務器會經過建立服務器進程來執行應用程序發出的命令。Oracle 服務器還會針對一個實例建立一組後臺進程。這些進程不只彼此進行交互操做,還與操做系統進行交互操做,這樣能夠管理內存結構,經過異步執行I/O 操做將數據寫入磁盤,並且還能夠執行其它所需的任務。存在哪些後臺進程取決於數據庫中當前使用的功能。異步

 

Oracle 實例管理工具

Oracle 數據庫服務器由Oracle 數據庫和Oracle 實例組成。Oracle 實例由稱爲系統全局區(SGA) 的內存結構和後臺進程構成,這些後臺進程能夠處理實例運行中涉及的大量後臺任務。如下是最多見的後臺進程:
系統監視器(SMON):出現故障後啓動實例時執行崩潰恢復任務
進程監視器(PMON):用戶進程失敗時執行進程清理任務
數據庫寫進程(DBWn):將修改後的塊從數據庫緩衝區高速緩存寫入磁盤中的數據
文件
檢查點(CKPT):經過更新數據庫的全部數據文件和控制文件指出最新的檢查點
日誌寫進程(LGWR):將重作日誌條目寫入磁盤
歸檔進程(ARCn):發生日誌切換時將重作日誌文件複製到歸檔存儲器
spa

 

服務器進程和數據庫緩衝區高速緩存操作系統

處理某個查詢時,Oracle 服務器進程會在數據庫緩衝區高速緩存中查找它所需的全部數據塊。若是未在數據庫緩衝區高速緩存中找到數據塊,服務器進程會從數據文件中讀取數據塊,並在數據庫緩衝區高速緩存中添加一個副本。由於關於同一數據塊的後續請求可能會在內存中找到該數據塊,所以,這些請求可能不須要進行物理讀操做。Oracle 服務器使用最近用過的算法騰出最近未訪問的緩衝區,以便在數據庫緩衝區高速緩存中爲新數據塊提供空間。
緩衝區高速緩存中的緩衝區可能處於如下四種狀態之一:
已鏈接:可防止多個會話同時對同一數據塊進行寫操做。此時,其它會話正等待訪問該塊。
乾淨:緩衝區現已解除鏈接,若是沒有再次引用當前內容(數據塊),該緩衝區是能夠當即騰出的候選項。此時,不是緩衝區的內容已與磁盤中存儲的數據塊內容同步,就是緩衝區中包含塊的一致讀取(CR) 快照。
空閒或未使用實例剛剛啓動,緩衝區爲空。此狀態與「乾淨」狀態很是類似,不一樣之處在於緩衝區還沒有使用。
灰數據:緩衝區再也不處於已鏈接狀態,可是內容(數據塊)已更改,DBWn必須先將內容刷新到磁盤,才能騰出緩衝區。

 

物理數據庫結構

構成Oracle 數據庫的文件可分爲如下幾類:
控制文件:包含關於數據庫自己的數據(即物理數據庫結構信息)。這些文件對數據庫而言相當重要。沒有這些文件,就沒法打開用於訪問數據庫數據的數據文件。
數據文件:包含數據庫中的用戶數據或應用程序數據。
聯機重作日誌文件:用於進行數據庫實例恢復。若是數據庫已崩潰但未丟失任何數據文件,那麼使用這些文件中的信息能夠經過實例恢復數據庫。
要成功運行數據庫,如下附加文件很是重要:
參數文件:用於定義啓動實例時如何配置實例。
口令文件:用於將用戶遠程鏈接到數據庫後執行管理任務。
備份文件:用於數據庫恢復。當因爲出現介質故障或因爲用戶錯誤而損壞或刪除了原始文件時,一般須要還原備份文件。
歸檔日誌文件:包含實例生成的數據更改(重作操做)的實時歷史記錄。使用這些文件和數據庫備份能夠恢復丟失的數據文件。也就是說,使用歸檔日誌能夠恢復還原的數據文件。

跟蹤文件:每個服務器和後臺進程均可以對關聯的跟蹤文件進行寫操做。若是在進程中檢測到內部錯誤,進程就會將關於錯誤的信息轉儲到進程的跟蹤文件。寫入跟蹤文件的某些信息專門供數據庫管理員使用,另外一些信息則供Oracle 支持服務部門使用。
預警日誌文件這些是特殊的跟蹤文件,又稱爲預警日誌。數據庫預警日誌是按時間順序列出的消息日誌和錯誤日誌。Oracle 建議您查看這些文件。

 

表空間和數據文件

一個數據庫可劃分爲多個邏輯存儲單元,這些單元稱爲表空間,表空間可用於對相關邏輯結構進行分組。每個數據庫都按邏輯方式劃分爲一個或多個表空間。能夠爲每個表空間顯式建立一個或多個數據文件,這樣可在表空間中按物理方式存儲全部邏輯結構的數據。
注:還能夠建立大文件表空間,這種表空間只有一個數據文件,但這個數據文件很是大(最多可包含40 億個數據塊)。傳統的小文件表空間(默認值)能夠包含多個數據文件,但這些文件不可能這麼大。有關大文件表空間的詳細信息,請參閱《數據庫管理員指南》。

 

SYSTEM和SYSAUX表空間

每個Oracle 數據庫都包含SYSTEM表空間和SYSAUX表空間。這兩個表空間是在建立數據庫時建立的。系統默認值是建立小文件表空間。也能夠建立大文件表空間,這樣可經過Oracle 數據庫管理超大文件(最大爲8 EB)。
表空間的狀態能夠是聯機(可訪問)或脫機(不可訪問)。打開數據庫時SYSTEM表空間始終處於聯機狀態。這個表空間可存儲支持數據庫核心功能的表,如數據字典表。
SYSAUX表空間是SYSTEM表空間的輔助表空間。SYSAUX表空間可存儲許多的數據庫組件,要使全部數據庫組件正常運行,該表空間必須處於聯機狀態。

 

段、區和塊

數據庫對象(如表和索引)以段形式存儲在表空間中。每一個段包含一個或多個區。區由相鄰的數據塊組成,這意味着每個區只能夠存在於一個數據文件中。數據塊是數據庫中最小的I/O 單元。
數據庫從操做系統(OS) 請求數據塊集時,OS 會將數據塊集映射到存儲設備上的實際文件系統或磁盤塊。所以,您沒必要了解數據庫中任何數據的物理地址。這還意味着一個數據文件能夠條帶化或鏡像在多個磁盤上。
能夠在建立數據庫時設置數據塊的大小。對大多數數據庫而言,默認的8 KB 塊大小是足夠的。當數據庫支持擁有大型表和索引的數據倉庫應用程序時,最好設置更大的塊大小。
當數據庫支持執行隨機讀寫的事務處理應用程序時,最好指定更小的塊大小。塊大小的最大值取決於OS。最小的Oracle 塊大小爲2 KB,這個值不多使用(在任什麼時候候)。
表空間能夠有不一樣的塊大小。可是,這隻適用於可移動表空間。有關詳細信息,請參閱《數據庫管理員指南》。

 

邏輯和物理數據庫結構

Oracle 數據庫是按單元處理的數據的集合。數據庫的通常用途是存儲和檢索相關信息。數據庫具備邏輯結構和物理結構。
表空間
數據庫被分爲多個邏輯存儲單元,這些單元稱爲表空間,表空間能夠將相關的邏輯結構分組在一塊兒。例如,爲了簡化某些管理操做,表空間一般用於將應用程序的全部對象分組。此時,對應用程序數據可使用一個表空間,對應用程序索引可使用另外一個表空間。
數據庫、表空間和數據文件
在幻燈片中會演示數據庫、表空間和數據文件之間的關係。每個數據庫按邏輯方式劃分爲一個或多個表空間。能夠爲每一個表空間顯式建立一個或多個數據文件,這樣可在表空間中按物理方式存儲全部邏輯結構的數據。若是它是TEMPORARY表空間而不是數據文件,則這個表空間擁有一個臨時文件。

方案
方案是數據庫用戶擁有的數據庫對象的集合。方案對象是直接引用數據庫數據的邏輯結構。方案對象包括諸如表、視圖、序列、存儲過程、同義詞、索引、集羣和數據庫連接這樣的結構。通常而言,方案對象包括應用程序在數據庫中建立的任何內容。
數據塊
Oracle 數據庫的數據以最細的粒度級存儲在數據塊中。一個數據塊對應於磁盤上特定字節數的物理數據庫空間。每一個表空間的數據塊大小是在建立表空間時指定的。數據庫可使用和分Oracle 數據塊中的空閒數據庫空間。

塊的上一級邏輯數據庫空間稱爲區。區是特定數目的相鄰數據塊(在一次分配中獲取的),用於存儲特定類型的信息。

區之上的邏輯數據庫存儲級別稱爲段。段表明爲特定邏輯結構分配的區集。例如,各類類型的段包括:
數據段:每個非集羣、非索引的組織表都有一個數據段。該表的全部數據都存儲在表數據段的區中。對於分區表,每個分區都有一個數據段。每個集羣都有一個數據段。集羣中每一個表的數據都存儲在集羣的數據段中。
索引段:每個索引都有一個索引段,用於存儲索引的全部數據。對於已分區索引,每個分區都有一個索引段。
還原段:數據庫管理員會建立一個UNDO表空間,用於臨時存儲還原信息。還原段中的信息用於生成一致讀取信息,在數據庫恢復過程當中,還可用於回退用戶的未提交事務。
臨時段:當SQL 語句須要一個臨時工做區來完成執行時,Oracle 數據庫會建立臨時段。語句結束執行後,臨時段的區會返回到實例,以便供未來使用。請爲每一個用戶指定一個默認臨時表空間,或指定一個在數據庫級別使用的默認臨時表空間。
Oracle 數據庫可動態分配空間。若是段的現有區已滿,則會添加更多的區。因爲區是按需分配的,所以,段的區在磁盤上不必定是相鄰的。

 

數據庫體系結構:結構化組件概要

相關文章
相關標籤/搜索