-1

I have 6, two node RAC databases running in the two physical servers.

While I try to create new diskgroup, I get the following error:

ORA-15018: diskgroup cannot be created 
ORA-04031: unable to allocate 2110040 bytes of shared memory ("large 
pool","unknown object","large pool","kfr redo buffer") 

I gather that there isn't enough shared pool resources for the ASM instance to create a new diskgroup. I'm not in a situation to restart ASM instance to increase the shared pool.

My question is if I decide to drop some unused diskgroups will I get to create new diskgroups? Or is it mandatory to increase the shared pool?

0

15018, 00000, "diskgroup cannot be created"

Cause: The specified diskgroup could not be created.
Action: Check for additional errors reported.

04031, 00000, "unable to allocate %s bytes of shared memory (\"%s\",\"%s\",\"%s\",\"%s\")"

Cause: More shared memory is needed than was allocated in the shared pool or Streams pool. Action: If the shared pool is out of memory, either use the DBMS_SHARED_POOL package to pin large packages, reduce your use of shared memory, or increase the amount of available shared memory by increasing the value of the initialization parameters SHARED_POOL_RESERVED_SIZE and SHARED_POOL_SIZE. If the large pool is out of memory, increase the initialization parameter LARGE_POOL_SIZE.
If the error is issued from an Oracle Streams or XStream process, increase the initialization parameter STREAMS_POOL_SIZE or increase the capture or apply parameter MAX_SGA_SIZE.

There could be two reasons to get this error:

  • If you are using 11.2.0.2 then there could be a bug(Bug 11684854 : ASM ORA-4031 IN LARGE POOL FROM CREATE DISKGROUP) cosider to upgrade to 11.2.0.3 or higher.

  • You are running out of Large Pool memory. You have to add memory on large pool size. Also you could consider to use Automatic Memory Management as per this MOS DOC(Doc ID 1107613.1).

  • | improve this answer | |
    • I'm on 11.2.0.3. ASM is by default AMM. Now what can be done? – tesla747 Jul 13 '16 at 11:04
    • If I drop existing diskgroups, will I get more pool create new diskgroups? – tesla747 Jul 13 '16 at 11:04
    0

    Sure you can try, here is my quick test (on 11.2.0.4):

    SQL> select pool, bytes from v$sgastat where name = 'free memory';
    
    POOL              BYTES
    ------------ ----------
    shared pool   503941528
    large pool      6422528
    
    SQL> drop diskgroup o6cb_fra including contents;
    
    Diskgroup dropped.
    
    SQL> select pool, bytes from v$sgastat where name = 'free memory';
    
    POOL              BYTES
    ------------ ----------
    shared pool   504016600
    large pool      8531968
    

    Notice that the increase in free memory (2109440) is almost the same amount that was written in your error message (2110040).

    But since you are on 11.2.0.3, if you use default memory settings for ASM, I highly recommend setting the memory parameters manually. The default memory allocation for < 11.2.0.4 versions is too low, it is a recurring issue. 11.2.0.4 allocates at least 1 GB memory, but 11.2.0.3 still uses around 300 MB (which causes problems like the above).

    The recommended setting is:

    alter system set memory_max_target=4096m scope=spfile sid='*';
    alter system set memory_target=1536m scope=spfile sid='*';
    

    From: ASM & Shared Pool (ORA-4031) (Doc ID 437924.1)

    | improve this answer | |
    • thanks for inputs, so that increase in free memory will help me in creating new diskgroup right? – tesla747 Jul 13 '16 at 17:00
    • can you also confirm if I will have to set this on both the ASM instances in node 1 and node 2? – tesla747 Jul 15 '16 at 7:47
    • @tesla747 Yes, I have added sid='*' to the commands. – Balazs Papp Jul 15 '16 at 10:56
    • ok doubt is that, will it apply if I run as '*' in node 1 alone or I will have to run individually in both the nodes? – tesla747 Jul 15 '16 at 11:12

    Your Answer

    By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

    Not the answer you're looking for? Browse other questions tagged or ask your own question.