PolarDB for PostgreSQL (Kompatibel dengan Oracle) tidak menyediakan log undo. Operasi yang tidak disengaja dapat mengakibatkan kehilangan data, seperti saat menjalankan pernyataan DROP TABLE. Fitur drop flashback pada PolarDB for PostgreSQL (Kompatibel dengan Oracle) memungkinkan Anda untuk dengan cepat mengembalikan tabel yang dihapus, melihat tempat sampah, serta membersihkannya guna memulihkan data.
Tindakan Pencegahan
- Aktifkan fitur drop flashback saat menghapus tabel penting dan lakukan operasi rutin dengan hati-hati.
- Saat fitur drop flashback diaktifkan, tabel yang dihapus dipindahkan ke mode tempat sampah. Tabel tersebut tidak benar-benar dihapus sehingga ruang disk tetap terpakai. Kami menyarankan Anda untuk membersihkan tempat sampah secara berkala agar tidak menghabiskan ruang disk dalam jumlah besar.
- Upaya untuk menghapus dependensi dari tabel yang dihapus mungkin gagal karena tabel tersebut sebenarnya belum dihapus dan masih menggunakan dependensi tersebut.
- Tabel yang dihapus dipindahkan ke mode recyclebin. Hindari membuat mode dengan nama recyclebinrecyclebin, karena tabel dalam mode ini akan dibersihkan oleh pernyataan
purge recyclebin. - Saat fitur drop flashback diaktifkan, beberapa operasi tidak didukung:
- Tabel partisi dan tabel sementara yang dihapus tidak dapat dikembalikan karena mereka benar-benar dihapus dan tidak dapat dipulihkan.
- Pemicu acara
sql_droptidak didukung.
Parameter
| Parameter | Tipe Data | Deskripsi |
| polar_enable_flashback_drop | BOOL | Menentukan apakah akan mengaktifkan fitur drop flashback. Nilai default: OFF. Nilai valid:
|
Sintaksis
Fitur drop flashback mendukung pernyataan SQL berikut:
- Delete a policy
drop table table_name; # Pindahkan tabel ke ruang yang berjalan dalam mode tempat sampah. drop table table_name purge; # Hapus tabel, yang tidak dapat dipulihkan. - Restore a deleted table
flashback table table_name to before drop; # Kembalikan tabel yang dihapus (tabel terbaru dikembalikan jika tabel memiliki nama yang sama dengan tabel lain). flashback table table_name to before drop rename to table_name_1; # Kembalikan dan ubah nama tabel yang dihapus. - Permanently delete files from the recycle bin
purge table table_name;Catatan Tabel tertua akan dihapus jika memiliki nama yang sama dengan tabel lain. - Clear the recycle bin
purge recyclebin;Catatan Izin polar_super_user diperlukan untuk membersihkan tempat sampah. - View recycle bin information
show recyclebin;
Contoh
- Persiapkan data untuk pengujian:
Buat tabel
test1dan tabeltest2, lalu masukkan data ke dalamnya.
Output serupa ditampilkan: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; \dtDaftar relasi Skema | Nama | Tipe | Pemilik --------+-------+-------+---------- public | test1 | tabel | postgres public | test2 | tabel | postgres (2 baris) - Hapus tabel dan lihat tempat sampah.
- Hapus tabel
test1dantest2.
Output serupa ditampilkan:DROP TABLE test1; DROP TABLE test2; \dtTidak menemukan relasi apa pun. - Lihat tempat sampah.
Output serupa ditampilkan:show recyclebin;katalog_tabel | nama_tabel | tipe_tabel ---------------+-----------------------------+------------ postgres | public$test1$69461331094004 | TABEL DASAR postgres | public$test2$69461332967609 | TABEL DASAR (2 baris)
- Hapus tabel
- Kembalikan tabel yang dihapus:
- Kembalikan tabel yang dihapus.
Output serupa ditampilkan:FLASHBACK TABLE test1 TO BEFORE DROP; FLASHBACK TABLE test2 TO BEFORE DROP RENAME TO test3; \dtDaftar relasi Skema | Nama | Tipe | Pemilik --------+-------+-------+---------- public | test1 | tabel | postgres public | test3 | tabel | postgres (2 baris)Catatan Tabeltest2diubah namanya menjaditest3. - Lihat data yang telah dipulihkan.Lihat data dalam tabel
test1.
Output serupa ditampilkan:SELECT count(*) FROM test1;jumlah ------- 10000 (1 baris)Lihat data dalam tabeltest3.
Output serupa ditampilkan:SELECT count(*) FROM test3;jumlah ------- 10000 (1 baris)
- Kembalikan tabel yang dihapus.