削除したテーブルを「recyclebin」から復元させる手順
ドロップしたテーブルを復元させる手順
Oracle 10g から「recyclebin」という機能が実装され、この機能を有効にしておくと削除したテーブルを復元させることができます。
メリットとしては誤ってテーブルを削除してしまった場合は簡単に復旧させることができますが、デメリットとしてはrecyclebinの管理でリソースを消費してしまいます。必要に応じてこの機能をON/OFFすればいいかと思います。デフォルトはONです。
テーブル復元手順
ここでは、テーブル「AAA」とテーブル「TEST」を使用して検証します。
まずはrecyclebin機能がONであることを、初期化パラメータで確認します。ONになってますね。
SQL> show parameter recyclebin NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ recyclebin string on SQL>
まずはテーブル「AAA」を削除してみようと思いますが、削除前にテーブル内容を確認してみます。12レコードのデータが入っています。
SQL> select table_name from dba_tables where table_name='AAA'; TABLE_NAME ------------------------------ AAA SQL> select * from AAA; ID MOJI ---------- -------------------- 1 aaa 2 bbb 3 ccc 4 ddd 5 eee 6 fff 7 ggg 8 hhh 9 iii 10 jjj 11 kkk 12 mmm 12行が選択されました。 SQL>
ではテーブル「AAA」をドロップします。ドロップ後に削除されたことも確認します。
SQL> drop table AAA; 表が削除されました。 SQL> select table_name from user_tables where table_name='AAA'; レコードが選択されませんでした。 SQL>
では、削除したテーブル「AAA」がrecyclebin機能によって完全に削除されていないことを確認してみます。複雑なテーブル名で残っていることがわかります。
SQL> show recyclebin ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ ------------------- AAA BIN$6e12BFrvAMbgQwoKU9N//g==$0 TABLE 2013-10-30:12:15:35 SQL>
削除したテーブルの内容を確認することもできます。
SQL> select * from "BIN$6e12BFrvAMbgQwoKU9N//g==$0"; ID MOJI ---------- -------------------- 1 aaa 2 bbb 3 ccc 4 ddd 5 eee 6 fff 7 ggg 8 hhh 9 iii 10 jjj 11 kkk 12 mmm 12行が選択されました。 SQL>
それでは、ドロップしたテーブル「AAA」をflashbackで復元してみます。
SQL> flashback table "BIN$6e12BFrvAMbgQwoKU9N//g==$0" to before drop; フラッシュバックが完了しました。 SQL>
これで復元完了です。確認してみると削除前の状態に復元できていることを確認できました。
SQL> select table_name from dba_tables where table_name='AAA'; TABLE_NAME ------------------------------ AAA SQL> select * from AAA; ID MOJI ---------- -------------------- 1 aaa 2 bbb 3 ccc 4 ddd 5 eee 6 fff 7 ggg 8 hhh 9 iii 10 jjj 11 kkk 12 mmm 12行が選択されました。 SQL>
recyclebinに残ったテーブルを削除する方法
テーブルをドロップしてもrecyclebinに残ることが確認できましたが、残っているということはそのテーブルの容量分がサイズとして使用されていることになります。本当に削除して問題ない場合は完全に削除してリソースを開放する必要があります。
テーブル「AAA」とテーブル「TEST」をドロップした後の状態から続けます。
recyclebinの内容を確認してみます。
SQL> show recyclebin ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ ------------------- AAA BIN$6e12BFrwAMbgQwoKU9N//g==$0 TABLE 2013-10-30:12:19:15 TEST BIN$6e12BFrxAMbgQwoKU9N//g==$0 TABLE 2013-10-30:12:22:18 SQL>
2テーブルがrecyclebinに保管されています。
ではここからテーブル「AAA」を完全に削除します。purgeを使って削除しますが2通りの消し方があります。
パターン1
SQL> purge table "BIN$6e12BFrwAMbgQwoKU9N//g==$0"; 表がパージされました。 SQL>
パターン2
SQL> purge table aaa; 表がパージされました。 SQL>
recyclebinを確認すると完全に削除されたことが確認できました。
SQL> show recyclebin ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ ------------------- TEST BIN$6e12BFrxAMbgQwoKU9N//g==$0 TABLE 2013-10-30:12:22:18 SQL>
recyclebinにあるテーブルをまとめて全部削除する方法
recyclebinにあるテーブルをまとめて全部削除することもできます。
SQL> purge recyclebin; リサイクルビンがパージされました。 SQL>
確認すると完全に消えてました。
SQL> show recyclebin SQL>
recyclebinを経由せずにテーブルを完全に削除する方法
recyclebin機能を経由せずに完全にテーブルを削除することもできます。ここではテーブル「TEST」を完全に削除してみます。
drop table ~ の後にpurgeを付ければいいです。
SQL> drop table test purge; 表が削除されました。 SQL>
recyclebinを確認してみると残っていないことがわかります。
SQL> show recyclebin SQL>
念のため、テーブルとしても存在しないことも確認してみました。
SQL> select table_name from dba_tables where table_name='TEST'; レコードが選択されませんでした。 SQL>
SELECTでrecyclebinを確認
これまでrecyclebinの内容は「show recyclebin」で確認してきましたが、selectでの確認では更に詳細な情報を確認することができます。
SQL> select * from RECYCLEBIN; OBJECT_NAME ORIGINAL_NAME OPERATION TYPE ------------------------------ -------------------------------- --------- ------------------------- TS_NAME CREATETIME DROPTIME DROPSCN ------------------------------ ------------------- ------------------- ---------- PARTITION_NAME CAN CAN RELATED BASE_OBJECT PURGE_OBJECT SPACE -------------------------------- --- --- ---------- ----------- ------------ ---------- BIN$6e4QPTF3AIDgQwoKU9Mvpw==$0 TEST DROP TABLE TEST_TS 2013-10-30:12:41:16 2013-10-30:12:41:26 1736336 YES YES 87573 87573 87573 8 BIN$6e4QPTF2AIDgQwoKU9Mvpw==$0 AAA DROP TABLE TEST_TS 2013-10-30:12:41:11 2013-10-30:12:41:21 1736299 YES YES 87572 87572 87572 8 SQL>
タグ:drop, purge, recyclebin