Oracle DB でテーブルとリサイクルビンの復元・削除
Oracle DB でテーブルを消すと、リサイクルビンというゴミ箱的な領域にゴミが残る。このリサイクルビンを含めたテーブルの削除を見ていこうと思う。
-- テーブルの消し方
TRUNCATE TABLE hoge PURGE MATERIALIZED VIEW LOG; -- マテリアライズド・ビュー・ログを消す
TRUNCATE TABLE hoge REUSE STORAGE; -- エクステント (領域) を解放しない。デフォルトは DROP STORAGE
DROP TABLE hoge PURGE; -- テーブル自体を消す
-- テーブルスペース削除 (テーブルがあっても強制削除)
-- 表領域の実体 DBF ファイルはなくならない。また、ユーザは削除されない。
DROP TABLESPACE my_tablespace INCLUDING CONTENTS;
-- リサイクルビンを確認する
SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME LIKE 'BIN$%';
Show recyc
-- リサイクルビンから復元する
FLASHBACK TABLE "BIN$hoge" TO BEFORE DROP;
-- リサイクルビンのパージ (解放)
PURGE TABLE hoge_table; -- 削除前のテーブル名を指定する。同じテーブルが複数回削除されている場合は一番古い1件が削除される
PURGE TABLE "BIN$hoge"; -- リサイクルビンの名前を指定して削除する
PURGE USER_RECYCLEBIN;
PURGE RECYCLEBIN; -- ゴミ箱全体を空にする