はアンドゥログを提供しません。 偶発的な操作により、データが失われる可能性があります。 たとえば、DROP TABLEステートメントの実行後にデータが失われる可能性があります。 のフラッシュバック機能を使用すると、削除されたテーブルをすばやく復元し、ごみ箱を表示および消去して、データを復元できます。
注意事項
重要なテーブルを削除するときは、ドロップフラッシュバック機能を有効にすることを推奨します。 日常的な操作にドロップフラッシュバック機能を使用する場合は注意が必要です。
ドロップフラッシュバック機能を有効にすると、削除されたテーブルはごみ箱モードで実行されるスペースに移動します。 テーブルは実際には削除されないため、テーブルが占有しているスペースは解放されません。 そのため、ごみ箱に大量のデータが蓄積されると、大量のディスク容量が占有される可能性がある。 定期的にごみ箱をクリアすることをお勧めします。
この場合、削除されたテーブルの依存関係を削除する試みは失敗する可能性があります。これは、テーブルが実際には削除されず、テーブルがこれらの依存関係を使用するためです。
削除されたテーブルは、recyclebinモードで実行されるスペースに移動されます。 recyclebinという名前のモードは作成しないでください。recyclebinモードのテーブルは
purge recyclebinステートメントでクリアできます。ドロップフラッシュバック機能が有効になっている場合、次の操作はサポートされません。
削除されたパーティションテーブルと一時テーブルはフラッシュバックできません。 パーティションテーブルと一時テーブルは実際に削除され、復元できません。
sql_dropイベントトリガーはサポートされていません。
パラメーター
パラメーター | データ型 | 説明 |
polar_enable_flashback_drop | BOOL | ドロップフラッシュバック機能を有効にするかどうかを指定します。 デフォルト値: OFF。 有効な値:
|
構文
ドロップフラッシュバック機能は、次のSQL文をサポートします。
テーブルの削除
drop table table_name; # Move the table to the space which runs in the recyclebin mode. drop table table_name purge; # Delete the table. The table cannot be restored.削除されたテーブルの復元
flashback table table_name to before drop; # Restore the deleted table. If tables with the same name exist, the latest table is restored. flashback table table_name to before drop rename to table_name_1; # Restore and rename the deleted table.ごみ箱からファイルを完全に削除
purge table table_name;説明同じ名前のテーブルが存在する場合、最も古いテーブルが削除されます。
ごみ箱をクリアする
purge recyclebin;説明polar_super_user権限は、ごみ箱をクリアするときに必要です。
ごみ箱情報の表示
show recyclebin;
性能テスト
テスト用のデータを準備します。
test1テーブルとテーブル
test2テーブルを作成し、それらにデータを挿入します。CREATE TABLE test1(id int primary key, name text); CREATE TABLE test2(id int primary key, name text); INSERT INTO test1 select t,repeat('test1',1024) from generate_series(1, 10000) as t; INSERT INTO test2 select t,repeat('test2',1024) from generate_series(1, 10000) as t; \dtサンプル結果:
List of relations Schema | Name | Type | Owner --------+-------+-------+---------- public | test1 | table | postgres public | test2 | table | postgres (2 rows)テーブルを削除し、ごみ箱を表示します。
test1およびtest2テーブルを削除します。DROP TABLE test1; DROP TABLE test2; \dtサンプル結果:
Did not find any relations.ごみ箱を表示します。
show recyclebin;サンプル結果:
table_catalog | table_name | table_type ---------------+-----------------------------+------------ postgres | public$test1$69461331094004 | BASE TABLE postgres | public$test2$69461332967609 | BASE TABLE (2 rows)
削除されたテーブルをフラッシュバックします。
削除されたテーブルを復元します。
FLASHBACK TABLE test1 TO BEFORE DROP; FLASHBACK TABLE test2 TO BEFORE DROP RENAME TO test3; \dtサンプル結果:
List of relations Schema | Name | Type | Owner --------+-------+-------+---------- public | test1 | table | postgres public | test3 | table | postgres (2 rows)説明test2テーブルの名前がtest3に変更されました。復元されたデータを表示します。
test1テーブルのデータを表示します。SELECT count(*) FROM test1;サンプル結果:
count ------- 10000 (1 row)test3テーブルのデータを表示します。SELECT count(*) FROM test3;サンプル結果:
count ------- 10000 (1 row)