• ORA27102: out of memory


    http://technet.microsoft.com/zh-cn/library/bb124810(EXCHG.65).aspx

    Windows Server 2003 包括对启动开关的支持,这样,您便可以调整内存使用和内存地址空间的分配。无论系统的物理内存量是多少,Windows 都使用 4 GB 的虚拟地址空间,其中 2 GB 分配给用户模式进程(例如应用程序),另外 2 GB 分配给内核模式进程(例如操作系统和内核模式驱动程序)。在物理内存等于或大于 1 GB 的系统中,可以使用上述两个启动开关,为应用程序分配较多内存 (3 GB),为操作系统分配较少内存 (1 GB)。额外的虚拟地址空间有助于减少在 Exchange 信息存储进程的虚拟地址空间中产生的内存碎片数量。

    /3GB 开关可用于实现这种分配更改。此开关是在系统的 boot.ini 文件中输入的,并在重新启动后生效。

    在执行本主题中的步骤之前,请注意下列事项:

    只有在下列操作系统中才支持 /3GB 开关:

    • Windows 2000 Advanced Server
    • Windows 2000 Datacenter Server
    • Windows Server 2003 标准版
    • Windows Server 2003 企业版
    • Windows Server 2003 Datacenter 版
    Bb124810.note(zh-cn,EXCHG.65).gif重要信息:
    在 Windows 2000 Server 中不应该使用 /3GB 开关,因为它不受支持,并会导致应用程序或操作系统崩溃。

    1. 用鼠标右键单击“我的电脑”,再选择“属性”。将出现“系统属性”对话框。

    2. 单击“高级”选项卡。

    3. 在“启动和故障恢复”区域中,单击“设置”。将出现“启动和故障恢复”对话框。

    4. 在“系统启动”区域中,单击“编辑”。这将在记事本中打开 Windows boot.ini 文件。

    5. [Operating Systems] 部分中,将以下开关添加到包含 /fastdetect 开关的启动命令行结尾: /3GB

    6. 保存更改,关闭记事本。

    7. 单击“确定”两次,关闭打开的对话框,然后重新启动计算机以使更改生效。

    1. 在 Windows 资源管理器中,导航到系统分区。该分区存储硬件特定的 Windows 文件,例如 Boot.ini 和 NTLDR。

    2. 如果看不到 Boot.ini 文件,可能是因为文件夹选项设置为隐藏受保护的操作系统文件。如果是这种情况,在资源管理器窗口中,依次单击“工具”、“文件夹选项”和“查看”。清除“隐藏受保护的操作系统文件(推荐)”复选框。系统提示时,单击“是”

    3. 可以在资源管理器中看到 Boot.ini 文件之后,用鼠标右键单击该文件,再单击“打开方式”,然后单击“记事本”打开该文件。

    4. 将 /3GB 开关添加到 [Operating Systems] 部分中以“multi”开头的行的结尾。

    5. 保存更改,关闭记事本。

    6. 重新启动计算机,以便使更改生效。

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

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

    问题是怎么出现的,

    首先在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’;

    重启服务,即可。

  • 相关阅读:
    计算机视觉的常用测试数据集和源码
    Demo:基于 Flink SQL 构建流式应用
    102万行代码,1270 个问题,Flink 新版发布了什么?
    bilibili 实时平台的架构与实践
    阿里云2020上云采购季来啦!降本增效1亿补贴!
    阿里云助力宁波市教育局“甬上云校”停课不停学
    Quick BI新版本功能解读系列之-V3.5
    百万TPS高吞吐、秒级低延迟,阿里​搜索离线平台如何实现?
    五分钟学会使用 go modules(含在家办公使用技巧)
    OAM 深入解读:OAM 为云原生应用带来哪些价值?
  • 原文地址:https://www.cnblogs.com/ceci/p/2012995.html
Copyright © 2020-2023  润新知