由于内存配置错误(ORA-00837)无法启动Oracle(11g1)


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类情况下,如果不启动就无法更改内存参数,并且我可以不开始。

有没有办法离线更改这些参数?

Answers:


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
这工作得很好。我需要做的唯一更改是用相关实例的SID替换ORCL。我将memory_target_parameter设置为与memory_max_target-parameter相同的值,这可能不是最佳值,但可以启动。
MaxH

是的,Oracle尝试以spfiles开头的名称是spfileSID.oraand spfile.orainit.ora如果找不到spfiles ,它将尝试从pfile读取。顺便说一下,它MEMORY_MAX_TARGET可能比MEMORY_TARGET无法动态修改的要大很多倍–实例需要退回。
Yasir Arsanukaev 2013年

糟糕,initSID.ora实际上不是init.ora
Yasir Arsanukaev 2013年

1

早期的11gR1版本具有此错误。如果将memory_target设置为2GB(或更高),它们将不会启动。升级到11gR2(或11.1.0.7)或使用“经典” SGA / PGA参数(sga_target,sga_max_size,pga_aggregate_target)。


这与OP注意事项有关的“ ORA-00837:MEMORY_TARGET的指定值大于MEMORY_MAX_TARGET”有什么关系?
Yasir Arsanukaev

1

假设您使用的是Linux OS:您是否检查过/ dev / shm文件系统的大小?该fs的大小必须足够长以适合您的SGA。如果不是,请尝试使用-o size = xxx重新安装。


您是否曾经阅读过OP(ORA-00837)中由Oracle错误号标识的失败原因?
Yasir Arsanukaev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.