首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 10g 回收站機制實測:DROP 表未釋放空間、USER_RECYCLEBIN 查詢與 PURGE 操作

     編輯:Oracle 資料庫相關知識

機制本質

回收站 = 數據字典表,記錄 DROP 對象元數據。對象重命名為 BIN$... 保留在原表空間,仍佔用空間,直到 PURGE 或空間壓力觸發自動清理。

實測過程

-- 創建測試環境
CREATE TABLESPACE Foo DATAFILE 'foo.dbf' SIZE 1M;
CREATE USER Foo IDENTIFIED BY Foo DEFAULT TABLESPACE Foo;

CONNECT Foo/Foo;
SELECT table_name FROM user_tables;           -- 無記錄
SELECT object_name FROM user_recyclebin;      -- 無記錄

CREATE TABLE Foo AS SELECT * FROM DUAL;       -- 創建表 Foo
SELECT table_name FROM user_tables;           -- FOO

DROP TABLE Foo;                               -- 表已丟棄
SELECT table_name FROM user_tables;           -- RB$$41888$TABLE$0 (舊版顯示 BIN$...)
SELECT object_name, original_name FROM user_recyclebin;
-- OBJECT_NAME=RB$$41888$TABLE$0, ORIGINAL_NAME=FOO

DESC RB$$41888$TABLE$0;                       -- 結構仍可描述

關鍵操作

  • 恢復:FLASHBACK TABLE Foo TO BEFORE DROP; (別名 FLASHBACK TABLE "BIN$..." TO BEFORE DROP)
  • 徹底刪除:PURGE TABLE Foo; 或 PURGE RECYCLEBIN;
  • 查詢所有用戶回收站:DBA_RECYCLEBIN (需 DBA 權限)。

版本差異提示

早期 Beta 顯示 BIN$...,正式版改為 RB$$...$TABLE$# 格式,功能一致。SHOW RECYCLE BIN 命令早期版本不可用,以查詢視圖為準。

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