Gathering Initial Troubleshooting Information for Analysis of ORA-4031 Errors on the Shared Pool

In this Document

 Purpose
 Troubleshooting Steps
 References

APPLIES TO:

Oracle Database - Enterprise Edition - Version 8.0.6.3 and later
Information in this document applies to any platform.

PURPOSE

The purpose of this document is to provide some steps to take to gather some essential information necessary for initial analysis of ORA-4031 errors on the shared pool. For more detailed information gathering, please refer to MOS Document 430473.1.

Note: this document only applies to ORA-4031 errors generated on the shared pool. For ORA-4031 errors on the large pool, please review MOS Document  1674933.1. For ORA-4031 errors on the Java and Streams pools, please review MOS Document  1675450.1.

TROUBLESHOOTING STEPS

Review MOS Document 1674117.1 on what information is to be gathered for analysis of an ORA-4031 issue, why this information is necessary, and how to obtain it.

At least the following pieces of information should be collected to be able to start analysis of the ORA-4031 issue:

  1. For Oracle10g and lower releases, obtain the trace file of the very first ORA-4031 occurrence reported after the last instance startup. For Oracle11g and higher release, obtain the incident package (see MOS Document 443529.1) of the very first ORA-4031 incident reported after the last instance startup.

  2. Obtain the RDA report (see MOS Document 314422.1 for details of installing & running RDA. RDA can be included in incident packages by default in 11.2.0.2 onwards by following the instructions in MOS Document 1456047.1).

  3. Obtain the current memory allocations in the shared pool:
        CONNECT / AS SYSDBA

        SET PAGESIZE 9999
        SET LINESIZE 256
        SET TRIMOUT ON
        SET TRIMSPOOL ON
        COL 'Total Shared Pool Usage' FORMAT 99999999999999999999999
        COL bytes FORMAT 999999999999999
        COL current_size FORMAT 999999999999999
        COL name FORMAT A40
        COL value FORMAT A20
        ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';

        SPOOL SGAPARAMS.TXT

        /* Database identification */
        SELECT name, platform_id, database_role FROM v$database;
        SELECT * FROM v$version WHERE banner LIKE 'Oracle Database%';

        /* Current instance parameter values */
        SELECT n.ksppinm name, v.KSPPSTVL value
        FROM x$ksppi n, x$ksppsv v
        WHERE n.indx = v.indx
        AND (n.ksppinm LIKE '%shared_pool%' OR n.ksppinm IN ('_kghdsidx_count', '_ksmg_granule_size', '_memory_imm_mode_without_autosga'))
        ORDER BY 1;

        /* Current memory settings */
        SELECT component, current_size FROM v$sga_dynamic_components;

        /* Memory resizing operations */
        SELECT start_time, end_time, component, oper_type, oper_mode, initial_size, target_size, final_size, status 
        FROM v$sga_resize_ops
        ORDER BY 1, 2;

        /* Historical memory resizing operations */
        SELECT start_time, end_time, component, oper_type, oper_mode, initial_size, target_size, final_size, status 
        FROM dba_hist_memory_resize_ops
        ORDER BY 1, 2;

        /*  Shared pool 4031 information */
        SELECT request_failures, last_failure_size FROM v$shared_pool_reserved;

        /* Shared pool reserved 4031 information */
        SELECT requests, request_misses, free_space, avg_free_size, free_count, max_free_size FROM v$shared_pool_reserved;

        /* Shared pool memory allocations by size */
        SELECT name, bytes FROM v$sgastat WHERE pool = 'shared pool' AND (bytes > 999999 OR name = 'free memory') ORDER BY bytes DESC;

        /* Total shared pool usage */
        SELECT SUM(bytes) "Total Shared Pool Usage" FROM v$sgastat WHERE pool = 'shared pool' AND name != 'free memory';

        /* Cursor sharability problems */
        /* This version is for >= 10g; for <= 9i substitute ss.kglhdpar for ss.address!!!! */
        SELECT sa.sql_text,sa.version_count,ss.*
        FROM v$sqlarea sa,v$sql_shared_cursor ss
        WHERE sa.address=ss.address AND sa.version_count > 50
        ORDER BY sa.version_count ;

        SPOOL OFF


  4. For Oracle10g ang later, obtain an AWR report (see MOS Document 748642.1) from the period where the first ORA-4031 was encountered:
        CONNECT / AS SYSDBA
        @?/rdbms/admin/awrrpt.sql


  5. For Oracle10g and later, obtain SGA statistics:
        CONNECT / AS SYSDBA
        ORADEBUG setmypid
        ORADEBUG unlimit
        ALTER SESSION SET events 'immediate trace name dump_all_comp_granule_addrs level 1';
        ORADEBUG tracefile_name
        ORADEBUG close_trace

After having gathered all of the above information, upload the information to the Service Request.

REFERENCES

NOTE:443529.1  - Database 11g: Quick Steps to Package and Send Critical Error Diagnostic Information to Support [Video]
NOTE:314422.1  - Remote Diagnostic Agent (RDA) - Getting Started


NOTE:430473.1  - ORA-4031 Common Analysis/Diagnostic Scripts [Video]
NOTE:1456047.1  - How to Setup Automatic RDA Data Collection for Incident Packages?
NOTE:1675450.1  - Gathering Initial Troubleshooting Information for Analysis of ORA-4031 Errors on Java and Streams Pools
NOTE:1674117.1  - SRDC - ORA-4031 on Shared Pool: Checklist of Evidence to Supply

NOTE:1674933.1 - Gathering Initial Troubleshooting Information for Analysis of ORA-4031 Errors on the Large Pool


others

ORA-04031: Unable to Allocate %n Bytes of Shared Memory ("shared pool",%s,%s,%s)

APPLIES TO:

Oracle Database - Enterprise Edition - Version 8.1.7.4 and later
Information in this document applies to any platform.
***Checked for relevance on 31-Jul-2013***
Archived

PURPOSE

ORA-04031: unable to allocate %s bytes of shared memory (\"%s\",\"%s\",\"%s\",\"%s\")

TROUBLESHOOTING STEPS

fix:

Try to increase shared_pool_size in init.ora file. If it seems large enough 
then  improve segmentation in shared pool by reserving part of shared pool for 
large objects using parameter SHARED_POOL_RESERVED_SIZE (good value to start 
tuning is 1/3 of shared-pool size). It is possible to decide what is "
large object" by parameter SHARED_POOL_RESERVED_MIN_ALLOC.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值