Tidak dapat memulai Oracle (11g1) karena konfigurasi memori yang buruk (ORA-00837)

8

Saya memutuskan untuk mengurangi alokasi memori instance pengembang lokal, dan diberi tahu bahwa perintah berikut melakukan pekerjaan;

alter system set memory_max_target = 512M scope = spfile;

Yang saya kira itu terjadi, karena saya tidak lagi dapat memulai contoh Oracle yang bersangkutan. Ini adalah kesalahan yang saya dapatkan ketika mencoba terhubung sebagai pengguna non-DBA;

ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

Saat menghubungkan sebagai SYSDBA saya mendapatkan yang berikut;

Connected to an inactive instance.
SQL>startup nomount;
ORA-00837: Specified value of MEMORY_TARGET greater than MEMORY_MAX_TARGET
SQL>alter system set memory_max_target = 2G scope = spfile;
ORA-01034: ORACLE not available

("Terhubung ke instance yang tidak aktif." Adalah terjemahan saya dari pesan kesalahan yang dilokalkan, mungkin tidak sepenuhnya benar) Jadi, saya dalam situasi tangkapan 22, saya tidak dapat mengubah parameter memori tanpa memulai, dan saya bisa mulai.

Apakah ada cara untuk mengubah parameter ini secara offline?

MaxH
sumber

Jawaban:

9

Jika Anda memulai instance Anda menggunakan file parameter server (versi biner dari file parameter inisialisasi, spfile), Anda dapat mengekstrak parameter inisialisasi ke file parameter inisialisasi teks biasa (pfile), mengubahnya, dan kemudian mulai instance Anda dengan memori yang dimodifikasi parameter.

sql> create pfile='myinit.ora' from spfile='spfileORCL.ora';

Ubah parameter yang terkait dengan memori Anda myinit.oradan mulai instans Anda menggunakan konfigurasi baru ini:

sql> startup pfile='myinit.ora';

Anda kemudian dapat menyimpan pengaturan Anda kembali ke spfile dengan perintah berikut:

sql> create spfile='spfileORCL.ora' from pfile='myinit.ora';

Dan mulai database Anda seperti biasa:

sql> startup;
Yasir Arsanukaev
sumber
1
Ini bekerja dengan sempurna. Satu-satunya perubahan yang perlu saya lakukan di pihak saya adalah mengganti ORCL dengan SID dari instance yang dimaksud. Saya mengatur memory_target-parameter ke nilai yang sama dengan memory_max_target-parameter, yang mungkin tidak optimal, tetapi memungkinkan untuk memulai.
Maks
Yap, nama-nama dari spfiles yang dicoba untuk dimulai oleh Oracle adalah , spfileSID.oradan spfile.orakemudian mencoba untuk membaca dari pfile init.orajika tidak ada spfiles yang ditemukan. Ngomong-ngomong MEMORY_MAX_TARGETmungkin bisa berkali-kali lebih besar daripada MEMORY_TARGETmeskipun tidak bisa dimodifikasi secara dinamis - instance harus dipantulkan.
Yasir Arsanukaev
Ups, initSID.orasebenarnya, bukan init.ora.
Yasir Arsanukaev
1

Rilis 11gR1 awal memiliki bug ini. Mereka tidak akan memulai jika memory_target diatur ke 2GB (dan banyak lagi). Tingkatkan ke 11gR2 (atau 11.1.0.7) atau gunakan parameter SGA / PGA "klasik" (sga_target, sga_max_size, pga_aggregate_target).

ibre5041
sumber
Bagaimana ini terkait dengan "ORA-00837: Nilai spesifik MEMORY_TARGET lebih besar dari MEMORY_MAX_TARGET" yang dicatat OP?
Yasir Arsanukaev
1

Dengan asumsi Anda menggunakan OS linux: apakah Anda sudah memeriksa ukuran sistem file / dev / shm? Ukuran fs ini harus cukup panjang agar sesuai dengan SGA Anda. Jika tidak, coba remounting dengan '-o size = xxx'.

pengguna22020
sumber
Apakah Anda pernah membaca penyebab kegagalan yang diidentifikasi oleh nomor kesalahan Oracle di OP (ORA-00837)?
Yasir Arsanukaev