1. 程式人生 > >ORACLE表空間詳解

ORACLE表空間詳解

字典 span 說明 div -s maxsize rom 自動 oracle表

表空間概念

ORACLE數據庫被劃分成稱作為表空間的邏輯區域——形成ORACLE數據庫的邏輯結構。

一個ORACLE數據庫能夠有一個或多個表空間,而一個表空間則對應著一個或多個物理的數據庫文件,但一個數據庫文件只能與一個表空間相聯系。表空間是ORACLE數據庫恢復的最小單位,容納著許多數據庫實體,如表、視圖、索引、聚簇、回退段和臨時段等。

每個ORACLE數據庫均有SYSTEM表空間,這是數據庫創建時自動創建的,用於存儲系統的數據字典表、程序單元、過程、函數、包和觸發器等。SYSTEM表空間必須總要保持聯機,因為其包含著數據庫運行所要求的基本信息(關於整個數據庫的數據字典、聯機求助機制、所有回退段、臨時段和自舉段、所有的用戶數據庫實體、其它ORACLE軟件產品要求的表)。

一個小型應用的ORACLE數據庫通常僅包括SYSTEM表空間,然而一個稍大型應用的ORACLE數據庫采用多個表空間會對數據庫的使用帶來更大的方便。

表空間類型

永久性表空間:一般保存表、視圖、過程和索引等的數據。

臨時性表空間:只用於保存系統中短期活動的數據。

撤銷表空間:用來幫助回退未提交的事務數據。

表空間作用

表空間的作用能幫助DBA用戶完成以下工作:

  1. 決定數據庫實體的空間分配

  2. 設置數據庫用戶的空間份額

  3. 控制數據庫部分數據的可用性

  4. 分布數據於不同的設備之間以改善性能

  5. 備份和恢復數據。

用戶創建其數據庫實體時,必須給予表空間中具有相應的權力,所以對一個用戶來說,其要操縱一個ORACLE數據庫中的數據,應該:

  1. 被授予關於一個或多個表空間中的RESOURCE特權

  2. 被指定缺省表空間

  3. 被分配指定表空間的存儲空間使用份額

  4. 被指定缺省臨時段表空間,建立不同的表空間,設置最大的存儲容量。

操作示例

1. 創建表空間

語法:

CREATE TABLESPACE 表空間名
DATAFILE 數據文件路徑 SIZE 大小
[AUTOEXTEND ON] [NEXT 大小]
[MAXSIZE 大小];

說明:

  [ ]裏面內容可選項,數據文件路徑中若包含目錄需先創建

  SIZE 為初始表空間大小,單位為K或者M

  AUTOEXTEND 是否自動擴展,值為ON或OFF

  NEXT 為文件滿了後擴展大小

  MAXSIZE 為文件最大大小,值為數值或UNLIMITED(表示不限大小)

示例:

CREATE TABLESPACE ts_test
DATAFILE D:\oracle_tablespace\ts_test.dbf SIZE 20M
AUTOEXTEND ON;

2. 查詢表空間

示例:

--管理員角色查看表空間
SELECT file_name, tablespace_name, bytes, autoextensible
FROM dba_data_files
WHERE tablespace_name = ts_test;

3. 修改表空間

語法:

ALTER TABLESPACE 表空間名
ADD DATAFILE 文件路徑 SIZE 大小
[AUTOEXTEND ON] [NEXT大小]
[MAXSIZE 大小];

示例:

ALTER TABLESPACE ts_test
ADD DATAFILE D:\oracle_tablespace\ts_test2.dbf SIZE 5M
AUTOEXTEND ON;

4. 刪除表空間

語法:

--僅刪除表空間
DROP TABLESPACE 表空間名;
--刪除表空間及數據文件
DROP TABLESPACE 表空間名 INCLUDING CONTENTS AND DATAFILES;

示例:

--僅刪除表空間
DROP TABLESPACE ts_test;
--刪除表空間及數據文件
DROP TABLESPACE ts_test INCLUDING CONTENTS AND DATAFILES;

ORACLE表空間詳解