ORACLE系統概述(轉)

zhouwf0726發表於2019-04-14
ORACLE公司自86年推出版本5開始,系統具有分佈資料庫處理功能.88年推出版本6,ORACLE RDBMS(V6.0)可帶事務處理選項(TPO),提高了事務處理的速度.1992年推出了版本7,在ORACLE RDBMS中可帶過程資料庫選項(procedural database option)和並行伺服器選項(parallel server option),稱為ORACLE7資料庫管理系統,它釋放了開放的關係型系統的真正潛力。ORACLE7的協同開發環境提供了新一代整合的軟體生命週期開發環境,可用以實現高生產率、大型事務處理及客戶/伺服器結構的應用系統。協同開發環境具有可移植性,支援多種資料來源、多種圖形使用者介面及多媒體、多民族語言、CASE等協同應用系統。

一、 ORACLE系統

1.ORACLE產品結構及組成

ORACLE系統是由以RDBMS為核心的一批軟體產品構成.

2. ORACLE系統特點

ORACLE公司於1979年,首先推出基於SQL標準的關聯式資料庫產品,可在100多種硬體平臺上執行(所括微機、工作站、小型機、中型機和大型機),支援很多種作業系統。使用者的ORACLE應用可方便地從一種計算機配置移至另一種計算機配置上。ORACLE的分散式結構可將資料和應用駐留在多臺計算機上,而相互間的通訊是透明的。1992年6月ORACLE公司推出的ORACLE7協同伺服器資料庫,使關聯式資料庫技術邁上了新臺階。根據IDG(國際資料集團)1992年全球UNIX資料庫市場報告,ORACLE佔市場銷售量50%。它之所以倍受使用者喜愛是因為它有以下突出的特點:

支援大資料庫、多使用者的高效能的事務處理。ORACLE支援最大資料庫,其大小可到幾百千兆,可充分利用硬體裝置。支援大量使用者同時在同一資料上執行各種資料應用,並使資料爭用最小,保證資料一致性。系統維護具有高的效能,ORACLE每天可連續24小時工作,正常的系統操作(後備或個別計算機系統故障)不會中斷資料庫的使用。可控制資料庫資料的可用性,可在資料庫級或在子資料庫級上控制。

ORACLE遵守資料存取語言、作業系統、使用者介面和網路通訊協議的工業標準。所以它是一個開放系統,保護了使用者的投資。美國標準化和技術研究所(NIST)對ORACLE7 SERVER進行檢驗,100%地與ANSI/ISO SQL89標準的二級相相容。

實施安全性控制和完整性控制。ORACLE為限制各監控資料存取提供系統可靠的安全性。ORACLE實施資料完整性,為可接受的資料指定標準。

支援分散式資料庫和分佈處理。ORACLE為了充分利用計算機系統和網路,允許將處理分為資料庫伺服器和客戶應用程式,所有共享的資料管理由資料庫管理系統的計算機處理,而執行資料庫應用的工作站集中於解釋和顯示資料。通過網路連線的計算機環境,ORACLE將存放在多臺計算機上的資料組合成一個邏輯資料庫,可被全部網路使用者存取。分散式系統像集中式資料庫一樣具有透明性和資料一致性。

具有可移植性、可相容性和可連線性。由於ORACLE軟體可在許多不同的作業系統上執行,以致ORACLE上所開發的應用可移植到任何作業系統,只需很少修改或不需修改。ORACLE軟體同工業標準相相容,包括許多工業標準的作業系統,所開發應用系統可在任何作業系統上執行。可連線性是指ORALCE允許不同型別的計算機和作業系統通過網路可共享資訊。

二、 ORACLE資料庫系統的體系結構

ORACLE資料庫系統為具有管理ORACLE資料庫功能的計算機系統。每一個執行的ORACLE資料庫與一個ORACLE例項(INSTANCE)相聯絡。一個ORACLE例項為存取和控制一資料庫的軟體機制。每一次在資料庫伺服器上啟動一資料庫時,稱為系統全域性區(SYSTEM GLOBAL AREA)的一記憶體區(簡稱SGA)被分配,有一個或多個ORACLE程式被啟動。該SGA 和 ORACLE程式的結合稱為一個ORACLE資料庫例項。一個例項的SGA和程式為管理資料庫資料、為該資料庫一個或多個使用者服務而工作。

在ORACLE系統中,首先是例項啟動,然後由例項裝配(MOUNT)一資料庫。在鬆耦合系統中,在具有ORACLE PARALLEL SERVER 選項時,單個資料庫可被多個例項裝配,即多個例項共享同一物理資料庫。

1. ORACLE例項的程式結構和記憶體結構

1) 程式結構

程式是作業系統中的一種機制,它可執行一系列的操作步。在有些作業系統中使用作業(JOB)或任務(TASK)的術語。一個程式通常有它自己的專用儲存區。ORACLE程式的體系結構設計使效能最大。

ORACLE例項有兩種型別:單程式例項和多程式例項。

單程式ORACLE(又稱單使用者ORACLE)是一種資料庫系統,一個程式執行全部ORACLE程式碼。由於ORACLE部分和客戶應用程式不能分別以程式執行,所以ORACLE的程式碼和使用者的資料庫應用是單個程式執行。

在單程式環境下的ORACLE 例項,僅允許一個使用者可存取。例如在MS-DOS上執行ORACLE 。

多程式ORACLE例項(又稱多使用者ORACLE)使用多個程式來執行ORACLE的不同部分,對於每一個連線的使用者都有一個程式。

在多程式系統中,程式分為兩類:使用者程式和ORACLE程式。當一使用者執行一應用程式,如PRO*C程式或一個ORACLE工具(如SQL*PLUS),為使用者執行的應用建立一個使用者程式。ORACLE程式又分為兩類:伺服器程式和後臺程式。伺服器程式用於處理連線到該例項的使用者程式的請求。當應用和ORACELE是在同一臺機器上執行,而不再通過網路,一般將使用者程式和它相應的伺服器程式組合成單個的程式,可降低系統開銷。然而,當應用和ORACLE執行在不同的機器上時,使用者程式經過一個分離伺服器程式與ORACLE通訊。它可執行下列任務:

對應用所發出的SQL語句進行語法分析和執行。

從磁碟(資料檔案)中讀入必要的資料塊到SGA的共享資料庫緩衝區(該塊不在緩衝區時)。

將結果返回給應用程式處理。

系統為了使效能最好和協調多個使用者,在多程式系統中使用一些附加程式,稱為後臺程式。在許多作業系統中,後臺程式是在例項啟動時自動地建立。一個ORACLE例項可以有許多後臺程式,但它們不是一直存在。後臺程式的名字為:

DBWR 資料庫寫入程式

LGWR 日誌寫入程式

CKPT 檢查點

SMON 系統監控

PMON 程式監控

ARCH 歸檔

RECO 恢復

LCKn 封鎖

Dnnn 排程程式

Snnn 伺服器

每個後臺程式與ORACLE資料庫的不同部分互動。

下面對後臺程式的功能作簡單介紹:

DBWR程式:該程式執行將緩衝區寫入資料檔案,是負責緩衝儲存區管理的一個ORACLE後臺程式。當緩衝區中的一緩衝區被修改,它被標誌為“弄髒”,DBWR的主要任務是將“弄髒”的緩衝區寫入磁碟,使緩衝區保持“乾淨”。由於緩衝儲存區的緩衝區填入資料庫或被使用者程式弄髒,未用的緩衝區的數目減少。當未用的緩衝區下降到很少,以致使用者程式要從磁碟讀入塊到記憶體儲存區時無法找到未用的緩衝區時,DBWR將管理緩衝儲存區,使使用者程式總可得到未用的緩衝區。

ORACLE採用LRU(LEAST RECENTLY USED)演算法(最近最少使用演算法)保持記憶體中的資料塊是最近使用的,使I/O最小。在下列情況預示DBWR 要將弄髒的緩衝區寫入磁碟:

當一個伺服器程式將一緩衝區移入“弄髒”表,該弄髒表達到臨界長度時,該服務程式將通知DBWR進行寫。該臨界長度是為引數DB-BLOCK-WRITE-BATCH的值的一半。

當一個伺服器程式在LRU表中查詢DB-BLOCK-MAX-SCAN-CNT緩衝區時,沒有查到未用的緩衝區,它停止查詢並通知DBWR進行寫。

出現超時(每次3秒),DBWR 將通知本身。

當出現檢查點時,LGWR將通知DBWR

在前兩種情況下,DBWR將弄髒表中的塊寫入磁碟,每次可寫的塊數由初始化引數DB-BLOCK-WRITE-BATCH所指定。如果弄髒表中沒有該引數指定塊數的緩衝區,DBWR從LUR表中查詢另外一個弄髒緩衝區。

如果DBWR在三秒內未活動,則出現超時。在這種情況下DBWR對LRU表查詢指定數目的緩衝區,將所找到任何弄髒緩衝區寫入磁碟。每當出現超時,DBWR查詢一個新的緩衝區組。每次由DBWR查詢的緩衝區的數目是為寢化引數DB-BLOCK-WRITE-BATCH的值的二倍。如果資料庫空運轉,DBWR最終將全部緩衝區儲存區寫入磁碟。

在出現檢查點時,LGWR指定一修改緩衝區表必須寫入到磁碟。DBWR將指定的緩衝區寫入磁碟。

在有些平臺上,一個例項可有多個DBWR。在這樣的例項中,一些塊可寫入一磁碟,另一些塊可寫入其它磁碟。引數DB-WRITERS控制DBWR程式個數。

LGWR程式:該程式將日誌緩衝區寫入磁碟上的一個日誌檔案,它是負責管理日誌緩衝區的一個ORACLE後臺程式。LGWR程式將自上次寫入磁碟以來的全部日誌項輸出,LGWR輸出:

當使用者程式提交一事務時寫入一個提交記錄。

每三秒將日誌緩衝區輸出。

當日志緩衝區的1/3已滿時將日誌緩衝區輸出。

當DBWR將修改緩衝區寫入磁碟時則將日誌緩衝區輸出。

LGWR程式同步地寫入到活動的鏡象線上日誌檔案組。如果組中一個檔案被刪除或不可用,LGWR 可繼續地寫入該組的其它檔案。

日誌緩衝區是一個迴圈緩衝區。當LGWR將日誌緩衝區的日誌項寫入日誌檔案後,伺服器程式可將新的日誌項寫入到該日誌緩衝區。LGWR 通常寫得很快,可確保日誌緩衝區總有空間可寫入新的日誌項。

注意:有時候當需要更多的日誌緩衝區時,LWGR在一個事務提交前就將日誌項寫出,而這些日誌項僅當在以後事務提交後才永久化。

ORACLE使用快速提交機制,當使用者發出COMMIT語句時,一個COMMIT記錄立即放入日誌緩衝區,但相應的資料緩衝區改變是被延遲,直到在更有效時才將它們寫入資料檔案。當一事務提交時,被賦給一個系統修改號(SCN),它同事務日誌項一起記錄在日誌中。由於SCN記錄在日誌中,以致在並行伺服器選項配置情況下,恢復操作可以同步。

CKPT程式:該程式在檢查點出現時,對全部資料檔案的標題進行修改,指示該檢查點。在通常的情況下,該任務由LGWR執行。然而,如果檢查點明顯地降低系統效能時,可使CKPT程式執行,將原來由LGWR程式執行的檢查點的工作分離出來,由CKPT程式實現。對於許多應用情況,CKPT程式是不必要的。只有當資料庫有許多資料檔案,LGWR在檢查點時明顯地降低效能才使CKPT執行。CKPT程式不將塊寫入磁碟,該工作是由DBWR完成的。

初始化引數CHECKPOINT-PROCESS控制CKPT程式的使能或使不能。預設時為FALSE,即為使不能。

SMON程式:該程式例項啟動時執行例項恢復,還負責清理不再使用的臨時段。在具有並行伺服器選項的環境下,SMON對有故障CPU或例項進行例項恢復。SMON程式有規律地被呼醒,檢查是否需要,或者其它程式發現需要時可以被呼叫。

PMON程式:該程式在使用者程式出現故障時執行程式恢復,負責清理記憶體儲區和釋放該程式所使用的資源。例:它要重置活動事務表的狀態,釋放封鎖,將該故障的程式的ID從活動程式表中移去。PMON還週期地檢查排程程式(DISPATCHER)和伺服器程式的狀態,如果已死,則重新啟動(不包括有意刪除的程式)。

PMON有規律地被呼醒,檢查是否需要,或者其它程式發現需要時可以被呼叫。

RECO程式:該程式是在具有分散式選項時所使用的一個程式,自動地解決在分散式事務中的故障。一個結點RECO後臺程式自動地連線到包含有懸而未決的分散式事務的其它資料庫中,RECO自動地解決所有的懸而不決的事務。任何相應於已處理的懸而不決的事務的行將從每一個資料庫的懸掛事務表中刪去。

當一資料庫伺服器的RECO後臺程式試圖建立同一遠端伺服器的通訊,如果遠端伺服器是不可用或者網路連線不能建立時,RECO自動地在一個時間間隔之後再次連線。

RECO後臺程式僅當在允許分散式事務的系統中出現,而且DISTRIBUTED – TRANSACTIONS引數是大於0。

ARCH程式:該程式將已填滿的線上日誌檔案拷貝到指定的儲存裝置。當日志是為ARCHIVELOG使用方式、並可自動地歸檔時ARCH程式才存在。

LCKn程式:是在具有並行伺服器選件環境下使用,可多至10個程式(LCK0,LCK1……,LCK9),用於例項間的封鎖。

Dnnn程式(排程程式):該程式允許使用者程式共享有限的伺服器程式(SERVER PROCESS)。沒有排程程式時,每個使用者程式需要一個專用服務程式(DEDICATEDSERVER PROCESS)。對於多線索伺服器(MULTI-THREADED SERVER)可支援多個使用者程式。如果在系統中具有大量使用者,多線索伺服器可支援大量使用者,尤其在客戶_伺服器環境中。

在一個資料庫例項中可建立多個排程程式。對每種網路協議至少建立一個排程程式。資料庫管理員根據作業系統中每個程式可連線數目的限制決定啟動的排程程式的最優數,在例項執行時可增加或刪除排程程式。多線索伺服器需要SQL*NET版本2或更後的版本。在多線索伺服器的配置下,一個網路接收器程式等待客戶應用連線請求,並將每一個傳送到一個排程程式。如果不能將客戶應用連線到一排程程式時,網路接收器程式將啟動一個專用伺服器程式。該網路接收器程式不是ORACLE例項的組成部分,它是處理與ORACLE有關的網路程式的組成部分。在例項啟動時,該網路接收器被開啟,為使用者連線到ORACLE建立一通訊路徑,然後每一個排程程式把連線請求的排程程式的地址給予於它的接收器。當一個使用者程式作連線請求時,網路接收器程式分析請求並決定該使用者是否可使用一排程程式。如果是,該網路接收器程式返回該排程程式的地址,之後使用者程式直接連線到該排程程式。有些使用者程式不能排程程式通訊(如果使用SQL*NET以前的版本的使用者),網路接收器程式不能將如此使用者連線到一排程程式。在這種情況下,網路接收器建立一個專用伺服器程式,建立一種合適的連線。

2)、ORACLE記憶體結構

ORACLE在記憶體儲存下列資訊:

執行的程式程式碼。

連線的會話資訊

程式執行期間所需資料和共享的資訊

儲存在外儲存上的緩衝資訊。

ORACLE具有下列基本的記憶體結構:

軟體程式碼區

系統全域性區,包括資料庫緩衝儲存區、日誌緩衝區和共享池.

程式全域性區,包括棧區和資料區.

排序區

軟體程式碼區

用於儲存正在執行的或可以執行的程式程式碼。

軟體區是隻讀,可安裝成共享或非共享。ORACLE系統程式是可共享的,以致多個ORACLE使用者可存取它,而不需要在記憶體有多個副本。使用者程式可以共享也可以不共享。

系統全域性區

為一組由ORACLE分配的共享的記憶體結構,可包含一個資料庫例項的資料或控制資訊。如果多個使用者同時連線到同一例項時,在例項的SGA中資料可為多個使用者所共享,所以又稱為共享全域性區。當例項起動時,SGA的儲存自動地被分配;當例項關閉時,該儲存被回收。所有連線到多程式資料庫例項的全部使用者可自動地被分配;當例項關閉時,該儲存被回收。所有連線到多程式資料庫例項的全部使用者可使用其SGA中的資訊,但僅僅有幾個程式可寫入資訊。在SGA中儲存資訊將記憶體劃分成幾個區:資料庫緩衝儲存區、日誌緩衝區、共享池、請求和響應佇列、資料字典儲存區和其它各種資訊。

程式全域性區

PGA是一個記憶體區,包含單個程式的資料和控制資訊,所以又稱為程式全域性區(PROCESS GLOBAL AREA)。

排序區

排序需要記憶體空間,ORACLE利用該記憶體排序資料,這部分空間稱為排序區。排序區存在於請求排序的使用者程式的記憶體中,該空間的大小為適就排序資料量的大小,可增長,但受初始化引數SORT-AREA-SIZER所限制。

2. ORACLE的配置方案

所有連線到ORACLE的使用者必須執行兩個程式碼模組可存取一個ORACLE資料庫例項:

應用或ORACLE工具:一資料庫使用者執行一資料庫應用或一個ORACLE工具,可向ORACLE資料庫發出SQL語句。
ORACLE伺服器程式:負責解釋和處理應用中的SQL語句。

在多程式例項中,連線使用者的程式碼可按下列三種方案之一配置:

對於每一個使用者,其資料庫應用程式和伺服器程式組合成單個使用者程式

對於每一個使用者,其資料庫應用是由使用者程式所執行,並有一個專用伺服器程式。執行ORACLE伺服器的程式碼。這樣的配置稱為專用伺服器體系結構

執行資料庫應用的程式不同於執行ORACLE伺服器程式碼的程式,而且每一個伺服器程式(執行ORACLE伺服器程式碼)可服務於多個使用者程式,這樣的配置稱為多線索伺服器體系結構。

1) USER/SERVER程式相結合的結構

在這種配置下,資料庫應用和ORACLE伺服器程式是在同一個程式中執行,該程式稱為使用者程式。

這種ORACLE配置有時稱為單任務ORACLE(single_task ORACLE),該配置適用於這樣的作業系統,它可在同一程式中的資料庫應用和ORACLE程式碼之間維護一個隔離,該隔離是為資料安全性和完整性所需。其中程式介面(program interface)是負責ORACLE伺服器程式碼的隔離和保護,在資料庫應用和ORACLE使用者程式之間傳送資料。

2) 使用專用伺服器程式的系統結構

使用專用伺服器程式的ORACLE系統在兩臺計算機上執行。在這種系統中,在一計算機上使用者程式執行資料庫應用,而在另一臺計算機上的伺服器程式執行相應的ORACLE伺服器程式碼,這兩個程式是分離的。為每個使用者程式建立的不同的伺服器程式稱為專用伺服器程式,因為該伺服器程式僅對相連的使用者程式起作用。這種配置又稱為兩任務ORACLE。每一個連線到ORACLE的使用者程式有一個相應的專用服務程式。這種系統結構允許客戶應用是有工作站上執行,通過網路與執行ORACLE的計算機通訊。當客戶應用和ORACLE伺服器程式碼是在同一臺計算機上執行時,這種結構也可用。

3) 多線索伺服器的系統結構

多線索伺服器配置允許許多使用者程式共享很少伺服器程式。在沒有多線索伺服器的配置中,每一個使用者程式需要自己的專用伺服器程式。在具有多線索伺服器的配置中,許多使用者程式連線到排程程式,由排程程式將客戶請求傳送到一個共享伺服器程式。多線索伺服器配置的優點是降低系統開銷,增加使用者個數。

該系統中需要下列型別的程式:

網路接收器程式,將使用者程式連線到排程程式和專用伺服器程式。

一個或多個排程程式

一個或多個共享伺服器程式

其中網路接收器程式等待新來的連線請求,決定每一使用者程式能否用共享伺服器程式。如果可以使用,接收器程式將一排程程式的地址返回給使用者程式。如果使用者程式請求一專用伺服器,該接收器程式將建立一個專用伺服器程式,將使用者程式連線到該專用伺服器程式。對於資料庫客戶機所使用的每種網路協議至少配置一個排程程式,並啟動它。

當使用者作一次呼叫時,排程程式將請求放置在SGA的請求佇列中,由可用的共享伺服器程式獲取。共享伺服器程式為完成每一個使用者程式的請求作所有必要的資料庫呼叫。當伺服器完成請求時,將結果返回到排程程式的佇列,然後由排程程式將完成的請求返回給使用者程式。

共享伺服器程式:除共享伺服器程式不是連線指定的使用者程式外,共享伺服器程式和專用伺服器程式提供相同的功能,一個共享伺服器程式在多線索伺服器的配置中可為任何客戶請求服務。一個共享伺服器程式的SGA不包含有與使用者相關的資料,其資訊可為所有共享伺服器程式存取,它僅包含棧空間、程式指定變數。所有與會話有關的資訊是包含有SGA中。每一個共享伺服器程式可存取全部會話的資料空間,以致任何服務程式可處理任何會話的請求。對於每一個會話的資料空間是在SGA中分配空間。

ORACLE根據請求佇列的長度可動態地調整共享伺服器程式。可建立的共享伺服器程式將請求放到請求佇列。一個使用者請求是對資料庫的一次程式介面呼叫,為SQL語句。在SGA中請求佇列對例項的全部排程程式是公用的。伺服器程式為新請求檢查公用請求佇列,按先進先出的原則從佇列檢出一個請求,然後為完成該請求對資料庫作必要的呼叫。共享伺服器程式將響應放在排程程式的響應佇列。每一個排程程式在SGA中有自己的響應佇列,每個排程程式負責將完成的請求回送給相應的使用者程式。

3.ORACLE執行

1) 使用專用服務程式的ORACLE的執行

在這種配置下,ORACLE執行過程如下:

(1) 資料庫伺服器計算機當前正在執行ORACLE(後臺程式)。

(2) 在一客戶工作站執行一個資料庫應用(為使用者程式),如SQL*PLUS。客戶應用使用SQL*NET DRIVER建立對伺服器的連線。

(3) 資料庫伺服器計算機當前正執行合適的SQL*NET DRIVER,該機上接收器程式檢出客戶資料庫應用的連線請求,並在該機上為使用者程式建立專用伺服器程式。

(4) 使用者發出單個SQL語句。

(5) 專用伺服器程式接收該語句,在此處有兩種方法處理SQL語句:

如果在共享池一共享SQL區中包含有相同SQL語句時,該伺服器程式可利用已存在的共享SQL區執行客戶的SQL語句。

如果在共享池中沒有一個SQL區包含有相同的SQL語句時,在共享池中為該語句分配一新的共享SQL區。

在每一種情況,在會話的PGA中建立一個專用SQL區,專用伺服器程式檢查使用者對查詢資料的存取許可權。

(6) 如果需要,伺服器程式從資料檔案中檢索資料塊,或者可使用已儲存在例項SGA中的緩衝儲存區的資料塊。

(7) 伺服器程式執行儲存在共享SQL區中的SQL語句。資料首先在SGA中修改,由DBWR程式在最有效時將它寫入磁碟。LGWR程式在線上日誌檔案中記錄使用者提交請求的事務。

(8)如果請求成功,伺服器將通過網路傳送一資訊。如果請求不成功,將傳送相應的錯誤資訊。

(9)在整個過程中,其它的後臺程式是執行的,同時注意需要干預的條件。另外,ORACLE管理其它事務,防止不同事務之間請求同一資料的競爭。

2) 使用多線索伺服器的ORACLE的執行

在這種配置下,ORACLE執行過程如下:

(1) 一資料庫伺服器計算機執行使用多線索伺服器配置的ORACLE。

(2) 在一客戶工作站執行一資料庫應用(在一使用者程式中)。客戶應用合適的SQL*NET驅動器試圖建立到資料庫伺服器計算機的連線。

(3) 資料庫伺服器計算機當前執行合適的SQL*NET驅動器,它的網路接收器程式檢出使用者程式的連線請求,並決定使用者程式如何連線。如果使用者是使用SQL*NET版本2,該網路接收器通知使用者程式使用一個可用的排程程式的地址重新連線。

(4) 使用者發出單個SQL語句

(5) 排程程式將使用者程式的請求放入請求佇列,該佇列位於SGA中,可為所有排程程式共享。

(6) 一個可用共享伺服器檢驗公用排程程式請求佇列,並從佇列中檢出下一個SQL語句。然後處理該SQL語句,同前一(5),(6)和(7)。注意:會話的專用SQL區是建立在SGA中。

(7) 一當共享伺服器程式完成SQL處理,該程式將結果放置發入該請求的排程程式的響應佇列。

(8) 排程程式檢查它的響應佇列,並將完成的請求送回請求的使用者程式。

4.資料庫結構和空間管理

一個ORACLE資料庫是資料的集合,被處理成一個單位。一個ORACLE資料庫有一個物理結構和一個邏輯結構。

物理資料庫結構(physical database structure)是由構成資料庫的作業系統檔案所決定。每一個ORACLE資料庫是由三種型別的檔案組成:資料檔案、日誌檔案和控制檔案。資料庫的檔案為資料庫資訊提供真正的物理儲存。

邏輯資料庫結構是使用者所涉及的資料庫結構。一個ORACLE資料庫的邏輯結構由下列因素決定:

一個或多個表空間

資料庫模式物件(即表、檢視、索引、聚集、序列、儲存過程)

邏輯儲存結構如表空間(dataspace)、段(segment)和範圍將支配一個資料庫的物理空間如何使用。模式物件(schema object)用它們之間的聯絡組成了一個資料庫的關係設計。

1) 物理結構

(1) 資料檔案

每一個ORACLE資料庫有一個或多個物理的資料檔案(data file)。一個資料庫的資料檔案包含全部資料庫資料。邏輯資料庫結構(如表、索引)的資料物理地儲存在資料庫的資料檔案中。資料檔案有下列特徵:

一個資料檔案僅與一個資料庫聯絡。

一旦建立,資料檔案不能改變大小

一個表空間(資料庫儲存的邏輯單位)由一個或多個資料檔案組成。

資料檔案中的資料在需要時可以讀取並儲存在ORACLE記憶體儲區中。例如:使用者要存取資料庫一表的某些資料,如果請求資訊不在資料庫的記憶體儲存區內,則從相應的資料檔案中讀取並儲存在記憶體。當修改和插入新資料時,不必立刻寫入資料檔案。為了減少磁碟輸出的總數,提高效能,資料儲存在記憶體,然後由ORACLE後臺程式DBWR決定如何將其寫入到相應的資料檔案。

(2) 日誌檔案

每一個資料庫有兩個或多個日誌檔案(redo log file)的組,每一個日誌檔案組用於收集資料庫日誌。日誌的主要功能是記錄對資料所作的修改,所以對資料庫作的全部修改是記錄在日誌中。在出現故障時,如果不能將修改資料永久地寫入資料檔案,則可利用日誌得到該修改,所以從不會丟失已有操作成果。

日誌檔案主要是保護資料庫以防止故障。為了防止日誌檔案本身的故障,ORACLE允許鏡象日誌(mirrored redo log),以致可在不同磁碟上維護兩個或多個日誌副本。

日誌檔案中的資訊僅在系統故障或介質故障恢復資料庫時使用,這些故障阻止將資料庫資料寫入到資料庫的資料檔案。然而任何丟失的資料在下一次資料庫開啟時,ORACLE自動地應用日誌檔案中的資訊來恢復資料庫資料檔案。

(3) 控制檔案

每一ORACLE資料庫有一個控制檔案(control file),它記錄資料庫的物理結構,包含下列資訊型別:

資料庫名;

資料庫資料檔案和日誌檔案的名字和位置;

 資料庫建立日期。

為了安全起見,允許控制檔案被鏡象。

每一次ORACLE資料庫的例項啟動時,它的控制檔案用於標識資料庫和日誌檔案,當著手資料庫操作時它們必須被開啟。當資料庫的物理組成更改時,ORACLE自動更改該資料庫的控制檔案。資料恢復時,也要使用控制檔案。

2) 邏輯結構

資料庫邏輯結構包含表空間、段、範圍(extent)、資料塊和模式物件。

(1) 表空間

一個資料庫劃分為一個或多個邏輯單位,該邏輯單位稱為表空間(TABLESPACE)。一個表空間可將相關的邏輯結構組合在一起。DBA可利用表空間作下列工作:

控制資料庫資料的磁碟分配。

將確定的空間份額分配給資料庫使用者。

通過使單個表空間線上或離線,控制資料的可用性。

執行部分資料庫後備或恢復操作。

為提高效能,跨越裝置分配資料儲存。

資料庫、表空間和資料檔案之間的關係如下圖所示:

Database



DTATAFILE1

(2MB) DATAFILE2

(2MB) DATAFILE3

(2MB)

Driver1 Driver2

每個資料庫可邏輯劃分為一個或多個表空間

每一個表空間是由一個或多個資料檔案組成,該表空間物理地儲存表空間中全部邏輯結構的資料。DBA可以建立新的表空間,可為表空間增加資料檔案或可刪除資料檔案,設定或更改預設的段儲存位置。

每一個ORACLE資料庫包含有一個名為SYSTEM的表空間,在資料庫建立是自動建立。在該表空間中總包含有整個資料庫的資料字典表。最小的資料庫可只需要SYSTEM表空間。該表空間必須總是線上。表和儲存的PL/SQL程式單元(過程、函式、包和觸發器)的全部儲存資料是儲存在SYSTEM表空間中。如果這些PL/SQL物件是為資料庫建的,DBA在SYSTEM表空間中需要規劃這些物件所需要的空間。

表空間利用增加資料檔案擴大表空間,表空間的大小為組成該表空間的資料檔案大小的和。

DBA可以使ORACLE資料庫中任何表空間(除SYSTEM表空間外)線上(ONLINE)或離線(OFFLINE)。表空間通常是線上,以致它所包含的資料對資料庫使用者是可用的。當表空間為離線時,其資料不可使用。在下列情況下,DBA可以使其離線。

使部分資料不可用,而剩餘的部分允許正常存取


執行離線的表空間後備

為了修改或維護一應用,使它和它的一組表臨時不可用。

包含有正在活動的回滾段的表空間不能被離線,僅當回滾段不正在使用時,該表空間才可離線。

在資料字典中記錄表空間的狀態,線上還是離線。如果在資料庫關閉時一表空間為離線,那麼在下次資料庫裝配和重新開啟後,它仍然保持離線。

當出現某些錯誤時,一個表空間可自動地由線上改變為離線。通過使用多個表空間,將不同型別的資料分開,更方便DBA來管理資料庫。

ORACLE資料庫中一表空間是由一個或多個物理資料檔案組成,一個資料檔案只可與一個表空間想聯絡。當為一表空間建立一資料檔案時,ORACLE建立該檔案,分配指定的磁碟空間容量。在資料檔案初時建立後,所分配的磁碟不包含任何資料。表空間可以線上或離線。在ORACLE中還允許單獨資料檔案線上或離線。

(2) 段、範圍和資料塊

ORACLE通過段、範圍和資料塊邏輯資料結構可更細地控制磁碟空間的使用。



段(SEGMENT)包含表空間中一種指定型別的邏輯儲存結構,是由一組範圍組成。在ORACLE資料庫中有幾種型別的段:資料段、牽引段、回滾段和臨時段。

資料段:對於每一個非聚集的表有一資料段,表的所有資料存放在該段。每一聚集有一個資料段,聚集中每一個表的資料儲存在該段中。

索引段:每一個索引有一索引段,儲存索引資料。

回滾段:是由DBA建立,用於臨時儲存要撤消的資訊,這些資訊用於生成讀一致性資料庫資訊、在資料庫恢復時使用、回滾未提交的事務。

臨時段:當一個SQL語句需要臨時工作區時,由ORACLE建立。當語句執行完畢,臨時段的範圍退回給系統。

ORACLE對所有段的空間分配,以範圍為單位。

範圍

一個範圍(EXTENT)是資料庫儲存空間分配的一個邏輯單位,它由連續資料塊所組成。每一個段是由一個或多個範圍組成。當一段中間所有空間已完全使用時,ORACLE為該段分配一個新的範圍。

為了維護的目的,在資料庫的每一段含有段標題塊(segment


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/756652/viewspace-242106/,如需轉載,請註明出處,否則將追究法律責任。

相關文章