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

(ORA-04031)-Oracle内存过少导致分配共享内存失败

原创 huawei 2021-03-02
2990

(ORA-04031)-Oracle内存过少导致分配共享内存失败

现象描述

Oracle分配共享内存失败,Alert日志显示如下错误信息。
Errors in file /oracle/db/diag/rdbms/ora01/ora01/trace/ora01_reco_233670.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-04031: unable to allocate 4064 bytes of shared memory ("shared pool","select local_tran_id, global...","sga heap(1,0)","kglsim heap")
Sat Jan 15 09:53:11 2011
DDE: Problem Key 'ORA 4031' was completely flood controlled (0x6)
Further messages for this problem key will be suppressed for up to 10 minutes
Sat Jan 15 10:03:11 2011
DDE: Problem Key 'ORA 4031' was completely flood controlled (0x6)
Further messages for this problem key will be suppressed for up to 10 minutes
Sat Jan 15 10:13:11 2011
DDE: Problem Key 'ORA 4031' was completely flood controlled (0x4)
Further messages for this problem key will be suppressed for up to 10 minutes
复制
说明:
Alert日志文件目录为“/$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace/alert__<ORACLE_SID>.log”

可能原因

Oracle设置的数据库内存值过少,导致分配内存失败。

定位思路

检查Oracle内存控制参数配置。

SQL>show parameter memory

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address             integer     0
memory_max_target                    big integer 1000M
memory_target                        big integer 1000M
shared_memory_address                integer     0
复制
如上所示,Oracle数据库内存配置值过少,只有1GB。

处理步骤

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

    % sqlplus / as sysdba

  3. 修改“memory_max_target”的值。

    请根据实际情况修改。

    SQL> alter system set memory_max_target=2147483648scope=spfile;

    如上所示,将“memory_max_target”值修改为2GB。

  4. 修改“memory_target”的值。

    SQL> alter system set memory_target=1610612736scope=spfile;

  5. 重新启动数据库。

    SQL> shutdown immediate

    SQL> startup

  6. 检查数据库运行状态。

    SQL> select status from v$instance;

    系统显示如下信息:
    STATUS
    ------------
    OPEN
    复制

    SQL> select open_mode from v$database;

    数据库运行正常,系统显示如下信息:
    OPEN_MODE
    ----------
    READ WRITE
    复制
  7. 检查数据库内存控制参数配置。

    SQL>show parameter memory

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

评论