Oracleの研究ノート:ドロップテーブルとパージ

あなたは間違って削除した場合の動作オラクル、多くの場合、テーブルをドロップ、テーブルを復元することを望んで、時々は、表スペースがすぐに解放することができた後、テーブルを削除したいです。

あなたはパージを使用してOracleにテーブルを削除し、テーブルを復元し、スペースを解放することができます。

ドロップテーブル

あなたは、Oracle(ドロップ)テーブルで削除すると、データベース・テーブル・スペースがすぐにリリースしたが、テーブルの名前を変更し、ごみ箱に入れていない、あなたは、次の方法で確認することができます:

select object_name,
       original_name
from user_recyclebin
where original_name = 'TEMP'

OBJECT_NAME                     ORIGINAL_NAME
-------------------------------------------------------
BIN$C1LT5U0DaV7gVAAhKENZ5A==$0  TEMP
  • OBJECT_NAME:ごみ箱内のオブジェクトの名前。
  • original_name:オブジェクトの元の名前。

ごみ箱にテーブルの後、Oracleは、テーブルを使用して他のオブジェクトに、このスペースを使用することはありません、スペースは収納スペースがデータベースを一掃するのに十分ではありませんので、まだパージ手動でユーザーがない限り、占有またはテーブルによって占められます。あなたがテーブルの削除中にエラーを見つけた場合は、テーブルには、フラッシュバックテーブルによって復元することができます。

フラッシュバック表

あなたは、削除されたテーブルを回復するためにフラッシュバック表を使用することができます。

flashback table temp to before drop;

ドロップは、この表の回収とそのすべての依存オブジェクトを示す前に。他のテーブルのテーブル名が使用されてきた場合、テーブルを説明するフラッシュバックテーブルに実行される:ORA-38312:original name is used by an existing objectここで、テーブルが実行フラッシュバックテーブルの名前を変更することができます。

flashback table temp to before drop rename to temp_old;

名前を変更した後、回復テーブルを示すために、名前を変更します。テーブルには何回か削除されている場合は、デフォルトを復元するために、テーブルを復元するためにフラッシュバック表を使用し、以前のバージョンの最後に削除を復元したい場合は、ごみ箱内のテーブルを照会する必要があります。

select object_name,original_name,droptime from user_recyclebin where original_name = 'TEMP';
OBJECT_NAME                     ORIGINAL_NAME   DROPTIME
------------------------------------------------------------------------
BIN$C1LT5U0FaV7gVAAhKENZ5A==$0  TEMP            2014-12-29:10:59:41
BIN$C1LT5U0HaV7gVAAhKENZ5A==$0  TEMP            2014-12-29:10:59:54
BIN$C1LT5U0GaV7gVAAhKENZ5A==$0  TEMP            2014-12-29:10:59:47

その後、秩序を回復するためにあらゆる方法を復元し、名前を変更するためにそれを使用することができます。

フラッシュバックテーブルの使用に注意してください。

  1. ごみ箱のデータベースは、テーブルのすべてのインデックスを復元します、注意を払うには、ビットマップ結合索引削除後のテーブルのインデックスがごみ箱に置かれることはありませんので、復元することはできません、それを復元することはできません。
  2. 制約データベースが回収され、他のテーブルに加えてトリガテーブルは、整合性制約を指します。
  3. あなたがテーブルを削除すると、テーブルの上のすべてのマテリアライズド・ビュー・ログを定義もごみ箱に削除されていないが、そのため、マテリアライズド・ビュー・ログは、フォームを復元することはできませんマテリアライズド。
  4. あなたがテーブルを削除すると、このテーブルに関連付けられているすべてのインデックスは、データベースが十分なスペースがある場合は、データベースが最初にそれゆえ、この場合には、回復がテーブルのすべてを回復することはできません、インデックスの外にスペースをクリアします、ごみ箱に配置されますインデックス。
  5. 表がパージを削除されている場合、それは回復することはできません。

ユーザーは、テーブルがそれをリストアしません削除した場合、あなたはそれを完全に除去パージの使用を検討することができます。

パージ

パージテーブルを完全に除去することができ、かつ自由アップスペースは、テーブルによって占有しました。

purge table temp;
drop table table_name purge;

パージ操作は、テーブルの上に一度行われ、パージ操作をロールバックすることはできませんが、テーブルには回復できません。

テーブルが複数回削除された場合、パージは、ごみ箱の内容全体をクリアすることができ、最も古い削除し、そのテーブルをクリアします。

purge recyclebin;

ドロップテーブル...パージ

あなたはまた、例えば、1つのステップでテーブルや空きスペースを削除することができます。

drop table table_name purge;

テーブルtable_nameの削除と同様、このようにして、テーブルの上にパージ動作を行います。

なお、この場合には、パージは、テープのドロップテーブル操作をロールバックすることはできません、テーブルがパージを使用して復元することはできません削除されました。

テスト

大きなテーブルを削除するには、DROPステートメントを使用して、ストアドプロシージャ、または他のコード場合は、ごみ箱内のごみになりやすい、DBAは文句を言うでしょう。

テーブルをドロップするように決定された場合、彼らはロールバックすることができないので、それは、パージを追加するのが最善ですが、注意して使用する必要があります。

では、コマンドウィンドウの横に:

SQL> show parameter recycle;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
buffer_pool_recycle                  string      
db_recycle_cache_size                big integer 0
recyclebin                           string      OFF




SQL> purge recyclebin;
 
Done -- 清空回收站


SQL> show recyclebin;
-- 查询




SQL> drop table dt;
-- 删除表  
SQL> show recyclebin;
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
dt              BIN$2cOZCZj0Ry27btpd7ymTHg==$0 TABLE        2019-04-10:10:56:58


SQL> flashback table dt to before drop;
-- 回滚数据表

SQL> drop table dt purge;
-- 删除表并清空回收站
SQL> show recyclebin; -- 为空

参考リンク1:Oracleのヒント:表とパージをドロップ

参考リンク2:パージ使い方[ORACLE] [削除]テーブル

おすすめ

転載: www.cnblogs.com/hider/p/12194675.html