本文講解了Oracle中表空間及分區的種類和創建方法。
1、表空間:表空間是數據庫的邏輯劃分,一個表空間只屬于一個數據庫。每個表空間由一個或多個數據文件組成。
表空間中其他邏輯結構的數據存儲在這些數據文件中。在Oracle安裝完成后,會自動建立多個表空間,
主要有:
(1)System表空間:該表空間用于存放Oracle系統內部表和數據字典的數據,如表名、列名、用戶名等。
(2)undo表空間:該表空間是存儲撤銷信息的表空間。當用戶對數據庫表進行修改(insert,update,delete)時,Oracle會自動使用undo表空間來臨時存放修改前的數據。當所進行的修改完成并提交后,系統根據需要保留修改前數據的時間長短來釋放undo表空間的部分空間。
(3)users表空間:該空間是給用戶使用的表空間。
(4)temporary表空間:該表空間是供用戶臨時使用的,如進行排序、匯總等操作時。
可以使用OEM(Oracle Enterprise Manager)管理表空間,也可以使用命令管理表空間。利用OEM管理表空間是非常簡單的,只需要根據系統提示進行操作就可以了。利用create tablespace 命令會創建一個讀/寫表空間,以后可以利用alter tablespace 語句來使表空間脫機或聯機、給它添加數據文件或使它成為只讀表空間。也可以利用drop tablespace 語句從數據庫中撤銷表空間。
(1)利用create tablespace命令創建表空間。使用該命令的用戶必須具有創建表空間的權限。
語法格式:
create tablespace tablespace_name datafile 'path/fileName' [size integer [K | M]] [reuse]
[autoextend [off | on [next integer [K | M]]] [maxsize [unlimited | integer [K | M]]]]
[minmum extent integer [K | M]]
[default storage storage_clause]
[online | offline]
[logging | nologging]
[permanent | temporary]
[extent management [dictionary | local [autoallocate | uniform [size integer [K | M]]]]]
其中,tablespace_name是將要創建的表空間的名稱,該名稱在數據庫中是唯一的,并且命名必須符合命名規則。
path/fileName: 數據文件的存放路徑和名稱。當使用關鍵字reuse時表示若該文件存在,則清除該文件再重新建立該文件;如該文件不存在,則建立新文件。
off/on: 禁止或允許自動擴展數據文件。若選則off, 則禁止自動擴展;若選擇on,則允許自動擴展數據文件
next:表示當需要更多的磁盤空間時,一次給數據文件分配的磁盤空間,以KB或MB為單位。
maxsize umlimited | integer[K | M]:指定允許分配給數據文件的最大磁盤空間,其中unlimited表示沒有限制。
minmum extent:指定最小的長度,默認為操作系統和數據庫塊。
online:在創建表空間后使該表空間立即可以被授權用戶訪問,這是默認設置。
offline:則表示不可用
logging/nologging:表示將來的表、索引等是否需要進行日志處理,默認為需要
permanent:指定表空間將保存永久對象,這是默認設置
temporary:指定表空間將用于保存臨時對象
extent management:指定如何管理表空間的盤區。
dictionary:使用字典表來管理表空間,這是默認設置。
local:指定本地管理表空間
autoallocate:指定表空間由系統管理,用戶不能指定盤區尺寸。
uniform:使用size字節的統一盤區來管理表空間。默認的size是1MB。
注意:如果指定了local,就不能指定default storage storage_clause 和temporary。
default storage storage_clause:為在該表空間創建的全部對象指定默認的存儲參數。
torage_clause的語法格式如下:
storage(
initial integer[K|M]
next integer[K|M]
minextents integer | unlimited
maxextents integer
pctincrease integer
freelists integer
freelist groups integer
optimal [integer[K|M] | null]
)
(2)利用alter tablespace命令管理表空間。
語法格式:
alter tablespace tablespace_name
[add dataFile | tempFile 'path/fileName' [size integer [K | M]] 
[reuse] 
[autoextend [off | on [next integer [K | M]] maxsize [unlimited | integer [K | M]]]]
[rename dataFile 'path/fileName',...n to 'path/fileName',...n]
[default storage storage_clause]
[online | offline [normal | temporary | immediate]]
[logging | nologging]
[read only | write]
[permanent]
[temporary] 
2、分區:在非常大的數據庫中,通常可以通過把一個大表的數據分成多個小表來簡化數據庫的管理,這些小表叫做分區,除了對表分區外,還可以對索引進行分區。分區不僅簡化了數據庫的管理,還改善了應用性能。在Oracle中,還可以細分分區,創建子分區。
并不是所有的表列都可以進行分區,只有日期型(date)或二進制大對象(blob)等數據類型的表列可以分區。
Oracle有以下幾種分區方法:
(1)范圍分區:根據列值的范圍將行映射到分區。
(2)散列分區:散列分區提供了一種方法,可在指定數量的分區間平均分布數據。這種方法將根據分區關鍵字的散列值將行映射到分區。
(3)列表分區:列表分區可以顯式地控制如何把行映射到分區。
(4)范圍-散列分區:首先使用范圍方法將數據進行分區,然后在每個分區內,使用散列方法將其分成子分區。
(5)范圍-列表分區:首先使用范圍方法將數據進行分區,然后在每個分區內,使用列表方法將其分成子分區
新聞熱點
疑難解答