Metode Shutdown Oracle

9

Mematikan basis data sebelum melakukan peningkatan atau perbaikan dapat dilakukan dengan beberapa cara.

shutdown immediate;

atau

shutdown abort;
startup restrict;
shutdown immediate;

atau

shutdown abort;
startup restrict;
shutdown;

atau

alter system checkpoint;
shutdown abort;
startup restrict;
shutdown immediate;

Tentu saja ada opsi lain juga. Yang mana yang lebih disukai dan mengapa?

Leigh Riffel
sumber

Jawaban:

12

Tujuan ketika mematikan untuk pemeliharaan (atau cadangan dingin) adalah bahwa database dibiarkan dalam kondisi yang konsisten tanpa perlu rollback / pemulihan pada saat startup.

Ada 3 shutdownperintah SQL * Plus yang mencapai ini dalam teori, yang semuanya segera mencegah sesi baru yang terhubung ke instance:

  1. shutdown normalatau hanya shutdown: menunggu semua sesi terputus. Mode ini jarang digunakan dalam praktik karena bergantung pada klien yang berperilaku baik dan tidak membiarkan koneksi terbuka. Ini dulunya satu-satunya shutdownmode yang tidak membatalkan transaksi berjalan.
  2. shutdown transactional: memutus sesi setelah transaksi berjalan saat ini selesai, mencegah transaksi baru dari awal.
  3. shutdown immediate: memutus semua sesi dengan segera dan memutar kembali transaksi yang terputus sebelum ditutup. Perhatikan bahwa pemutusan hubungan langsung, tetapi shutdown mungkin tidak terjadi karena setiap transaksi yang terputus mungkin memerlukan waktu untuk mundur.

Mode keempat shutdownadalah shutdown abort. Ini seperti menarik kabel listrik - mesin berhenti sekarang tanpa pembersihan. Anda biasanya ingin memunculkan database lagi setelah itu dan mematikannya segera setelahnya seperti pada contoh Anda. Panduan konsep mengatakan :

Mode ini ditujukan untuk situasi darurat, seperti ketika tidak ada bentuk shutdown lain yang berhasil.

Semua contoh yang Anda berikan melakukan pos pemeriksaan sebagai bagian dari pos pemeriksaan eksplisit shutdown [normal]atau shutdown immediatelebih mungkin untuk mengurangi waktu yang diperlukan untuk pemulihan .

saran umum:

  • Jangan gunakan shutdown normal.
  • Gunakan hanya shutdown transactional untuk shutdown yang dihadiri , ketika Anda ingin meminimalkan transaksi yang dibatalkan (dihadiri hanya karena shutdown semacam ini tidak dijamin untuk menutup database sama sekali jika timeout dilanggar).
  • Gunakan shutdown immediateuntuk mematikan tanpa pengawasan atau ketika Anda tidak peduli tentang transaksi yang sedang berjalan.
  • Jangan gunakan shutdown abort(plus startup / shutdown) kecuali Anda harus - ini lebih umum di banyak versi Oracle sebelumnya seperti sekarang ini. Dalam situasi lain (bukan tambalan / peningkatan), jika Anda perlu meminimalkan waktu henti , mode ini mungkin sesuai.
Jack mengatakan coba topanswers.xyz
sumber
Bisakah Anda memberikan lebih spesifik tentang kerugian shutdown abort? Bermain antagonis, jika kita bisa memercayai Oracle untuk pulih dengan benar ketika daya ditarik, bukankah seharusnya kita memercayainya selama shutdown abort, terutama jika lebih cepat dan kita akan segera melakukan startup restrictdan shutdown immediate? Dengan kata lain, adakah fakta yang bisa kita lihat untuk mendukung peringatan mengerikan Oracle shutdown abort?
Leigh Riffel
@Leigh - Satu-satunya bahaya spesifik yang saya ketahui shutdown abortterkait dengan cadangan log online yang tidak disengaja tetapi itu hanya dalam kasus Anda tidak melakukan shutdown bersih. Jika Anda tahu apa yang Anda lakukan, saya pikir shutdown abortdapat dianggap sangat aman - dan saya tidak yakin apakah posisi Oracle dianggap sebagai "peringatan mengerikan" ;-)
Jack mengatakan coba topanswers.xyz
3

Saya lebih suka metode shutdown abort karena ini adalah cara tercepat untuk menurunkan database. ada beberapa operasi yang tidak dapat dilakukan setelah penutupan mati, misalnya

  • buat kembali controlfile database dengan membuat controlfile resetlogs (untuk mengubah nama database, untuk mengubah namafile logfile untuk mengubah namafile data)
  • ubah dbid dengan prosedur dari dbms_backup_restore (ini adalah satu-satunya metode dalam 8i untuk mengubah dbid)

dalam kedua kasus database rusak dan harus dikembalikan dari fullbackup.

karena 9i perubahan nama database atau perubahan dbid dapat dilakukan dengan utilitas dbnewid . Sejauh yang saya tahu utilitas memeriksa apakah database dimatikan dengan benar. mengganti nama datafile, tempfile, dan logfile dapat dilakukan dengan mengeksekusi pernyataan sql yang sesuai tanpa membuat ulang file kontrol tentunya.

keajaiban173
sumber