首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

深度解析 Oracle 表空間:核心概念、屬性管理與常用查詢實戰

     編輯:Oracle 資料庫基礎

什麼是表空間?

表空間是 Oracle 資料庫的邏輯儲存單位,位於資料庫與物理資料檔之間。每個資料庫至少包含一個 SYSTEM 表空間(存放資料字典),一個表空間只能屬於一個資料庫,但可由一個或多個資料檔組成。

表空間的五大核心特性

  1. 控制磁碟空間分配:決定段、區塊如何分佈在資料檔上。
  2. 配額限制:可對使用者在特定表空間的最大用量設定上限。
  3. 狀態屬性:ONLINE/OFFLINE/READ ONLY/READ WRITE,支援熱備份、維護窗口隔離。
  4. 支援表空間級備份/恢復:RMAN 可針對單一表空間執行備份與時間點恢復 (TSPITR)。
  5. 彈性擴展:透過 AUTOEXTEND 或手動 ADD DATAFILE / RESIZE 動態調整大小;表空間總大小 = 所有資料檔大小之和。

常用 DDL 與查詢指令速查

修改表空間屬性

ALTER TABLESPACE users READ ONLY;
ALTER TABLESPACE idx_data ONLINE;

查詢表空間狀態

SELECT tablespace_name, status FROM dba_tablespaces;
注意:SYSTEM、UNDO、TEMP 不可設為 OFFLINE。

查詢表空間與資料檔對應關係

SELECT tablespace_name, bytes/1024/1024 AS size_mb, file_name
FROM dba_data_files
ORDER BY tablespace_name;

基於表空間的實務操作

1. 查詢使用者預設表空間

SELECT username, default_tablespace FROM dba_users;

2. 查詢表所屬表空間

SELECT table_name, tablespace_name FROM user_tables;

3. 修改使用者預設表空間

ALTER USER app_user DEFAULT TABLESPACE app_data;

4. 將表移動至另一表空間(線上重組)

ALTER TABLE big_table MOVE TABLESPACE archive_ts;

搭配 ONLINE 關鍵字 (12c+) 可實現零停機遷移。

最佳實踐建議

  • 依業務域拆分表空間(如 APP_DATA、APP_IDX、ARCHIVE),便於配額控制與備份策略差異化。
  • 啟用 EXTENT MANAGEMENT LOCAL AUTOALLOCATE 並配合 SEGMENT SPACE MANAGEMENT AUTO,減少碎片與管理負擔。
  • 定期監控 DBA_FREE_SPACE 與 DBA_DATA_FILES,設定臨界值告警(如 80%)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved