DBAsupport.com Forums - Powered by vBulletin
Page 1 of 2 12 LastLast
Results 1 to 10 of 17

Thread: ora 4030

  1. #1
    Join Date
    Feb 2000
    Location
    NJ, United States
    Posts
    250
    I am getting:
    Error: ORA-04030: out of process memory when trying to allocate 526592 bytes (PLS non-lib hp,PAR.Carchktb)
    when trying to save changes/compile after making changes to a procedure..
    I tried to reduce the sort area size int the session didn't help.

    Any suggestions?

    KN

  2. #2
    Join Date
    Mar 2002
    Location
    Mesa, Arizona
    Posts
    1,204
    This is probably a bug. What's your database version?
    "I do not fear computers. I fear the lack of them." Isaac Asimov
    Oracle Scirpts DBA's need

  3. #3
    Join Date
    Feb 2000
    Location
    NJ, United States
    Posts
    250
    version is 8.1.7, now this specially happens when I try to save the wrapped version of procedure, when I save the unwrapped procedure it goes through..

    KN

  4. #4
    Join Date
    Mar 2002
    Location
    Mesa, Arizona
    Posts
    1,204
    Flush the shared_pool, then save/compile.

    alter system flush shared_pool;

    "I do not fear computers. I fear the lack of them." Isaac Asimov
    Oracle Scirpts DBA's need

  5. #5
    Join Date
    Feb 2000
    Location
    NJ, United States
    Posts
    250
    Thanx for your replies

    i tried that
    i was getting:
    out of memory trying to allocate 528000...
    after I flushed the shared pool
    out of memory trying to allocate 527670...

    Any suggestions
    KN

  6. #6
    Join Date
    Mar 2002
    Location
    Mesa, Arizona
    Posts
    1,204
    Seems obvious that you just don't have enough memory to spawn a user process to wrap the procedure.

    Reducing the shared_pool should free up some of that memory .. and you'd think it would be available contiguously.

    What OS are you running and how much memory do you have?

    If you're on NT, can you stop some services to free up some memory, then give it another try?

    There's quite a few posts on metalink about this error and the replies don't look too promising.
    "I do not fear computers. I fear the lack of them." Isaac Asimov
    Oracle Scirpts DBA's need

  7. #7
    Join Date
    Feb 2000
    Location
    NJ, United States
    Posts
    250
    OS is win 2000
    We have 1.5 gig ram.
    shared pool size is set to 120M..
    KN

  8. #8
    Join Date
    Jun 2000
    Location
    Madrid, Spain
    Posts
    7,447
    I have seen from Metalink that there is memory leakege in Oracle 8.1.7, but I am not sure if this applies to Windows, I know in HP-UX and Solaris

    what is your shared_pool_reserved_size?

  9. #9
    Join Date
    Mar 2002
    Location
    Mesa, Arizona
    Posts
    1,204
    Not sure if this helps directly, but it may help us understand the problem...

    d) How per session allocations are performed & address space fragmentation
    --------------------------------------------------------------------------

    Once the listener has created a users session (thread and stack) the Oracle server code takes over and starts to create the necessary memory structures for the users connection. These allocations and those required by parameters described in section 4.a (which are created as and when the session requires them) are created using the Win32 API call "VirtualAlloc". Each session makes calls to "VirtualAlloc" with the MEM_RESERVE | MEM_COMMIT allocation flags, which both reserves and commits the region of the address space for its private use. For information on how memory is released see section 4.e.

    When "VirtualAlloc" is called to reserve memory at a specific address it returns an address that has been rounded down to the next 64K chunk in the virtual address space. Oracle calls "VirtualAlloc" without defining a specific address, by passing in NULL, it is returned the address of the next available 64K chunk. So when a users session makes a PGA, UGA or CGA allocation it is also aligned along the 64K boundaries, committing the requested pages from this boundary up. Users sessions often make many small allocations which are less than 64K, this causes address space fragmentation because many 64K regions exist with only a couple of pages committed.

    The following example shows what the address space would look like after the initial allocations have been made by a users session :

    Address State Region Size (Bytes)
    ------- ------ -------------------
    B290000 Stack 1,048,576
    B390000 Commit 4096
    B391000 Free 61440
    B3A0000 Commit 4096
    B3A1000 Free 61440
    B3B0000 Commit 4096
    B3B1000 Free 61440
    B3C0000 Commit 65536
    B3D0000 Commit 4096
    B3D1000 Free 61440
    B3E0000 Commit 4096
    B3E1000 Free 61440
    B3F0000 Commit 65536
    B400000 Commit 65536
    B410000 Commit 65536

    The following table can be used as a guideline for calculating the minimum amount of the address space that will be used by a users session. It does not take into account the memory that could be allocated by parameters described in section 4.a as the session proceeds. The default 1Mb stack is also assumed.

    Version Minimum Memory
    ------- --------------
    7.3.4 1.38MB
    8.0.6 1.56MB
    8.1.7 1.56MB

    Once the address space starts to fill with users session allocations the will be a danger that a new session can not be created due to the lack of available address space. If this occurs the most likely error is :

    - ORA-12500 / TNS-12500
    - TNS:listener failed to start a dedicated server process

    Other possible errors include :

    - ORA-12540 / TNS-12540 TNS:internal limit restriction exceeded
    - NT-8 Not enough storage is available to process this command
    - skgpspawn failed:category = ....
    - ORA-27142 could not create new process
    - ORA-27143 OS system call failure
    - ORA-4030 out of process memory when trying to allocate ....

    Due to address space fragmentation and dll's being loaded into the Oracle server processes address space, these errors are likely to occur when the Windows NT performance monitor shows the Oracle process has allocated around
    1.6GB / 1.7GB of the 2GB address space. If the 4GT tuning feature is in operation this will be around 2.5GB / 2.7GB. It is important to remember that it is only the committed pages that are backed by physical memory or the page file.

    Hum...
    "I do not fear computers. I fear the lack of them." Isaac Asimov
    Oracle Scirpts DBA's need

  10. #10
    Join Date
    Feb 2000
    Location
    NJ, United States
    Posts
    250
    shared pool reserved size is set to 6000000 i.e i think around 6M.
    KN

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  


Click Here to Expand Forum to Full Width