-
1. Arti pemulihan
Ketika kita menggunakan database, kita selalu berharap bahwa isi database dapat diandalkan dan benar. Namun, kegagalan sistem komputer (kegagalan perangkat keras, kegagalan jaringan, kegagalan proses, dan kegagalan sistem) mempengaruhi pengoperasian sistem database dan keakuratannya. data dalam database. Secara seksual, bahkan merusak database sehingga menyebabkan seluruh atau sebagian data dalam database hilang. Oleh karena itu, ketika kegagalan di atas terjadi, diharapkan database yang lengkap dapat dibangun kembali. Subsistem pemulihan adalah bagian penting dari sistem manajemen basis data. Proses pemulihan bervariasi tergantung pada struktur yang dipengaruhi oleh jenis kegagalan yang terjadi.
2. Metode pemulihan
Metode IMPOR:
Gunakan IMPOR untuk IMPOR file data terakhir yang diekspor ke database baru. Metode ini dapat memulihkan objek database apa pun ke keadaan saat diekspor, dan perubahan selanjutnya tidak dapat diubah. Perintah IMPORT dapat dijalankan secara interaktif. Untuk mengetahui arti spesifik setiap parameter, lihat penjelasan detail parameter ORACLE EXP/IMP. Metode ini cocok untuk lingkungan yang tidak menggunakan mode arsip.
Metode pemulihan yang aman:
Jika database berjalan dalam mode arsip, setelah database rusak, database dapat dikembalikan ke status breakpoint melalui pencadangan dingin (hot backup) dan pencadangan arsip.
Pemulihan file kontrol basis data (dengan asumsi semua file kontrol dimusnahkan):
Basis data didasarkan pada sistem file: cukup gunakan tar, cp, dan perintah lain dari sistem operasi.
Basis data didasarkan pada perangkat mentah: dd if=$ORACLE_BASE/con.bak of=/dev/rdrd/drd1 seek=12
Pemulihan file data basis data
Pemulihan data dan ruang tabel indeks dan ruang tabel sistem:
Salin kembali file database yang relevan dan semua file log logis yang dihasilkan sejak file data dicadangkan dan jalankan perintah berikut:
svrmgrl > pemasangan startup
svrmgrl > ubah pemulihan basis data secara otomatis
Jika file kontrol rusak, maka: svrmgrl > ubah pemulihan basis data menggunakan konfigurasi cadangan; Masukkan nama file log dan nama file redolog seperti yang diminta.
svrmgrl > ubah database buka resetlog;
Pemulihan file sementara database dan rollback table space: cukup offline dan bangun kembali.
Catatan: Jika database tidak berjalan dalam mode arsip, pemulihan hanya dapat memulihkan ke keadaan cadangan terakhir. Untuk informasi tentang pengaturan mode arsip dan teknologi terkait pencadangan, lihat Teknologi pencadangan database ORACLE.
3. Solusi pemulihan ruang tabel ORACLE
(1) Fenomena kesalahan ruang meja rumah tangga:
ORA-01157, ORA-01110 atau kesalahan tingkat sistem operasi terjadi saat memulai database
Kesalahan seperti ORA-07360, ketika mematikan database (menggunakan shutdown normal atau shutdown langsung) akan mengakibatkan kesalahan ORA-01116, ORA-01110 dan kesalahan tingkat sistem operasi ORA-07368
menyelesaikan:
Ada dua solusi di bawah ini:
Solusi 1: Ruang tabel pengguna dapat dengan mudah dibangun kembali, yaitu objek yang baru diekspor tersedia atau objek di ruang tabel dapat dengan mudah dibangun kembali, dll. Dalam hal ini, cara termudah adalah dengan offline dan menghapus file data, menghapus tablespace dan membangun kembali tablespace dan semua objek.
svrmgrl> pemasangan startup
svrmgrl> mengubah nama file datadatafile offline drop;
svrmrl> mengubah database terbuka;
svrmgrl> drop tablespace tablespace_name termasuk isinya;
Bangun kembali tablespace dan semua objek.
Solusi 2: Ruang tabel pengguna tidak dapat dengan mudah direkonstruksi. Dalam kebanyakan kasus, membangun kembali ruang tabel tidak mungkin dan terlalu sulit. Metodenya adalah dengan membalikkan pencadangan dan melakukan pemulihan media data yang hilang dapat dipulihkan di log ulang online.
Langkah-langkahnya adalah sebagai berikut:
1) Kembalikan file data yang hilang dari cadangan
2)svrmgrl> pemasangan startup
3)svrmgrl> pilih v1.group#,member,sequence#,first_change# dari v$log v1,v$logfile v2 di mana v1.group#=v2.group#;
4) Jika database berjalan dalam mode NOARCHIVELOG: svrmgrl> pilih file#,ubah# dari v$recover_file;
Jika CHANGE# lebih besar dari minimum FIRST_CHANGE# maka file data dapat dipulihkan.
Jika CHANGE# kurang dari minimum FIRST_CHANGE#, file data tidak dapat dipulihkan. Pulihkan cadangan penuh terbaru atau gunakan opsi satu.
5)svrmgrl> memulihkan nama file data;
6) Konfirmasikan pemulihan berhasil
7)svrmgrl> ubah database buka resetlog;
Tidak perlu melakukan pemulihan media untuk ruang tabel read-only, cukup pulihkan cadangannya. Satu-satunya pengecualian adalah:
Ruang tabel diubah ke mode baca-tulis setelah pencadangan terakhir. Ruang tabel diubah ke mode baca-saja setelah pencadangan terakhir.
(2) Ruang tabel sementara Ruang tabel sementara tidak berisi data nyata. Metode pemulihannya adalah dengan menghapus ruang tabel sementara dan membangunnya kembali.
(3) Jika cadangan ruang tabel sistem tidak tersedia, satu-satunya metode adalah membangun kembali database.
(4) Ada dua situasi untuk mengembalikan ruang tabel:
1. Database telah dimatikan sepenuhnya (gunakan perintah shutdown segera atau shutdown)
1) Konfirmasikan bahwa database telah ditutup sepenuhnya
2) Ubah file init.ora dan beri komentar "rollback-segment"
3) svrmgrl> startup membatasi pemasangan
4) svrmgrl> mengubah nama file datadatafile offline drop;
5) svrmgrl> ubah database terbuka;
Berdasarkan hasil yang muncul: “pernyataan diproses” lanjut ke (7); “ORA-00604,ORA-00376,ORA-01110” lanjut ke (6)
6) svrmgrl> matikan segera
Ubah file init.ora dan tambahkan baris berikut: _corrupted_rollback_segments = (<roll1>,...<rolln>)
svrmgrl> batasan startup
7) svrmgrl> drop tablespace tablespace_name termasuk isinya;
8) Membangun kembali ruang tabel dan segmen rollback
9) svrmgrl> ubah sistem menonaktifkan sesi terbatas;
10) Ubah file init.ora
2. Database tidak tertutup sempurna (database crash atau perintah shutdown abort digunakan untuk menutup database)
1) Pulihkan cadangan
2) svrmgrl> pemasangan startup
3) svrmgrl> pilih file#,nama,status dari v$datafile;
svrmgrl> mengubah nama file datadatabase online;
4) svrmgrl> pilih v1.group#,member,sequence#,first_change# dari v$log v1,v$logfile v2 di mana v1.group#=v2.group#;
5) svrmgrl> pilih file#,ubah# dari v$recover_file; #Lihat solusi 2-4
6) svrmgrl> memulihkan nama file datafile;
7) svrmgrl> ubah database terbuka;
3. Basis data terbuka
1) Hapus segmen rollback dan ruang tabel
2) Membangun kembali ruang tabel dan mengembalikan segmen (5), mengontrol pemulihan file
1. Semua file kontrol dimusnahkan. Salin file kontrol cadangan ke direktori asli. Untuk RAW DEVICE (perangkat telanjang), maka: dd if='con.bak' of='/dev/rdrd/drd1' seek=128
2. Tidak semua file kontrol dimusnahkan. Gunakan file kontrol lain untuk memulai database (6), simpan blok data dan data di dalamnya. Fenomena: Kesalahan ORA-01578 terjadi saat menjalankan operasi ORACLE menganggap data Blok mungkin rusak dan mungkin terjadi karena alasan berikut:
Kerusakan perangkat keras atau firmware I/O Sistem operasi I/O atau kegagalan cache Kesalahan pertukaran memori atau halaman Sebagian file data ditimpa Mencoba mengakses disk blok yang belum diformat Perbaikan Penyebab lainnya Langkah-langkah solusi:
Periksa file log dan jejak untuk melihat apakah ada kesalahan atau kesalahan pemosisian lainnya:
sql>pilih * dari v$datafile di mana file#=<F>;
sql>pilih pemilik,nama_segmen,tipe_segmen dari dba_extents di mana file_id=<F> dan <B> antara block_id dan block_id+blocks-1;
Berdasarkan segment_type yang dikembalikan:
Jenis segmen bersifat sementara atau cache atau tidak memiliki nilai kembalian. Periksa apakah pernyataan SQL sudah benar.
Jika tipe segmennya adalah segmen rollback, blok data perlu dipulihkan.
Jenis segmennya adalah indeks, periksa tabel di mana letaknya. Bangun kembali indeksnya.
sql> pilih pemilik,nama_tabel dari dba_tables di mana nama_klaster = nama_segmen
Kesalahan 1578 masih terjadi dan database perlu dipulihkan.
Tipe segmen adalah tabel dan menyimpan data dalam tabel.
Analisis apakah suatu entitas mengalami kerusakan data permanen
sql> menganalisis tabel tabel.nama memvalidasi struktur kaskade;
sql> menganalisis tabel clustername memvalidasi struktur kaskade;
Basis data pemulihan kesalahan perangkat keras berjalan dalam mode ARCHIVE
OFFLINE file data yang sesuai menyalin file data cadangan
ganti nama file data ke lokasi baru
memulihkan file data menggunakan log arsip
Basis data file data online berjalan dalam mode non-ARCHIVE
OFFLINEFile data yang bersangkutan akan menyalin file data yang dicadangkan, mengganti nama file data, dan mengonlinekannya
Simpan data pada tabel, contoh: sql>select * from bigemp;
KESALAHAN: ORA-01578: Blok DATA ORACLE rusak (file#8,blok#8147) ORA-00110: file data 8: '/Oracle/usr714.dbf' … … id file rusak : 8=8(hex) id blok rusak : 8147=1fd3(hex) baris pertama di blok yang rusak: 0000.1fd3.0000.0008 baris terakhir di blok yang rusak: 0000.1fd2.7fff.0008 baris pertama setelah blok ini: 0000.1fd4.0000.0008
sql > buat suhu tabel sebagai pilih * dari bigemp di mana 1=2;
sql > masukkan ke temp pilih * dari bigemp /*+rowid(bigemp) */ di mana rowid >='0000.1fd4.0000.0008';
sql > masukkan ke temp pilih * dari bigemp di mana rowid <='0000.1fd2.7fff.0008';
Dalam versi sebelum ORACLE 7.1, ketika pemindaian rentang baris tidak ada, tujuan yang sama seperti di atas dapat dicapai melalui pengindeksan.
4. Catatan tambahan
Teknologi backup dan recovery ORACLE bisa dikatakan luas dan mendalam. Saya hanya mengetahui sebagian kecil saja, dan tidak terlalu menyeluruh. Saya harap artikel ini dapat bermanfaat bagi semua orang. Anda juga dipersilakan untuk berbagi pengalaman Anda dengan backup dan pemulihan. Ceritakan masalahnya, saya akan mengaturnya dan menerbitkannya di sini untuk referensi semua teman DBA dan administrator data yang tertarik melakukannya. Mungkin usaha kecil Anda akan menyelamatkan perusahaan!
Pada saat yang sama, saya ingin mengingatkan teman-teman semua bahwa backup itu sangat, sangat, sangat, sangat, sangat, sangat, sangat, sangat, sangat penting. . . Yang penting, jika memungkinkan, Anda harus menggunakan mode ARCHIVE, jika tidak, mungkin terjadi kesalahan dan Anda bahkan tidak akan bisa menangis.