`
netfork
  • 浏览: 494822 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

转载 ORA-27102: out of memory 解决实例

    博客分类:
  • DB
阅读更多

 



原贴地址:


最开始一次给客户做优化设置的时候,出现过一个这样的错,那时候没有经验,数据库怎么都起不来,自己吓得不行了,回来幸好找到一个有经验的前辈,才得以解决。

时间几年过去了,再也没有发生,这几天忽然想起一起那次的事,不由的想把当时的情况模拟出来,自己来处理一次叻。

问题是怎么出现的,

首先在32位机器上,配置sga的内存超过1.5G,基本上就出现这个问题叻

这里还有一点要知道,sga_max_size可以自动来变动的,当sga的内存组件的和小于sga_max_size的时候,sga_max_size不会改变,还是维持自己的值,如果超过了这个和,sga_max_size的就会自动变动成和的值,这个你可以自己试试。

看看我的内存情况

Total System Global Area 965812724 bytes

Fixed Size 455156 bytes

Variable Size 251658240 bytes

Database Buffers 713031680 bytes

Redo Buffers 667648 bytes

这是我的windowxp上的实例,

我现在想调整database buffer的值到1G,我只需要设置db_cache_size到1G,而不设置sga_max_size,这时由于各组件值大于sga_max_size目前值,所以sga_max_size自动变化。

SQL>alter system set db_cache_size=1000M scope=spfile;

SQL> shutdown immediate;

SQL> startup;

看看现在的内存信息

Total System Global Area 1301357848 bytes

Fixed Size 455960 bytes

Variable Size 251658240 bytes

Database Buffers 1048576000 bytes

Redo Buffers 667648 bytes

发现sga_max_size已经自动变化

SQL> show parameters sga_

NAME TYPE VALUE

———————————— ——————————— ———

sga_max_size big integer 130135784

也已经变化叻。

 

现在模拟我们的问题吧

不过模拟前,先把我们的init.Ora备份一下,不备份init.Ora当然也不可以不过,等下恢复设置的东西太多,麻烦。

先把我们调整内存钱的parameter备份一下吧

SQL>create pfile=’F:\Synchrophy\Server\oracle\admin\ORA9i\pfile\init.bak.ora’ from spfile;

这句话就是把你的spfile备份到pfile文件里,由于spfile是二进制的文件,不好修改,所以我们一般用这样的形式来备份。

备份好。我们可以放心的改我们的内存叻

SQL> alter system set db_cache_size=1500M scope=spfile;

SQL> shutdown immediate;

SQL> startup;

现在问题出现了吧

一起看看

ORA-27102: out of memory

OSD-00022: Message 22 not found; product=RDBMS; facility=SOSD

O/S-Error: (OS Not enough storage is available to process this command.

为什么会出现这样的问题叻,是因为在32位的机器上Oracle的内存有限制,内存最大4G,32位留50%给操作系统,window是单线程的,不能超过1.7G。out of memory也就出来叻。

那么碰到这个问题我们如何解决了。如果了解Oracle的init的启动的话,做这个恢复就比较简单了,默认oralce是从spfile先启动的,

你可以这样查到路径

SQL> show parameter pfile

 

NAME TYPE VALUE

———————————— ———– ——————————

spfile string %ORACLE_HOME%\DATABASE\SPFILE%

  ORACLE_SID%.ORA

所以你先在可以通过修改这个文件里的相关参数的值来恢复,不过修复的时候注意,这是个二进制文件,要保持二进制的格式。

还有方法用我们刚才的pfile来恢复。

SQL>startup pfile=’你备份的init.ora’;

如果在window下,需要

SQL>create spfile from pfile=’你备份的init.ora’;

重启服务,即可。


那个时候,在网上看到有人提到这样的问题,但是没有说到过解决方法的,这是自己后来了解到init的方式以后,自己试验出来的,和大家一起分享一下。

在附上一个方法,如果当时忘记备份spfile文件叻,可以用以下方法
删除%ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA文件,然后启动的时候就会去找$ORACLE_BASE/admin/pfile/init.ora或者$ORACLE_BASE/admin/pfile/init$SID.ora,这两个文件是pfile文件,是文本的,你可以直接修改里面的值,然后重启数据库。

记住作为DBA,在做任何修改前,一定要先备份相关文件哟。至少可以恢复到出错时的状态。用这个方法的时候,也注意要先备份一下哟。


====================================================================================





分享到:
评论

相关推荐

    oracle报错大全(珍藏版)

    #### ORA-00067: Value Out of Range 指定的值超出有效范围。这可能是由于参数设置超出允许范围或格式错误。 #### ORA-00068: Value Out of Range 指定的值超出有效范围。这可能是由于参数设置超出允许范围或格式...

    oracle错误代码大全

    #### ORA-00018: Instance number out of range - **解释**: 当指定的实例号超出范围时发生。 - **解决方案**: 确认实例号正确无误。 #### ORA-00019: Invalid instance name - **解释**: 指定的实例名称无效。 -...

    oracle 错误一览表

    #### ORA-00036: Database block size out of range - **描述**:数据库块大小超出范围。 - **解决方法**:将 DB_BLOCK_SIZE 设置为允许的范围内。 #### ORA-00037: Cannot switch between different tablespaces -...

    Oracle 错误大全

    ##### ORA-00017: Out of Memory - **描述**:Oracle分配内存时出现问题。 - **解决方法**: - 增加系统内存。 - 调整Oracle参数如`SGA_MAX_SIZE`等。 - 检查是否有内存泄露的情况发生。 ##### ORA-00018: ...

    Oracle错误一览表

    #### ORA-00067: Value out of acceptable range 当提供的参数值超出可接受范围时,会抛出此错误。这可能是由于输入错误或程序错误引起的,需要检查输入数据的正确性。 #### ORA-00076: Data type conversion ...

    oracle错误编码一览

    ### ORA-00094: Value out of range 当提供的值超出有效范围时,将触发此错误。这可能出现在数字字段的输入超出其允许的最大或最小值,或者日期字段的输入不符合有效日期格式。解决策略可能包括验证所有输入数据的...

    32位Windows上使用超过1.7GB SGA的方法

    当尝试将SGA设置得高于1.7GB时,Oracle会抛出ORA-27102(out of memory)错误。然而,在某些场景下,为了提高数据库性能,可能需要突破这一限制。 #### 技术实现方法 要使32位Windows系统支持超过1.7GB的SGA,需要...

    linux下oracle10g的安装

    2. **创建数据库过程中,出现 ORA-27102 out of memory 错误**:这表明系统内存不足。检查`/etc/security/limits.conf`中的内存限制,可能需要增加`memlock`和`as`值。 3. **如何启动Oracle服务**:可以使用`...

Global site tag (gtag.js) - Google Analytics