ORACLE表空間詳解
表空間概念
ORACLE數據庫被劃分成稱作為表空間的邏輯區域——形成ORACLE數據庫的邏輯結構。
一個ORACLE數據庫能夠有一個或多個表空間,而一個表空間則對應著一個或多個物理的數據庫文件,但一個數據庫文件只能與一個表空間相聯系。表空間是ORACLE數據庫恢復的最小單位,容納著許多數據庫實體,如表、視圖、索引、聚簇、回退段和臨時段等。
每個ORACLE數據庫均有SYSTEM表空間,這是數據庫創建時自動創建的,用於存儲系統的數據字典表、程序單元、過程、函數、包和觸發器等。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表空間詳解