ORACLE的邏輯架構是由一個或多個表空間組成,一個資料庫被分割為一個或多個邏輯單位,該邏輯單位稱為表空間(tablespace)。一個表空間可將相關的邏輯結構組合在一起。
一個表空間由一組分類段組成。
一個段由一組範圍組成。
一個範圍由一批資料庫區塊組成。
一個資料庫區塊對應一個或多個實體區塊。
每一個ORACLE資料庫包含有一個名為SYSTEM的表空間,在資料庫建立時自動建立。在該表空間中包含有整個資料庫的系統資訊數據,最小的資料庫可只需要SYSTEM表空間。表空間利用增加資料檔案可擴大表空間,表空間的大小為組成該表空間的資料檔案的大小的和。 ORACLE資料庫中一表空間是由一個或多個實體資料檔案組成,一個資料檔案只可與一個表空間連結。當為一表空間建立一資料檔案時,ORACLE建立該文件,指派指定的磁碟空間容量。在資料檔案初始建立後,所指派的磁碟不包含有任何資料。
一個模式(schema)為模式物件(schema object)的集合,每個資料庫使用者對應一個模式。模式物件為直接引用資料庫資料的邏輯結構,模式物件包含如表、視圖、索引、同義詞等結構。模式物件是邏輯資料儲存結構,每一種模式物件在磁碟上沒有一個對應檔案儲存其資訊。一個模式物件邏輯地儲存在資料庫的一個表空間中,每一個物件的資料物理地包含在表空間的一個或多個資料檔案中。例如:表、索引等模式對象,在指定表空間的資料檔上為該對象分配多少空間。圖1-5說明模式物件、表空間和資料檔案之間的關係。
模式與表空間之間的關係為:一個表空間可包含不同模式的對象,而一個模式中的對象可包含在不同的表空間中。
1. 資料庫區塊
資料庫區塊(database block)是ORACLE邏輯分配空間的最底層,又稱為邏輯區塊、頁或ORACLE區塊。
資料庫區塊是資料庫使用和分配空間的最小單元,也可以說是使用的最小I/O單元,一個資料區塊與磁碟上指定的物理空間大小一致,一個資料庫區塊對應一個或多個實體區塊,區塊的大小由參數db_block_size決定。
PCTFREE和PCTUSED是開發人員用來控制資料區塊中可用插入和更新資料的空閒空間大小的參數。
PCTFREE:設定資料塊中保持空閒的百分比。
PCTUSED:當資料塊空閒空間達到PCTFREE時,此區塊不允許插入數據,只能修改或刪除區塊中的行,更新時可能使資料區塊空閒空間變大,已用資料空間變小,當已用空間低於PCTUSED時,則可以重新插入資料。
PCTFREE及PCTUSED的選擇:
經常做查詢(select)的表,應使PCTFREE小些,盡量減少儲存空間浪費。
經常做插入(insert)的表,應使PCTUSED大一些。
經常做更新(update)的表,應使PCTFREE大一些,給更新留出更大的空間,減少行移動。
說明:
這兩個參數只能在建立、修改表格和叢集(資料段)時指定。另外,在建立、修改索引(索引段)時只能指定PCTFREE參數。
經常做插入的表設置舉例:
create table COMMINFOR
( SERIALNUMBER VARCHAR2(20) not null,
ENTERHISTIME DATE not null,
ACCEPTBEGINTIME DATE null ,
ACCEPTDURATION NUMBER(10) null ,
ACCEPTERNO VARCHAR2(4) null ,
CALLINGPHONENO VARCHAR2(20) null , null ,)