Невозможно запустить Oracle (11g1) из-за неправильной конфигурации памяти (ORA-00837)


8

Я решил уменьшить выделение памяти для экземпляра локального разработчика, и мне сказали, что следующая команда справилась со своей задачей;

alter system set memory_max_target = 512M scope = spfile;

Как я полагаю, так и было, поскольку я больше не могу запускать рассматриваемый экземпляр Oracle. Это ошибка, которую я получаю, когда пытаюсь подключиться не как пользователь DBA;

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

При подключении как SYSDBA я получаю следующее;

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

(«Подключен к неактивному экземпляру.» - это мой перевод локализованного сообщения об ошибке, может быть не совсем корректным). Итак, я нахожусь в ситуации с ловушкой 22, я не могу изменить параметры памяти без запуска и могу не пускай

Есть ли способ изменить эти параметры в автономном режиме?

Ответы:


9

Если вы запускаете свой экземпляр с помощью файла параметров сервера (двоичная версия файла параметров инициализации, spfile), вы можете извлечь параметры инициализации в файл параметров инициализации в виде простого текста (pfile), изменить их, а затем запустить свой экземпляр с измененной памятью. параметры.

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

Измените параметры, связанные с памятью, myinit.oraи запустите свой экземпляр, используя эту новую конфигурацию:

sql> startup pfile='myinit.ora';

Затем вы можете сохранить ваши настройки обратно в spfile с помощью следующей команды:

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

И запустите вашу базу данных как обычно:

sql> startup;

1
Это сработало отлично. Единственное изменение, которое мне нужно было сделать на моей стороне, было заменить ORCL на SID рассматриваемого экземпляра. Я установил для параметра memory_target то же значение, что и для параметра memory_max_target, который может быть неоптимальным, но он позволил начать.
MaxH

Да, имена spfiles, которые Oracle пытается начать с, - это, spfileSID.oraа spfile.oraзатем он пытается прочитать из pfile, init.oraесли spfiles не найден. Кстати, MEMORY_MAX_TARGETвполне может быть во много раз больше, чем, MEMORY_TARGETхотя он не может быть изменен динамически - экземпляр должен быть отклонен.
Ясир Арсанукаев

Ой, на initSID.oraсамом деле это не так init.ora.
Ясир Арсанукаев

1

В ранних выпусках 11gR1 есть эта ошибка. Они не запустятся, если для memory_target было установлено 2 ГБ (и более). Либо обновите до 11gR2 (или 11.1.0.7), либо используйте «классические» параметры SGA / PGA (sga_target, sga_max_size, pga_aggregate_target).


Как это связано с "ORA-00837: указанное значение MEMORY_TARGET больше, чем MEMORY_MAX_TARGET", о котором отмечает OP?
Ясир Арсанукаев

1

Предполагая, что вы используете ОС Linux: вы проверили размер файловой системы / dev / shm? Размер этого fs должен быть достаточно длинным, чтобы соответствовать вашему SGA. Если нет, попробуйте перемонтировать с '-o size = xxx'.


Читали ли вы когда-нибудь причину сбоя, который определяется по номеру ошибки Oracle в OP (ORA-00837)?
Ясир Арсанукаев
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.