天天看點

Oracle——01表空間和區

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指令建立表空間。使用該指令的使用者必須具有建立表空間的權限。

文法格式:

其中,tablespace_name是将要建立的表空間的名稱,該名稱在資料庫中是唯一的,并且命名必須符合命名規則。

path/fileName: 資料檔案的存放路徑和名稱。當使用關鍵字reuse時表示若該檔案存在,則清除該檔案再重建立立該檔案;如該檔案不存在,則建立新檔案。

off/on: 禁止或允許自動擴充資料檔案。若選則off, 則禁止自動擴充;若選擇on,則允許自動擴充資料檔案

next:表示當需要更多的磁盤空間時,一次給資料檔案配置設定的磁盤空間,以KB或MB為機關。

maxsize umlimited | integer[K | M]:指定允許配置設定給資料檔案的最大磁盤空間,其中unlimited表示沒有限制。

minmum extent:指定最小的長度,預設為作業系統和資料庫塊。

online:在建立表空間後使該表空間立即可以被授權使用者通路,這是預設設定。

offline:則表示不可用

logging/nologging:表示将來的表、索引等是否需要進行日志處理,預設為需要

extent management:指定如何管理表空間的盤區。

dictionary:使用字典表來管理表空間,這是預設設定。

local:指定本地管理表空間

autoallocate:指定表空間由系統管理,使用者不能指定盤區尺寸。

uniform:使用size位元組的統一盤區來管理表空間。預設的size是1MB。

注意:如果指定了local,就不能指定default storage storage_clause 和temporary。

default storage storage_clause:為在該表空間建立的全部對象指定預設的存儲參數。storage_clause的文法格式如下:

如:

建立臨時表空間時隻需要在tablespace前加上temporary,并且将datafile改為tempfile,如:

 (2)利用alter tablespace指令管理表空間。

2、分區:在非常大的資料庫中,通常可以通過把一個大表的資料分成多個小表來簡化資料庫的管理,這些小表叫做分區,除了對表分區外,還可以對索引進行分區。分區不僅簡化了資料庫的管理,還改善了應用性能。在Oracle中,還可以細分分區,建立子分區。

并不是所有的表列都可以進行分區,隻有日期型(date)或二進制大對象(blob)等資料類型的表列可以分區。

Oracle有以下幾種分區方法:

(1)範圍分區:根據列值的範圍将行映射到分區。

(2)散列分區:散列分區提供了一種方法,可在指定數量的分區間平均分布資料。這種方法将根據分區關鍵字的散列值将行映射到分區。

(3)清單分區:清單分區可以顯式地控制如何把行映射到分區。

(4)範圍-散列分區:首先使用範圍方法将資料進行分區,然後在每個分區内,使用散列方法将其分成子分區。

(5)範圍-清單分區:首先使用範圍方法将資料進行分區,然後在每個分區内,使用清單方法将其分成子分區