Artikel ini membawakan anda pengetahuan yang berkaitan tentang Oracle Apabila menggunakan data oracle, saya secara tidak sengaja telah memadamkan data dalam jadual dan menyerahkannya mengenai ralat pemadaman oracle kepada semua orang tentang cara memulihkan data jadual selepas memadamkannya.
Tutorial yang disyorkan: "Tutorial Video Oracle"
Pulihkan berdasarkan masa
Kaedah ini memerlukan kita mengetahui secara kasar masa apabila kenyataan padam dilaksanakan.
Soal masa sistem semasa: select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss’) from dual;
Anggapkan kenyataan padam dilaksanakan pada 2022-04-02 16:27:11 minit delete from demo ;
Pada masa ini, data tidak boleh disoal dalam jadual. Kami tahu masa pelaksanaan padam, tolak ke hadapan 1 minit (masa pelaksanaan padam boleh sebelum, lebih kecil lebih baik, contoh ini mengambil masa 1 minit sebagai contoh), laksanakan pernyataan berikut
select * from DEMO as of timestamp to_timestamp(‘2022-04-02 16:26:11',‘yyyy-mm-dd hh24:mi:ss');
Anda boleh melihat bahawa walaupun tiada data dalam jadual demo semasa, anda boleh menanyakan data daripada jadual demo seminit yang lalu.
Pemulihan 1: Pada masa ini, anda boleh mengeksport fail sql melalui fungsi hasil pertanyaan eksport alat plsql, dan kemudian laksanakan semula pernyataan sisip dalam fail sql untuk pemulihan data.
Pemulihan 2: Jalankan sql berikut untuk pemulihan data:
flashback table DEMO to timestamp to_timestamp(‘2022-04-02 16:26:11',‘yyyy-mm-dd hh24:mi:ss');
Jika ralat ORA-08189 dilaporkan: Fungsi pergerakan baris tidak didayakan dan jadual tidak boleh dipancarkan kembali
kemudian laksanakan:
alter table DEMO enable row movement;
Selepas menambah fungsi pergerakan baris jadual, lakukan pernyataan imbas balik untuk memulihkan
Jika ralat dilaporkan: ORA-08194: Operasi jadual imbas kembali adalah tidak dibenarkan pada paparan terwujud; kemudian lulus kaedah berikut untuk mencipta jadual sementara baharu untuk pemulihan diperkenalkan.
Pulihkan 3 (buat jadual sementara baharu):
Buat jadual demo1 baharu dan masukkan data yang perlu dipulihkan
create table DEMO1 as select * from DEMO as of timestamp to_timestamp(‘2022-04-02 16:30:11',‘yyyy-mm-dd hh24:mi:ss');
Pulihkan data bagi jadual demo1 ke jadual demo
insert into DEMO select * from DEMO1 where not exists (select * from DEMO where DEMO.id=DEMO1.id);
Pulihkan 4 (pulihkan berdasarkan scn):
Soal nombor scn semasa
select current_scn from v$database;
Kurangkan nombor scn dengan jumlah tertentu, Laksanakan penyata sehingga kami dapat melihat data yang kami padamkan
select * from DEMO as of scn 166937913;
Gunakan nombor scn yang sesuai untuk melaksanakan penyata sql untuk pemulihan data
flashback table DEMO to scn 166937913;
Tutorial yang disyorkan: "Tutorial Video Oracle》
Atas ialah kandungan terperinci Bagaimana untuk memulihkan selepas memadam data jadual secara tidak sengaja dalam contoh oracle parsing delete. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!