フラッシュバック・ドロップの実行方法

ごみ箱の有効化(RECYCLE BIN)

初期化パラメータRECYCLEBIN=ONを設定すれば、ごみ箱が有効になります。

SQL> show parameter RECYCLEBIN

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
recyclebin                           string                            on
  • ごみ箱は、削除されたすべての表およびそれらの依存オブジェクトを格納する論理的なコンテナです。
  • 表が削除されると、後でリカバリできるように表とその依存オブジェクトがごみ箱に格納されます。
  • ごみ箱に格納される依存オブジェクトには、索引、制約、トリガー、ネストした表、LOBセグメント、LOB索引セグメントが含まれます。

ごみ箱内のオブジェクトの表示および問合せ

SHOW RECYCLEBINSQL*PLUSコマンド

SQL> drop table tb_ocm_test;

表が削除されました。

SQL> show recyclebin;
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
TB_OCM_TEST      BIN$SKPtyWPo1RHgQAB/AQAi3Q==$0 TABLE        2008-03-17:23:35:18
SQL>

USER_RECYCLEBINおよびDBA_RECYCLEBIN

SQL> SELECT object_name as recycle_name, original_name, type 
     FROM recyclebin;

RECYCLE_NAME                      ORIGINAL_NAME          TYPE
--------------------------------  ---------------------  ----------
BIN$gk3lsj/3akk5hg3j2lkl5j3d==$0  EMPLOYEE_DEMO          TABLE
BIN$JKS983293M1dsab4gsz/I249==$0  I_EMP_DEMO             INDEX
BIN$NR72JJN38KM1dsaM4gI348as==$0  LOB_EMP_DEMO           LOB
BIN$JKJ399SLKnaslkJSLK330SIK==$0  LOB_I_EMP_DEMO         LOB INDEX

ごみ箱の操作

FLASHBACK TABLE <table_name> TO BEFORE DROP [RENAME TO <new_name>]:ドロップされたテーブルをリストア

1.ごみ箱オブジェクト名を用いてテーブルをリストアします。

QL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
TB_OCM_TEST      BIN$SKPtyWPo1RHgQAB/AQAi3Q==$0 TABLE        2008-03-17:23:35:18

SQL> flashback table "BIN$SKPtyWPo1RHgQAB/AQAi3Q==$0" to before drop rename to tb_jason_test;

フラッシュバックが完了しました。

SQL> select * from tab;

TNAME                                                                                      TABTYPE                CLUSTERID
------------------------------------------------------------------------------------------ --------------------- ----------
TB_JASON_TEST                                                                              TABLE

2.テーブル名を用いてリストア
SQL> drop table tb_jason_test;

表が削除されました。

SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
TB_JASON_TEST    BIN$SKPtyWPu1RHgQAB/AQAi3Q==$0 TABLE        2008-03-17:23:59:17

SQL> flashback table tb_jason_test to before drop;

フラッシュバックが完了しました。

SQL> select * from tab;

TNAME                                                                                      TABTYPE                CLUSTERID
------------------------------------------------------------------------------------------ --------------------- ----------
TB_JASON_TEST                                                                              TABLE

SQL> show recyclebin;
SQL>

PURGE:ごみ箱からのオブジェクトの消去

SQL> drop table tb_jason_test;

表が削除されました。

SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
TB_JASON_TEST    BIN$SKPtyWP01RHgQAB/AQAi3Q==$0 TABLE        2008-03-18:00:03:40

SQL> purge table tb_jason_test;

表がパージされました。

SQL> show recyclebin;
SQL>

PURGE TABLE:表および依存オブジェクト消去
PURGE INDEX:ごみ箱から索引削除
PURGE TABLESPACE:表領域内の削除したすべてのオブジェクトの消去
PURGE RECYCLEBIN:ユーザーのごみ箱内のすべてのオブジェクトの消去
PURGE DBA_RECYCLEBIN:ごみ箱内のすべてのオブジェクトの消去

ごみ箱の容量と領域圧迫

  • 削除されたオブジェクトは、属している表領域に、その表領域を拡張せずに新しいエクステントを割り当てられなくなるまでごみ箱内に保持されます。この状態を、領域圧迫といいます。
  • 領域圧迫は、特定の表領域に定義されたユーザー割当て制限によって発生する場合もあります。表領域に空き領域が存在しても、ユーザーが表領域に対する割当て制限をすべて使用している場合があります。
  • 領域圧迫に対する処理が必要となった場合を除いて、ごみ箱内の領域の再生またはオブジェクトの上書きは自動的には行われません。
  • 領域圧迫が発生すると、データベースによって、ごみ箱から自動的に消去するオブジェクトが選択されます。オブジェクトは、先入れ先出しの順序で消去されます。つまり、最初に削除されたオブジェクトが最初に消去されます。
  • 必要以上に消去操作を実行しないことで、領域圧迫を発生させたトランザクションのパフォーマンスの低下を最小限に抑えます。領域が必要になるまでオブジェクトをごみ箱に残しておくことで、オブジェクトの保持期間を最大限に伸ばします。
  • 表の索引などの存オブジェクトは、関連付けられた表(またはその他の必要なセグメント)より先に消去されます。
  • 個々のユーザーが表領域の割当て制限をすべて使用したために領域圧迫が発生した場合は、表領域に属するオブジェクトのうち、ユーザーの領域の割当て制限の負担になるオブジェクトが、ごみ箱から消去されます。

Bypassing the Recycle Bin

DROP TABLE <table_name> [PURGE]:表をごみ箱に移動せず、即時永続的に削除
DROP TABLESPACE <ts_name> [INCLUDING CONTENTS]:表領域のオブジェクトをごみ箱に移動せず、即時永続的に削除
DROP USER <user_name> [CASCADE]:ユーザーに属するオブジェクトを即時永続的に削除

ドロップされたテーブルを問い合わせ

SELECT … FROM "BIN$zbjrBdpw==$0" [AS OF …] WHERE…

SQL> select name from test_fb_database;

NAME
---------
MMOA

SQL> drop table test_fb_database;

Table dropped.

SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
TEST_FB_DATABASE BIN$SKyjHOEcIe/gQAB/AQAF9A==$0 TABLE        2008-03-18:09:58:40
SQL>
SQL> select name from "BIN$SKyjHOEcIe/gQAB/AQAF9A==$0";

NAME
---------
MMOA
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License