天天看點

Oracle資料庫體系結構

一、 Oracle資料庫伺服器

      資料庫在各個行業都會有使用到;其實,我們平時無論是在與客戶溝通或者交流中,所說的Oracle資料庫是指Oracle資料庫伺服器(Oracle Server),它由Oracle執行個體(Oracle Instance)和Oracle資料庫(Oracle Database)組成。

      Oracle執行個體:就是用于與資料庫進行互動的一片記憶體區域和背景程序的集合;執行個體啟動時,系統首先在伺服器記憶體中配置設定系統全局區(System Global Area),構成Oracle記憶體結構,然後啟動必須的常駐記憶體的作業系統程序,組成Oracle的程序結構,記憶體結構和程序結構即構成Oracle執行個體。

      Oracle資料庫:實體檔案的集合,包括資料檔案、重做日志檔案、控制檔案、參數檔案、密碼檔案、歸檔日志檔案、備份檔案、告警日志檔案、跟蹤檔案等等;其中資料檔案、控制檔案、重做日志檔案和參數檔案是必須的,其他檔案可選。

      一個執行個體隻能對應/操作一個資料庫,一個資料庫可以由一個或多個執行個體操作(比如RAC)。

Oracle資料庫體系結構

由上圖可知,oracle資料庫由執行個體和資料庫組成。

      下圖為Oracle執行個體結構圖:

     Oracle執行個體就是用于與資料庫進行互動的一片記憶體區域和背景程序的集合,一個單獨的資料庫可以被多個執行個體通路,Oracle早期的并行伺服器OPS演變到現在普遍使用RAC叢集架構。

     執行個體啟動時,系統首先在伺服器記憶體中配置設定系統全局區(System Global Area),構成Oracle記憶體結構,然後啟動必須的常駐記憶體的作業系統程序,組成Oracle的程序結構,記憶體結構和程序結構即構成Oracle執行個體。執行個體在作業系統中用ORACLE_SID來辨別,在Oracle中用參數執行個體名(Instance Name)來辨別, 它們兩個的值是相同的。下面介紹執行個體的組成和作用:

1、系統全局區(System Global Area)

     系統全局區System Global Area(SGA)是系統配置設定的共享的記憶體結構, 當資料庫執行個體啟動時,SGA的記憶體被自動配置設定;當資料庫執行個體關閉時,SGA記憶體被回收;SGA可以包含一個資料庫執行個體的資料或控制資訊。當多個使用者連接配接到同一個資料庫執行個體時,在執行個體的SGA中,資料可以被多個使用者共享;SGA是占用記憶體最大的一個區域,同時也是影響資料庫性能的重要因素。SGA主要包括:

1)、共享緩沖區(Shared Pool)

    共享池(Shared Pool)就是我們常說的SQL共享池,它還包括庫緩沖區(Library  Cache)和資料字典緩沖區(Data Dictionary Cache);共享緩沖區大小由參數SHARED_POOL_SIZE設定。

a)、庫緩沖區:存儲對資料庫進行操作的語句資訊,包括執行計劃及運作資料庫的SQL語句的文法分析樹,所有使用者在第二次運作相同的SQL語句時,可以利用SQL共享池中可用的文法分析資訊來加快執行速度;庫緩沖區通過最近最少使用(LRU,LeastRecentlyUsed)算法來管理可用空間,當SQL共享池填滿時,将從庫緩存區中删掉最近最少使用的執行路徑和文法分析樹,以便為新的條目騰出空間;如果SQL共享池太小,語句将被連續不斷地再裝入到庫緩存區,進而影響操作性能。

b)、資料字典緩沖區(Database Buffer Cache):資料庫對象的資訊存儲在資料字典表中,這些資訊包括使用者帳号資料、權限、資料檔案名、段名、表結構及表說明等,當資料庫需要這些資訊(如使用者對表是否有讀寫權限)時,将讀取資料字典表且将傳回的資料存儲在字典緩存區中。資料字典緩沖區使用最近最少使用(LRU,LeastRecentlyUsed)算法來管理,資料字典緩存區的大小由資料庫内部管理,如果字典緩存區太小,資料庫需要反複查詢資料字典表以擷取通路資料庫所需的資訊,這些查詢由循環調用(recuesivecall)事件完成。

2)、資料庫緩沖區(Database Buffer Cache)

      資料庫緩沖區由DB_CACHE_SIZE參數設定,Oracle使用最近最少使用(LRU,LeastRecentlyUsed)算法來管理資料庫緩沖區可用空間;當存儲區需要空閑空間時,最近最少使用塊将被移出,新資料塊将在存儲區代替它的位置,通過這種方法,将最頻繁使用的資料儲存在存儲區中;如果SGA的大小不足以容納所有最常使用的資料,那麼,不同的對象将争用資料庫緩存區中的空間;當多個應用程式共享同一個SGA時,很有可能發生這種情況。此時,每個應用的最近使用段都将與其他應用的最近使用段争奪SGA中的空間,這樣,資料庫緩沖區的資料請求将出現較低的命中率,導緻系統性能下降。

3)、重做日志緩沖區(Redo Log Buffer Cache)

     Redo log包含所有的資料庫變化曆史,資料庫的所有操作變化,均按照寫入重做日志緩沖區先于資料塊緩沖區、寫入重做日志檔案先于寫入資料檔案;當發生送出動作時,将重做日志緩沖區變化刷到重做日志檔案。在被寫入聯機重做日志檔案之前,事務首先被記錄在稱作重做日志緩沖區(Redo Log Buffer)的SGA中,資料庫可以周期地分批向聯機重做日志檔案中寫重做項的内容,進而優化這個操作。重做日志緩沖區的大小(以位元組為機關)由LOG_BUFFER參數決定。

4)、大池(Large Pool)

     大池屬于一個可選記憶體區,如果資料庫使用線程伺服器選項或頻繁執行備份、恢複操作,隻要建立一個大池,就可以更有效地管理這些操作。大池将緻力于支援大型SQL指令,利用大池,就可以防止這些大型SQL指令争用SQL共享池,進而減少再裝入到庫緩存區中的語句數量。大池的大小(以位元組為機關)由LARGE_POOL_SIZE參數設定,可以使用LARGE_POOL_MIN_ALLOC參數設定大池的最小配置設定,可以使用SHARED_POOL_RESERVED_SIZE參數為SQL大型語句保留一部分SQL共享池。

5)、Java池(Java Pool)

      Java池為Java指令提供文法分析,Java池的大小(以位元組為機關)由JAVA_POOL_SIZE參數設定,預設值為10MB。

6)、多緩沖池

     可以在SGA中建立多個緩沖池,能夠用多個緩沖池把大資料集與其他的應用程式分開,以減少資料庫緩存區内相同資源争用;對于建立的每一個緩沖池,都要設定LRU鎖存器的大小和數量,緩沖區的數量必須至少比LRU鎖存器的數量多50倍。建立緩沖池時,需要設定儲存區(KeepArea)的大小和再循環區(RecycleArea)的大小,與SQL共享池的保留區一樣,儲存區保持條目,而再循環區則被頻繁地再循環使用。使用BUFFER_POOL_KEEP參數規定來儲存區的大小。

2、背景程序(Background Process)

     資料庫執行個體由記憶體結構和背景程序,應用與資料庫的所有操作和互動都由資料庫執行個體中完成,SGA可以了解為互動平台,背景程序則可以了解為SGA與資料庫互動的橋梁。PMON、SMON、DBWRn、LGWRn、CKPT程序為必須的背景程序,ARCHn、LCKn等為可選背景程序。

1)、PMON (Process Monitor,程序監控程序)

    PMON用于在使用者程序出現故障時進行恢複,清除失效的使用者程序,負責清理記憶體區域和釋放該程序所使用的資源,如果會話不正常終止時,PMON負責Rollback未送出的事務,釋放資源;同時監控Oracle所有背景程序(Background Process)。PMON有規律地被呼醒,檢查是否需要,或者其它程序發現需要時可以被調用。PMON程序要重置活動事務表的狀态,釋放鎖,将該故障的程序的ID從活動程序表中移去。PMON還周期地檢查排程程序(DISPATCHER)和伺服器程序的狀态,如果已死,則重新啟動(不包括有意删除的程序)。

2)、SMON(System Monitor Process,系統監控程序)

   SMON程序在執行個體啟動時,如果有需要則執行執行個體恢複,在執行個體恢複過程中,如果由于檔案讀取錯誤或所需檔案處于脫機狀态而導緻某些異常終止的事務未被恢複,SMON 将在表空間或檔案恢複聯機狀态後再次恢複這些事務。SMON還負責清理不再使用的臨時段(temporary segment)以及為資料字典管理的表空間(dictionary managed tablespace)合并相鄰的可用資料擴充(extent)。在具有并行伺服器選項的環境下(RAC),SMON對有故障CPU或執行個體進行執行個體恢複(Instance Recovery)。SMON程序有規律地被呼醒,檢查是否需要,或者其它程序發現需要時可以被調用。

3)、DBWn (database writer,資料庫寫入程序)

      DBWn程序是負責緩沖存儲區管理的一個Oracle背景程序,通過使用最近最少使用(LRU,LeastRecentlyUsed)算法來管理,保持記憶體中的資料塊是最近使用的,使I/O最小,将dirty buffer寫入到datafile中,維護資料緩沖區的清理,以使使用者程序總能找到足夠的空閑緩沖區。DBWn程序用于将資料緩沖的資料寫入資料檔案,是負責資料緩沖區管理的一個Background Process,預設數量1個,最多10個,由參數為db_writer_processes設定。DBWn程序在以下情況觸發:

a)、沒有空閑緩沖區(no free buffers)

b)、達到髒緩沖區閥值(dirty buffer threshold reached)

c)、檢查點(checkpoint)

d)、表空間offline(tablespace offline)

e)、逾時,每次3秒(time out)

f)、drop/truncate表(drop table/truncate table)

4)、LGWR(Log writer,日志寫入程序)

     LGWR程序将日志緩沖區寫入磁盤上的一個日志檔案,它是負責管理日志緩沖區的一個Oracle背景程序。LGWR程序同步地寫入到活動的鏡象線上日志檔案組。如果組中一個檔案被删除或不可用,LGWR可繼續地寫入該組的其它檔案。日志緩沖區是一個循環緩沖區,當LGWR将日志緩沖區的日志項寫入日志檔案後,伺服器程序可将新的日志項寫入到該日志緩沖區。LGWR 通常寫得很快,可確定日志緩沖區總有空間可寫入新的日志項。

     Oracle使用快速送出機制,當使用者發出Commit語句時,一個Commit記錄立即放入日志緩沖區,但相應的資料緩沖區改變是被延遲,直到在更有效時才将它們寫入資料檔案。當一事務送出時,被賦給一個系統修改号(SCN),它同僚務日志項一起記錄在日志中。由于SCN記錄在日志中,以緻在并行伺服器選項配置情況下,恢複操作可以同步。有時候當需要更多的日志緩沖區時,LWGR在一個事務送出前就将日志項寫出,而這些日志項僅當在以後事務送出後才永久化。LGWR程序管理日志緩沖區,将資料庫的更改寫入日志檔案,以便維護資料的一緻性,并為資料丢失後進行恢複提供依據。Oracle通過延遲寫日志來優化disk I/O讀寫,以下4種情況之一Oracle會觸發LGWR程序寫日志:

a)、當使用者程序送出一事務時寫入一個送出記錄。  

b)、每三秒将日志緩沖區輸出。  

c)、當日志緩沖區的1/3已滿時将日志緩沖區輸出。  

d)、當DBWR将修改緩沖區寫入磁盤時則将日志緩沖區輸出。

5)、CKPT (CheckPoint,檢查點程序)

     CKPT程序負責通知DBWRn和LGWRn将髒緩沖區寫入磁盤,以及時消除因DBWRn/LGWRn延遲寫所造成的資料不一緻情況,確定記憶體中的資料塊被規律地寫入檔案,并對資料庫資料庫控制檔案和資料檔案進行更新同步(修改檔案時間頭部),以記錄下目前的資料庫結構和狀态。檢查點(CheckPoint)的作用是及時保證進行延遲寫,防止資料庫出現不一緻情況;及時同步各類資料檔案,防止各類資料檔案出現不一緻情況。LGWR背景程序是将log buffer中的資料寫到日志檔案的程序,是oracle相當重要的一個背景程序,LGWR程序觸發的條件為以下4種情況之一:

a)、每3秒鐘;也就是該程序最多休眠3秒鐘,休眠時觸發rdbms ipc message事件; LGWR将buffer中的資料寫到日志檔案時,觸發log file parallel write事件;

b)、在事務送出時(COMMIT),此時會觸發LGWR程序寫完後才傳回送出成功,在等待LGWR程序寫的過程中将觸發log file sync事件;

c)、DBWn程序寫入資料檔案之前;

d)、Redo log Buffer三分之一滿時,這個數字是有一個隐含參數_log_io_size控制,該值的預設值是log buffer大小的1/3;該值的最大值為3MB,是以Redo log buffer多于1MB的變化記錄時也會觸發LGWR程序寫;

     由于Oracle中LGWR和DBWR工作的不一緻,Oracle引入了檢查點的概念,用于同步資料庫,保證資料庫的一緻性。在Oracle裡面,檢查點分為兩種:完全檢查點和增量檢查點。下面我們分别介紹這兩種檢查點的作用:

a)、完全檢查點

     在Oracle8i之前,資料庫的發生的檢查點都是完全檢查點,完全檢查點會将資料緩沖區裡面所有的髒資料塊寫入相應的資料檔案中,并且同步資料檔案頭和控制檔案,保證資料庫的一緻。完全檢查點在8i之後隻有在下列兩種情況下才會發生:

  1)、DBA手工執行alter system checkpoint的指令;

  2)、資料庫正常shutdown(immediate,transcational,normal)。

IO往往會影響到資料庫的性能。是以Oracle從8i開始引入了增量檢查點的概念。

b)、 增量檢查點

       Oracle從8i開始引入了檢查點隊列這麼一種概念,用于記錄資料庫裡面目前所有的髒資料塊的資訊,DBWR根據這個隊列而将髒資料塊寫入到資料檔案中。檢查點隊列按時間先後記錄着資料庫裡面髒資料塊的資訊,裡面的條目包含RBA(Redo Block Address,重做日志裡面用于辨別檢查點期間資料塊在重做日志裡面第一次發生更改的編号)和資料塊的資料檔案号和塊号。在檢查點期間不論資料塊更改幾次,它在檢查點隊列裡面的位置始終保持不變,檢查點隊列也隻會記錄它最早的RBA,進而保證最早更改的資料塊能夠盡快寫入。當DBWR将檢查點隊列裡面的髒資料塊寫入到資料檔案後,檢查點的位置也要相應地往後移,CKPT每三秒會在控制檔案中記錄檢查點的位置,以表示Instance Recovery時開始恢複的日志條目,這個概念稱為檢查點的“心跳”(heartbeat)。檢查點位置發生變更後,Oracle裡面通過4個參數用于控制檢查點位置和最後的重做日志條目之間的距離。在這裡面需要指出的是,多數人會将這4個參數看作控制增量檢查點發生的時間。事實上這是錯誤的,這4個參數是用于控制檢查點隊列裡面的條目數量,而不是控制檢查點的發生。

6)、ARCH(archiver,歸檔程序)

     ARCH程序用于管理歸檔日志檔案,當資料庫運作在archivelog模式下時,将循環使用的redo log檔案組在被複寫覆寫前進行歸檔備份到其他指定儲存設備,為資料丢失後進行資料恢複。當Redo Log日志切換時觸發ARCH程序進行日志歸檔。

7)、RECO(Recovery,恢複程序)

      RECO程序是在具有分布式選項時所使用的一個程序,自動地解決在分布式事務中的故障,維持在分布式環境中的資料的一緻性。主要工作,就是recover那些兩階段送出的但由于網絡或其它原因造成狀态為prepared 的挂起事務。一個結點RECO背景程序自動地連接配接到包含有懸而未決的分布式事務的其它資料庫中,RECO自動地解決所有的懸而不決的事務。任何相應于已處理的懸而不決的事務的行将從每一個資料庫的懸挂事務表中删去。當某些節點回報yes給事務協調器可以送出時,但事務協調器還未正式發出可以送出的最後訓示時,由于網絡的原因,這些節點失去了和事務協調節點的聯系,此時這些事務就成為了一個in-doubt distributed transaction。此時,RECO就負責定期的聯系事務協調器,當聯系到時,就會送出或者復原這些事務了。RECO背景程序僅當在允許分布式事務的系統,而且DISTRIBUTED_TRANSACTIONS參數是大于0時會用到該背景程序。

8)、LCKn (lock,鎖程序)

     LCKn程序是在具有并行伺服器選件環境下使用,用于執行個體間的封鎖,可多至10個程序(LCK0,LCK1……,LCK9)。

9)、Dnnn (dispatcher,排程程序)

      Dnnn程序允許使用者程序共享有限的伺服器程序(SERVER PROCESS)。沒有排程程序時,每個使用者程序需要一個專用服務程序(DEDICATEDSERVER PROCESS)。對于多線索伺服器(MULTI-THREADED SERVER)可支援多個使用者程序。如果在系統中具有大量使用者,多線索伺服器可支援大量使用者,尤其在客戶_伺服器環境中。在一個資料庫執行個體中可建立多個排程程序,對每種網絡協定至少建立一個排程程序,資料庫管理者根據作業系統中每個程序可連接配接數目的限制決定啟動的排程程式的最優數,在執行個體運作時可增加或删除排程程序。如果不能将客戶應用連接配接到一排程程序時,網絡接收器程序将啟動一個專用伺服器程序。該網絡接收器程序不是Oracle執行個體的組成部分,它是處理與Oracle有關的網絡程序的組成部分。在執行個體啟動時,該網絡接收器被打開,為使用者連接配接到Oracle建立一通信路徑,然後每一個排程程序把連接配接請求的排程程序的位址給予它的接收器。當一個使用者程序作連接配接請求時,網絡接收器程序分析請求并決定該使用者是否可使用一排程程序。如果是,該網絡接收器程序傳回該排程程序的位址,之後使用者程序直接連接配接到該排程程序。有些使用者程序不能排程程序通信(如果使用SQL*NET以前的版本的使用者),網絡接收器程序不能将此使用者連接配接到一排程程序。在這種情況下,網絡接收器建立一個專用伺服器程序,建立一種合适的連接配接。

資料庫存儲結構

Oracle資料庫體系結構

Oracle資料庫有實體結構和邏輯結構。資料庫的實體結構是資料庫中的作業系統檔案的集合。資料庫的實體結構由資料檔案、控制檔案和重做日志檔案組成。

Oracle實體結構包含了資料檔案、重做日志檔案、控制檔案、參數檔案、密碼檔案、歸檔日志檔案、備份檔案、告警日志檔案、跟蹤檔案等等;其中資料檔案、控制檔案、重做日志檔案和參數檔案是必須的,其他檔案可選。 

Datafiles)

Oracle資料庫有一個或多個實體的資料檔案(data file),資料檔案包含全部資料庫資料,邏輯資料庫結構(如表、索引、視圖、函數)的資料實體地存儲在資料庫的資料檔案中。資料檔案中的資料在需要時可以讀取并存儲在Oracle記憶體儲區中。如使用者要存取資料庫一表的某些資料,如果請求資訊不在資料庫的記憶體存儲區内,則從相應的資料檔案中讀取并存儲在記憶體,當修改或插入新資料時,為了減少磁盤輸出的總數,提高性能,不必立刻寫入資料檔案,資料存儲在記憶體,然後由Oracle背景程序DBWRn決定如何将其寫入到相應的資料檔案。資料檔案有下列特征:  

a)、一個資料檔案僅與一個資料庫聯系;  

 b)、一個表空間(資料庫存儲的邏輯機關)由一個或多個資料檔案組成。  

2、日志檔案(Redo Log Files)

    每一個資料庫執行個體有兩組或以上日志檔案組,為了防止日志檔案本身的故障,每個日志檔案組可以有一個或以上日志成員。日志的主要功能是記錄對資料所作的修改,用于在出現故障時,如果不能将修改資料永久地寫入資料檔案,則可利用日志得到該修改,進而保證資料不丢失。日志檔案中的資訊僅在系統故障或媒體故障恢複資料庫時使用。任何丢失的資料在下一次資料庫打開時,Oracle自動地應用日志檔案中的資訊來恢複資料庫資料檔案。Oralce日志檔案有聯機日志檔案和歸檔日志檔案兩種,聯機日志檔案用來循環記錄資料庫改變的作業系統檔案;歸檔日志檔案是為避免聯機日志檔案重寫時丢失重複資料而對聯機日志檔案所做的備份;Oracle資料庫可以選擇歸檔(ARCHIVELOG)或非歸檔(NOARCHIVELOG)模式。

3、控制檔案(Control files)

      每一Oracle資料庫有一個控制檔案(Control File)或同一個控制檔案的多個拷貝,它記錄資料庫的實體結構資訊,包括資料庫名、資料庫資料檔案和日志檔案的名字和位置、資料庫建立日期等。  由于控制檔案記錄資料庫的實體結構資訊,對資料庫運作至關重要,為了安全起見,Oracle建議儲存兩份以上的控制檔案鏡像于不同的儲存設備。 當Oracle資料庫的執行個體啟動時,它的控制檔案用于辨別資料庫和日志檔案,當着手資料庫操作時它們必須被打開,當資料庫的實體組成更改時,Oracle自動更改該資料庫的控制檔案;當然,在資料恢複時,自然會使用控制檔案以确定資料庫實體檔案的名字和位置。

4、參數檔案(Parameter Files)

     除了構成Oracle資料庫實體結構的三類主要檔案外,參數檔案也是Oracle資料庫較為重要的一種檔案結構。參數檔案記錄了Oracle資料庫的基本參數資訊,主要包括資料庫名、控制檔案所在路徑、程序等。在Oracle9i之前,都隻有pfile一種文本格式的參數檔案,在9i之後,新增了伺服器二進制參數檔案spfile;通過修改pfile以修改資料庫參數,必須要求重新開機資料庫後才能生效,通過修改spfile以修改資料庫參數時,根據參數類型分為靜态參數需要重新開機和動态參數無需重新開機立即生效,可以通過查詢v$parameter視圖确定參數類型。由于多種參數檔案類型的存在,而Oracle的正常運作隻使用一種參數檔案,Oracle啟動過程加載檔案順序為 spfilesid.ora -> spfile.ora -> initsid.ora。

5.其他檔案(Other Files)

    Oracle資料的運作除了以上重要的必須檔案以外,還有其他雖然非必須但一樣重要的檔案結構,比如密碼檔案、歸檔日志檔案、alter告警日志檔案、Trace跟蹤檔案等等。

     Oracle資料庫的邏輯結構是一種層次結構,主要由表空間、段、區和資料塊等概念組成。邏輯結構是面向使用者的,使用者使用Oracle開發應用程式使用的就是邏輯結構。資料庫存儲層次結構及其構成關系,結構對象也從資料塊到表空間形成了不同層次的粒度關系。

Oracle資料庫的邏輯結構。

1、表空間(Tablespace)

      表空間是資料庫的邏輯劃分,任何資料庫邏輯對象在存儲時都必須存儲在某個表空間中;從上圖中我們可以知道每個表空間由多個段組成。表空間一般由一個或多個資料檔案構成的,每個資料檔案隻能屬于某一個表空間,也就是說表空間和資料檔案時1對N的關系;每個資料庫至少有一個表空間(system tablespace),表空間大小等于從屬于它的所有資料檔案大小的總和;在Oracle 10g中初始建立的隻有5個表空間system、temp、undotbs1、sysaux、users。

a、系統表空間(System Tablespace)

       System表空間是每個Oracle資料庫都必須具備的,資料庫建立時自動建立,用于存儲資料庫系統對象、資料字典、存儲過程、觸發器和系統復原段及資料庫管理所需的資訊;系統表空間的名稱是不可更改,系統表空間必須在任何時候都可以用,也是資料庫運作的必要條件。是以,系統表空間是不能脫機的。為避免系統表空間産生存儲碎片以及争用系統資源的問題,建議建立獨立的使用者表空間用來單獨存儲使用者對象及資料。

b、臨時表空間(Temp Tablespace)

     Temp表空間相對于其他表空間而言,臨時表空間主要用于存儲Oracle資料庫運作期間所産生的臨時資料,比如SQL排序等。資料庫可以建立多個臨時表空間。當資料庫關閉後,臨時表空間中所有資料将全部被清除。

c、復原表空間(undo tablespace)

     復原表空間是Oracle特有的概念,用于儲存Oracle資料庫變化前的記錄,在對資料庫中的記錄進行DML操作時,Oracle資料庫會将變化前的記錄副本儲存到復原表空間中,在rollback,執行個體恢複(前滾),一緻性讀CR塊的構造時會使用到undo資訊,同時保證事務讀一緻性。在Oracle8i中是rollback tablespace,從Oracle9i開始改為undo tablespace。其中temp是臨時表空間,undotbs1是undo復原表空間。

d、SYSAUX表空間

     SYSAUX表空間是随着資料庫的建立而建立的,它充當SYSTEM的輔助表空間,主要存儲除資料字典以外的其他對象,如果啟用EM或Gird Control時,該表空間用于存放EM采集的監控資訊。

e、USERS表空間

    使用者表空間,在建立資料庫是自動建立的使用者表空間,一般用于維護賬戶使用的表空間,應用程式表空間一般另外根據應用需求建立。

2、段(Segment)

     段是由多個資料區(Extent)構成的,它是為特定的資料庫對象(如資料段、索引段、復原段、臨時段)配置設定的一系列資料區;段内包含的資料區可以不連續,而且可以跨越多個資料檔案,使用段的目的是用來儲存特定對象。Oracle資料庫分為資料段、索引段、復原段和臨時段4種類型。  

資料段:資料段也稱為表段,它包含資料與表和簇相關,當建立一個表時,系統自動建立一個以該表的名字命名的資料段。  

索引段:包含索引相關資訊,建立索引時,系統自動建立一個以該索引的名字命名的索引段。  

復原段:包含了復原資訊,DML操作時,Oracle資料庫會将變化前的記錄副本儲存到復原段中,在rollback,執行個體恢複(前滾),一緻性讀CR塊的構造時會使用到復原段資訊,同時用于保證事務讀一緻性。建立資料庫時,Oracle會建立預設的復原段,其管理方式既可以是自動的,也可以是手工的。  

臨時段:它是Oracle在運作過程中自行建立的段,當一個SQL語句需要臨時工作區(比如排序)時,由Oracle建立臨時段,一旦語句執行完畢,臨時段會自動釋放。

3、資料區(Extent)