Oracle真正存放數據的是數據文件data file ,Oracle表空間 table space 實際上是一個邏輯上的概念,他在物理上並不存在,把一組data file 打包在一起就成了一個表空間了
表空間作用:
- 控制數據庫所佔用的磁盤空間
- 控制用戶所佔用的表空間配額
- 通過表空間控制數據流向,從而提高I/O性能
- 表空間提供了一個備份和恢復單位
表空間的分類
創建表空間時要指定表空間類型
1.按是否存放系統數據分
- 系統表空間
SYSTEM 放數據字典等系統數據
SYSAUX 存放其他可選組件的系統數據 - 非系統表空間
2.按表空間內容分
永久表空間 permanent tablespace
臨時表空間 temporary tablespace
存放臨時性的數據,order by等SQL語句會產生大量的臨時數據,一般創建用戶時要給該用戶指定一個臨時表空間,存放其操作產生的臨時數據,如果沒有指定,將佔用系統表空間,影響服務器效率- 撤銷表空間 undo tablespace
存放回滾段數據,當你對一張表或一條記錄進行修改的時候,它會對修改之前的信息進行保存,這樣可以保證數據的回滾。
3.按表空間大小分
- 大文件表空間
只能對應一個數據文件data_file,這個data_file可以包括4G個數據塊,最大可達32TB - 小文件表空間
可以放1022個data_file
表空間的區管理
- 數據字典管理(Dictionary managed tablespace)
在表空間裏,有的區間被佔用了,有的沒被佔用,這些數據是放在數據字典裏的。當你對這個表空間進行分配或釋放的時候,數據文件裏相關的表就會做修改.傳統管理方式,10g已經不使用 - 本地管理(locally managed tablespace)
11g默認的管理方式,用位圖bitmap來自由的管理區間。一個區間對一個位,如果這個位是1表示已經被佔用,0表示未被佔用 - 二者區別
詞典管理空間表示“中央集權治”,本地管理表空間表示“省市自治區”,一個databases表示中國,tablespaces表示一個省或直轄市。詞典管理統一由中央調配。而本地管理表示有高度的自治權利,自已各種資源的分配不用上報中央。
表空間管理操作
查看
- 查看錶空間
V$TABLESPACE displays tablespace information from the control file.
select name from V$tablespace
- 查看錶空間有哪些文件
desc dba_data_files;
select file_name from dba_data_files
創建
- 創建大小爲50M的表空間test,禁止自動擴展數據文件
create tablespace test
logging
datafile
'C:\oracle\oradata\orcl\TEST01.DBF'
size 50M
reuse autoextend off;
- 將表空間test離線
alter tablespace test offline;
- 查看test是否離線
select tablespace_name,status from dba_tablespaces;
- 將表空間test聯機
alter tablespace test online;
- 使表空間test只讀,從而保持靜態數據
alter tablespace test read only;
注:查看錶空間是否只讀時,也是查找dba_tablespaces的status字段
- 使表空間可讀可寫
alter tablespace test read write;
- 在Oracle 11g總可直接更名永久表空間和臨時表空間,但是system和sysaux表空間不能更名
alter tablespace test rename to test1
刪除
drop_tablespace::=
刪除表空間,使用命令drop tablespace ‘表空間名’ 但是有3個選項需要注意:
INCLUDING CONTENTS:指刪除表空間中的segments;
INCLUDING CONTENTS AND DATAFILES:指刪除segments和datafiles;
CASCADE CONSTRAINTS:刪除所有與該空間相關的完整性約束條件。
例子
刪除表空間test之前
刪除
drop tablespace test including contents and datafiles cascade constraints;
刪除之後