暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

(ORA-01034、ORA-27102)-系统内存小于Oracle参数配置的memory_target值

原创 huawei 2021-03-02
2671

(ORA-01034、ORA-27102)-系统内存小于Oracle参数配置的memory_target值

现象描述

登录数据库失败,系统显示如下错误信息:
SQL*Plus: Release 11.1.0.6.0 - Production on Mon Aug 3 11:40:38 2009
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
ERROR:
ORA-01034: ORACLE not available
ORA-27102: out of memory
Linux-x86_64 Error: 12: Cannot allocate memory
Additional information: 1
Additional information: 12713986
Additional information: 8
Process ID: 0
Session ID: 0 Serial number: 0
复制

可能原因

错误信息提示Oracle无法获取内存。原因是系统内存小于Oracle参数配置的“memory_target”值。

定位思路

  1. 查看系统内存使用情况。

    % free -l

    系统显示内存使用信息如下:
                 total       used       free     shared    buffers     cached
    Mem:       8062444    7838364     224080          0     139428    5851104
    Low:       8062444    7838364     224080
    High:            0          0          0
    -/+ buffers/cache:    1847832    6214612
    Swap:      8393920      11084    8382836
    
    复制

    由查询结果可知,系统显示内存为224080KB,说明可用内存充足。

  2. 检查参数配置文件“spfile<sid>.ora”中的“memory_target”值。

    % cat $ORACLE_HOME/dbs/spfile<sid>.ora

    系统显示文件信息如下:
    ......
    *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
    *.memory_target=3300917248
    *.open_cursors=300
    *.processes=150
    ........
    复制

    由查询结果可知,Oracle参数配置的“memory_target”值为3300917248byte,大于系统的可用内存,导致登录失败。

处理步骤

  1. oracle用户登录数据库所在机器。
  2. sysdba用户连接数据库。

    % sqlplus / as sysdba

  3. 通过spfile文件创建pfile文件。

    SQL> create pfile='$ORACLE_HOME/dbs/new_pfile_ora' from spfile;

  4. 退出sqlplus。

    SQL> quit

  5. 修改3创建的pfile文件中的“memory_target”参数值。

    % vi $ORACLE_HOME/dbs/new_pfile_ora

    .....
    *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
    *.memory_target=2000917248
    *.open_cursors=300
    .......
    复制
    “memory_target”修改为小于系统可用内存的值。
  6. 重新以sysdba用户连接数据库。

    % sqlplus / as sysdba

  7. 重新生成spfile文件。

    SQL> create spfile from pfile='$ORACLE_HOME/dbs/new_pfile_ora';

  8. 关闭数据库。

    SQL> shutdown immediate

  9. 重新启动数据库。

    SQL> startup

  10. 退出。

    SQL> quit

  11. 重新使用SQLPLUS连接数据库。

    % sqlplus / as sysdba

    连接数据库成功,系统显示如下信息:
    SQL*Plus: Release 11.1.0.7.0 - Production on Wed Aug 24 07:28:54 2011
    
    Copyright (c) 1982, 2008, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
    With the Partitioning, Oracle Label Security, OLAP, Data Mining,
    Oracle Database Vault and Real Application Testing options
    复制

    如果问题没有解决,请联系华为技术工程师。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论