web-dev-qa-db-ja.com

Oracleでのドロップとドロップパージの違い

Oracle Databaseを使用していますが、ドロップおよび削除コマンドについて少し混乱しています。実際、私にとっては両方とも同じことをしています。データベースからスキーマを持つテーブルを削除します。これら2つの主な違いは何ですか?

  1. テーブルTablenameをドロップします。
  2. ドロップテーブルテーブル名パージ;
21
user769394

通常、テーブルは、削除されるとごみ箱(Oracle 10gの時点)に移動されます。ただし、パージ修飾子も指定されている場合、テーブルはデータベースから(完全に)回復不能に削除されます。

42
Randy

Oracle Database 10gでは、表を削除するための新機能が導入されています。テーブルを削除しても、データベースはテーブルに関連付けられたスペースをすぐには解放しません。むしろ、データベースはテーブルの名前を変更し、それをごみ箱に入れます。誤ってテーブルを削除した場合は、後でFLASHBACK TABLEステートメントを使用して復元できます。 DROP TABLEステートメントの発行時にテーブルに関連付けられたスペースをすぐに解放する場合は、次のようにPURGE句を含めます。 DROP TABLE従業員のパージ; PURGEを指定するのは、1つの手順でテーブルを削除し、それに関連付けられているスペースを解放する場合のみです。 PURGEを指定すると、データベースはテーブルとその依存オブジェクトをごみ箱に入れません。注:PURGE句を使用してDROP TABLEステートメントをロールバックすることはできません。また、PURGE句を使用して削除した場合、テーブルを回復することはできません。この機能は、以前のリリースでは使用できませんでした。

6
Vignesh

Asktom記事へのリンク: http://asktom.Oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:3254353804142

基本的にOracle10では、ドロップされたすべてのテーブルは、ドロップできる場所からごみ箱に入ります。パージでは、基本的にごみ箱の部分をスキップし、アクションを元に戻すオプションなしでテーブルを削除します。

3
phil
SQL>drop table table_name;

このコマンドは、table_nameという名前のテーブルを削除しますが、内部的にはOracleのごみ箱に移動します(これは、 Delete Windows OSのキー)。
利点
1。必要に応じて、上記の削除されたテーブルを復元できます。
欠点
1。それでもある程度のメモリを占有します。

SQL>drop table table_name purge;

このコマンドは、テーブルtable_nameをデータベースから完全に削除します(これは、 Shift + Delete Windows OSのキー)。

利点と欠点は、上記の逆です。

1
Devaraj B

次の文は、テーブルを削除してごみ箱に入れます。

DROP TABLE emp_new;

次のステートメントは、テーブルを削除し、ごみ箱からフラッシュします。

DROP TABLE emp_new PURGE;

1
Danish Rizvi

@Randyコメントから明らかなように、追加するだけです。

(1)テーブルTablenameの削除:

purgeがない場合、テーブルはRECYCLEBINまたはUSER_RECYCLEBINにあります。コマンドFLASHBACKを使用して復元できます。これは、Windowsデスクトップで削除したファイルに似ており、ごみ箱に移動し、元に戻すことができます。

(2)ドロップテーブルテーブル名パージ:

DropPurgeとともに指定された場合、そのテーブルスペースは解放され、復元できません。 (デスクトップでShift + Deleteのように)

次の例は実際的な例を示します:

create table test_client (val_cli integer, status varchar2(10));
drop table test_client ;

select tablespace_name from all_tables where owner = 'test' and table_name = 'TEST_CLIENT';

SELECT * FROM RECYCLEBIN where ORIGINAL_NAME='TEST_CLIENT';

SELECT * FROM USER_RECYCLEBIN where ORIGINAL_NAME='TEST_CLIENT';

FLASHBACK TABLE test_client  TO BEFORE DROP;

select tablespace_name from all_tables where owner = 'test' and table_name = 'TEST_CLIENT';

drop table test_client purge;

select tablespace_name from all_tables where owner = 'test' and table_name = 'TEST_CLIENT';
1
sandy v