2014-07-24 Created By BaoXinjian
一、摘要
我們知道oarcle數據庫真正存放數據的是數據文件(data files);
Oarcle表空間(tablespaces)實際上是一個邏輯的概念,他在物理上是並不存在的,那么把一組data files 捻在一起就成為一個表空間;
在ORACLE數據庫中,所有數據從邏輯結構上看都是存放在表空間當中,當然表空間下還有段、區、塊等邏輯結構;
從物理結構上看是放在數據文件中。一個表空間可由多個數據文件組成;
1. 表空間屬性
- 一個數據庫可以包含多個表空間,一個表空間只能屬於一個數據庫
- 一個表空間包含多個數據文件,一個數據文件只能屬於一個表空間
- 表這空間可以划分成更細的邏輯存儲單元
2. 基本的表空間(系統中默認創建的幾個表空間:)
- SYSTEM: 系統表表空間
- SYSAUX: 索引表空間
- USERS: 用戶表空間
- UNDOTBS1: 回滾表空間
- EXAMPLE: 工具表空間
- TEMP: 臨時表空間
3. 表空間的分類
- 永久表空間 存放永久性數據,如表,索引等。
- 臨時表空間 不能存放永久性對象,用於保存數據庫排序,分組時產生的臨時數據。
- UNDO表空間 保存數據修改前的鏡象。
4. 表空間的管理
- 字典管理:全庫所有的空間分配都放在數據字典中。容易引起字典爭用,而導致性能問題。
- 本地管理:空間分配不放在數據字典,而在每個數據文件頭部的第3到第8個塊的位圖塊,來管理空間分配。
5. 基本操作
- 1: 創建表空間
- 2: 表空間管理
- 3: 維護表空間
- 4: 表空間配額
二、結構分析
1. 表空間和數據文件的關系
2. 數據庫存儲結構
三、案例1 - 創建表空間
1. 創建表空間,並指定兩個數據庫文件
1 CREATE TABLESPACE BXJ_DATA 2 DATAFILE '/oradata/BXJ_DATA_001.dbf'
3 SIZE 100M 4 EXTENT MANAGEMENT LOCAL 5 SEGMENT SPACE MANAGEMENT AUTO ONLINE; 6
7 ALTER TABLESPACE BXJ_DATA 8 ADD DATAFILE '/oradata/BXJ_DATA_001.dbf'
9 SIZE 100M 10 AUTOEXTEND OFF;
四、案例2 - 表空間管理
1. 常用的表查詢
- --包含數據庫中所有表空間的描述信息
- SELECT * FROM DBA_TABLESPACES
- --包含當前用戶的表空間的描敘信息
- SELECT * FROM USER_TABLESPACES
- --包含從控制文件中獲取的表空間名稱和編號信息
- SELECT * FROM V$TABLESPACE;
- --包含數據文件以及所屬的表空間的描述信息
- SELECT * FROM DBA_DATA_FILES
- --包含臨時數據文件以及所屬的表空間的描述信息
- SELECT * FROM DBA_TEMP_FILES
- --包含從控制文件中獲取的數據文件的基本信息,包括它所屬的表空間名稱、編號等
- SELECT * FROM V$DATAFILE
- --包含所有臨時數據文件的基本信息
- SELECT * FROM V$TEMPFILE
2. 查看表空間使用情況
3. 計算表空間使用情況(考慮了數據文件自動增長情況)
五、案例3 - 維護表空間
1. 表空間狀態有下面幾種狀態:online、offline、read only、read write
SELECT FILE#, STATUS, ENABLED FROM V$DATAFILE
2. 設置為脫機狀態
SQL>ALTER TABLESPACE TBS_DM_DAT OFFLINE IMMEDIATE;
3. 設置為聯機狀態
SQL> ALTER TABLESPACE TBS_DM_DAT ONLINE;
4. 設置為只讀狀態
SQL>ALTER TABLESPACE TBS_DM_DAT READY ONLY;
5. 設置為讀寫狀態
SQL>ALTER TABLESPACE TBS_DM_DAT READ WRITE;
6. 修改表空間名稱
在ORACLE 10g 之前,表空間的名稱是不能被修改的。在ORACLE 11G中,通過ALTER TABLESPACE 語句中使用RENAME子句,數據庫管理員可以修改表空間的名稱
7. 修改表空間自動增加打開
ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' AUTOEXTEND ON;
8. 修改表空間自動增加關閉
ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' AUTOEXTEND OFF;
9. 修改表空間的數據庫文件大小
ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' resize 1921m;
10 新增表空間的一個數據庫文件
ALTER TABLESPACE TBS_DM_DAT ADD DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_003.dbf' size 1921m;
六、案例4 - 表空間配額度
表空間不足與用戶配額不足是兩種不同的概念。表空間的大小是指實際的用戶表空間的大小,而配額大小指的是用戶指定使用表空間的的大小。兩者的解決方式亦不相同
1. 查看用戶和表弓箭配額
- 查看所有用戶表空間的配額情況: SELECT * FROM DBA_TS_QUOTAS
- 查看當前用戶表空間的配額情況: SELECT * FROM USER_TS_QUOTAS
Thanks and Regards
參考: http://www.cnblogs.com/kerrycode/p/3418694.html