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

Oracle 刪除表後殘留 BIN$ 對象處理:閃回、清理回收站、PURGE 參數

     編輯:Oracle 資料庫基礎

現象

DROP TABLE 後,表不見了,但 SELECT * FROM TAB 仍見 BIN$... 開頭對象,佔用空間。

核心機制:回收站

  • 10g+ 默認開啟,DROP 實際是重命名移入回收站,而非物理刪除。
  • 查詢回收站:SELECT * FROM RECYCLEBIN; 或 SHOW RECYCLEBIN;
  • 檢查閃回開啟狀態:SELECT FLASHBACK_ON FROM V$DATABASE;

常用操作

目的命令
閃回恢復表FLASHBACK TABLE table_name TO BEFORE DROP;
徹底刪除(不進回收站)DROP TABLE table_name PURGE;
清空當前用戶回收站PURGE RECYCLEBIN;
清空指定表在回收站的對象PURGE TABLE table_name;
清空表空間回收站 (DBA)PURGE TABLESPACE ts_name; / PURGE TABLESPACE ts_name USER scott;
清空整個資料庫回收站 (DBA)PURGE DBA_RECYCLEBIN;

關閉回收站(不建議常態關閉)

ALTER SYSTEM SET RECYCLEBIN = OFF SCOPE=BOTH;  -- 需重啟生效
-- 或會話級
ALTER SESSION SET RECYCLEBIN = OFF;

最佳實踐

  • 生產環境 DROP 重要表前,務必確認備份可用;
  • 確定無需恢復時,使用 PURGE 釋放空間;
  • 定期監控回收站大小,防止誤佔用表空間導致 ORA-01653。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved