轉oracle 學習 表空間

2021-09-08 10:12:25 字數 2623 閱讀 8337

oracle 資料庫的表空間和 oracle 資料庫資料檔案

關於 oracle 資料庫的表空間。

很多 oracle 初學者弄不明白表空間的概念和意義,他們只知道給資料庫建表的時候需要到表空間這個東東。他們也不大明白執行 create tablespace 命令時用到的資料庫資料檔案的作用。作者總結了一些資料庫表空間和資料庫資料檔案的概念性、意義性的資料,希望可以方便大家。

oracle 的表空間是 oracle 資料庫的邏輯世界和作業系統的物理世界之間相互互動的地方。oracle 資料庫在表空間中儲存物件(如表、索引等)。oracle 資料庫中的表空間提供一種機制來儲存資料庫引擎所管理的資料。當建立物件(如表物件和索引物件)時,需要指定在哪個表空間中建立物件(否則將給物件分配預設的表空間)。

典型的 oracle 資料庫包含各種型別的表空間,下面列出了最常見的表空間:

* system 儲存系統物件

* sysaux 儲存 oracle 資料庫輔助模式物件,如 rman 恢復目錄

* users  為所有使用者分配典型的預設表空間

* rbs  用於手工回滾段

* undo  用於自動撤銷段

* data  用於儲存資料

* index  用於儲存索引

* tools  用於為資料庫管理員所使用的相關工具儲存模式物件

本來就可以對錶空間進行讀寫操作,或者也可以使表空間處於唯讀模式。當表空間中的資料都是靜態資料時,唯讀模式的表空間在資料倉儲環境中就顯得非常有用。在這種情況下,可以先使表空間處於唯讀模式,然後再對該錶空間進行備份。對錶空間的本分完成以後,就不需要對該錶空間進行再次備份了。

在 oracle8i 和 oracle9i 資料庫中,表空間通過可傳輸表空間功能可以在不同的資料庫之間進行傳輸。不同的資料庫版本對傳輸有不同的約束,版本越新,對傳輸的約束越少。在很多時候,使用可傳輸的表空間可以帶來很大的方便。例如:當在 olp(online transaction processing,聯機事務處理)表空間和資料倉儲之間傳輸資料時,使用可傳輸的表空間可以帶來很多的方便。

oracle 10g 資料庫去掉了以前版本中可傳輸表空間的基本約束:沒有這些基本約束後,可以在大部分作業系統之間移動表空間,這樣就進一步增強了資料庫的可用性。在某些情況下,可以直接將表空間的集合移動到其他的硬體平台:然後在另外的一些情況下,表空間可能需要使用 rman 來進行轉換。可以參見特定作業系統的 oracle 資料庫幫助文件來確定特定平台的需求。

關於 oracle 資料庫資料檔案。

分配給表空間的空間來自於資料庫的資料檔案,這些資料檔案或者是在一開始執行 create tablespace 命令時分配給表空間的,或者是在隨後通過 alter tablespace 命令新增到表空間中的。當建立表空間時,至少需要定義乙個資料檔案。可用儲存空間的總大小就是與表空間相關聯的所有資料檔案大小的綜合。分配給表空間的資料檔案的最大數目受使用的作業系統和 oracle 資料庫限制。

當給資料檔案分配了磁碟空間之後,資料庫資料檔案所佔的空間邏輯上可以再分成多個資料庫快。當建立物件的時候,將資料庫中的空閒空間以乙個或多個擴充套件區的形式分配給所建立的物件。在乙個單獨的資料檔案中,每乙個擴充套件區都包含乙個連續資料塊的集合,因此擴充套件區自身不能超過資料庫資料檔案的範圍。當建立物件時,初始擴充套件區的大小由引數 initial 定義,而後繼擴充套件區的分配則通過 next 引數來定義。

底層表空間中資料檔案所使用的空間在初始需要預先分配,所以當定義好這些資料檔案後,就可以使用裝置上的物理空間了。像新增額外的資料檔案或者重新設定已存在資料檔案大小的操作一樣,也可以很容易地向表空間中新增空間以獲得更大的表空間。當然資料庫中的可用空間可能會很快地用完,有時候速度可以快到資料庫管理員來不及對這種情況進行處理。在大多數情況下,如果表空間已經用盡,對資料庫的操作將會失敗,並且將會給使用者返回乙個錯誤的資訊。

通過在於表空間相關聯的資料檔案中使用 autoextend 選項可以避免出現空間耗盡的問題。 autoextend 選項可以使資料庫動態地對各資料檔案進行擴充套件,這在不希望出現故障和錯誤資訊的情況下是非常重要的。如:

sql> create tablespace wfcrmdb datafile 'e:/tools/oracle/oradata/wfcrm/wfcrmdb.dat' size 100m autoextend on next 50m maxsize unlimited;

在上面的 sql 語句中,建立了乙個名為 wfcrmdb 的表空間,初始大小 100m,自動擴充套件大小 50m,沒有最大上限,資料檔案 wfcrmdb.dat 將會在 e:/tools/oracle/oradata/wfcrm 資料夾下被建立。

如果不想使用 autoextend,還有另一種解決空間用盡的方法,即使用可恢復的空間管理的方法。這個方法是使已經用盡空間的會話暫停執行以等待一段預先定義的時間長度,在此期間允許資料庫管理員動態地向表空間中新增空間。

可以通過重新設定資料檔案的大小來減小資料檔案,然而不能將資料檔案大小的邊界減小到超過最後乙個物件塊所分配的位置。因此,如果資料檔案大小是 1gb,最後乙個塊在 500mb 的位置上填充資料檔案(通常資料檔案的填充是從第乙個塊開始依次填充到最後乙個塊),則只能將資料檔案的大小減小到 500mb,而不能繼續地減小。

總結:用一句很形象的話講,oracle 資料庫其實就是乙個儲存資料的硬碟,而表空間就是這個硬碟下存放物件的乙個個資料夾,而資料檔案則儲存著你放入資料夾中的資料。

Oracle學習 之 表空間

question 表空間是什麼,為什麼引入,有什麼用?表空間是oracle 11g對資料庫檔案的稱呼,可把它看作表駐留的空間。為了合理管理業務資料 索引資料 臨時資訊及回退資訊,需要建立不同型別的表空間。簡化對資料檔案的管理 1 概念 表空間是資料庫的邏輯儲存空間,可以理解為在資料庫中開闢的乙個空間...

轉)全面講解Oracle查詢使用者表空間

在向大家詳細介紹oracle查詢使用者表空間之前,首先讓大家了解下oracle是什麼,然後全面介紹oracle查詢使用者表空間。oracle公司是全球最大的資訊管理軟體及服務 商,成立於1977年,總部位於美國加州 redwood shore。2000財年 99年6月到2000年5月 營業額達101...

Oracle表空間 表

表 table 表空間是對儲存系統檔案 使用者資訊等資料的乙個空間。oracle表空間屬於oracle中的儲存結構,是由資料檔案組成,乙個資料庫例項可以有n個表空間,每個資料庫至少有乙個表空間 system表空間 乙個表空間下可以有n張表。可以通過表空間來實現對oracle的調優 oracle資料庫...