在 Oracle 10g 環境中,開發人員經常會發現資料庫中出現類似 BIN$2cMp4FjwQ2Cw3Lj+BxLYTw==$0 這樣奇怪命名的表格。這其實並非錯誤,而是 Oracle 10g 引入的「回收站」功能所致。當執行 DROP TABLE 指令時,Oracle 不會立即永久刪除表格,而是將其移至回收站,保留原始結構與資料,方便後續透過 FLASHBACK TABLE 還原。這些被丟進回收站的物件,系統會自動重命名為 BIN$ 開頭的全域唯一識別碼格式。
若想確認目前使用者回收站中有哪些物件,可執行以下 SQL:
SELECT object_name, type, original_name
FROM user_recyclebin;
object_name 即為系統自動產生的 BIN$... 名稱,original_name 則是原本的表格或索引名稱。
若只想永久刪除特定物件,可使用 PURGE 指令搭配原始名稱:
PURGE TABLE original_table_name;
PURGE INDEX original_index_name;
更簡單的方式是直接清空目前使用者的回收站:
PURGE RECYCLEBIN;
此指令會一次性移除所有已丟棄的物件,釋放空間,無需逐一指定名稱。
若在 DROP 時確定不需要保留,可直接加上 PURGE 關鍵字:
DROP TABLE table_name PURGE;
此寫法會繞過回收站直接永久刪除,適合生產環境中確定無須還原的操作,但請謹慎使用,執行後無法透過 FLASHBACK 復原。
理解回收站機制有助於避免誤以為資料庫出現異常物件,也能在空間管理上更有效率。日常維護建議定期執行 PURGE RECYCLEBIN,避免回收站佔用過多表空間。