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

六步掌握Oracle表空間狀態管理:查詢、切換、遷移、轉換、刪除與驗證

     編輯:Oracle 資料庫基礎

步驟一:查詢表空間狀態

SELECT tablespace_name, status, contents, logging, extent_management, allocation_type
FROM dba_tablespaces
ORDER BY tablespace_name;

STATUS:ONLINE/OFFLINE/READ ONLY。CONTENTS:PERMANENT/TEMPORARY/UNDO。

步驟二:切換表空間狀態

-- 離線(維護/遷移前)
ALTER TABLESPACE users OFFLINE NORMAL;  -- 無活躍事務
ALTER TABLESPACE users OFFLINE TEMPORARY; -- 有活躍事務,檢查點後離線
ALTER TABLESPACE users OFFLINE IMMEDIATE; -- 強制,需介質恢復上線

-- 上線
ALTER TABLESPACE users ONLINE;

-- 只讀(歸檔/審計/備份窗口)
ALTER TABLESPACE archive_data READ ONLY;

-- 恢復讀寫
ALTER TABLESPACE archive_data READ WRITE;

步驟三:數據文件遷移(跨磁盤/重組存儲)

-- 1. 記錄文件路徑
SELECT file_name FROM dba_data_files WHERE tablespace_name = 'USERS';

-- 2. 離線表空間
ALTER TABLESPACE users OFFLINE NORMAL;

-- 3. OS層面移動文件
$ mv /u01/oradata/PROD/users01.dbf /u02/oradata/PROD/users01.dbf

-- 4. 重命名元數據
ALTER TABLESPACE users RENAME DATAFILE 
  '/u01/oradata/PROD/users01.dbf' TO '/u02/oradata/PROD/users01.dbf';

-- 5. 上線
ALTER TABLESPACE users ONLINE;

步驟四:單個數據文件Online/Offline(ARHIVELOG模式區別)

模式命令後續
ARCHIVELOGALTER DATABASE DATAFILE '...' OFFLINE;上線自動恢復RECOVER DATAFILE
NOARCHIVELOGALTER DATABASE DATAFILE '...' OFFLINE DROP;上線不可用,需從備份恢復

步驟五:字典管理 ↔ 本地管理 轉換

-- 查詢當前管理模式
SELECT tablespace_name, extent_management, allocation_type
FROM dba_tablespaces;

-- 字典 → 本地(不可逆,SYSTEM/TEMP/SYSAUX禁止)
EXEC DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL('USERS');

-- 本地 → 字典(極少用,僅兼容極舊工具)
EXEC DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_FROM_LOCAL('USERS');

注意:轉換期間表空間鎖定,建議維護窗口執行。

步驟六:刪除表空間

-- 僅刪除元數據(文件保留,極少用)
DROP TABLESPACE test_ts;

-- 刪除元數據+對象+數據文件(標準)
DROP TABLESPACE test_ts INCLUDING CONTENTS AND DATAFILES;

-- 強制刪除(有外鍵引用/分區表跨表空間)
DROP TABLESPACE test_ts INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;

驗證腳本:創建測試表確認可用

CREATE TABLE test_ts_verify (id NUMBER) TABLESPACE users;
INSERT INTO test_ts_verify VALUES (1);
COMMIT;
DROP TABLE test_ts_verify PURGE;

狀態流轉圖


[ONLINE] ←→ [OFFLINE] ←→ [READ ONLY]
    ↑           ↑
  (NORMAL)  (IMMEDIATE需恢復)
    ↓
[DROP] (不可逆)

總結

表空間狀態管理六步法:查 → 切 → 遷 → 文件級切 → 轉換 → 刪。核心原則:離線前必檢查活躍事務、遷移必驗證文件完整性、轉換不可逆必備份、刪除必確認無業務依賴。將上述命令封裝為ts_mgmt.sh腳本庫,實現標準化運維。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved