[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference vaxaxp::vmsnotes

Title:VAX and Alpha VMS
Notice:This is a new VMSnotes, please read note 2.1
Moderator:VAXAXP::BERNARDO
Created:Wed Jan 22 1997
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:703
Total number of notes:3722

194.0. "Need help with heap size" by MIASYS::SSAFFER () Fri Feb 14 1997 10:28

    I am looking for some help with Oracle/OCI on OpenVMS 7.0.
    I can't seem to find anyone in Digital who has experience using this
    interface. The customer is trying to execute the sample cdemo1.c
    program that comes with the Oracle installation, but it fails on the
    olog connect statement with error ORA-01019 which says:
    
    "unable to allocated memory in the user side"
    cause: the user side memory allocator returned an error
    action: increase the process' heap size or switch to the old set of
    calls.
    
    I have researched OCI in a couple of books and the authors recommend
    using an HDA size of 512 on all 64-bit systems, so I had the customer
    edit cdemo1.c to declare the HDA as 'ub4 HDA[512]'. This did not solve
    the problem. The .h file that Oracle provides (ocidem.h) did not have
    the right combination of tests for OpenVMS/AlphaAXP, so I had the
    customer force the HDA to 512 in that file as well in case it was used
    by any other routines.
    
    The customer is running OpenVMS 7.0, C (5.4), and Oracle 7.3.2.2.
    
    Can someone tell me how to increase the process heap size? I don't have
    any VMS documentation - or can someone point me to it online?
    
    Thanks,
    /Sally.
    
T.RTitleUserPersonal
Name
DateLines
194.1Contact Oracle, And Ask ThemXDELTA::HOFFMANSteve, OpenVMS EngineeringFri Feb 14 1997 10:4918
   Hi Sally -- you really need to contact the Oracle folks directly.

   OpenVMS does not have something called a `process heap size' that
   can be increased.

   Thus this isn't directly an OpenVMS question and the customer should
   not be asking us -- if an Oracle product or package is outputting an
   ambiguous message, a message with insufficient information to recover
   from the problem, or a bogus error message, then Oracle needs to update
   the message or the error messages and recovery text.  And hopefully,
   Oracle (support) also knows what this error message is trying to tell
   the OpenVMS system manager to do...

   Oracle Rdb stuffs some recovery text into SYS$HELP:*RDB*.*.

   See HUMANE::SYS$PUBLIC:EASYNOTES.LIS -- there are a couple of
   Oracle notes conferences listed there.
194.2heap ~= program's dynamic memoryGREGOR::OPPFri Feb 14 1997 13:1935
     One definition of "heap", as found at:

http://nsl-too.pa.dec.com/doc/OSF1_alpha/V4.0/AA-Q2DPC-TKT1_html/thrd0059.html

is as follows ...

3.3.1.3 Heap 

Dynamic memory is allocated by the program as a result of a call to some 
memory management function (for example, the C language run-time function 
malloc() or the OpenVMS common run-time function LIB$GET_VM). 

Dynamic memory is referenced through pointer variables. Although the pointer 
variables are scoped depending on their declaration, the dynamic memory 
itself has no intrinsic scope or lifetime. It can be accessed from any 
routine or thread that is given its address and will exist until explicitly 
made free. In a language supporting automatic garbage collection, it will 
exist until the run-time system detects that there are no references to it. 
(If your language supports garbage collection, be sure the garbage collector 
is thread-safe.) 

Heap is usually appropriate to manage persistent context. For example, in a 
thread-reentrant routine that is called multiple times to return a stream of 
information (for example, to list all active connections to a server or to 
return a list of users), using dynamic memory allows multiple contexts that 
are independent of threads. Multiple threads may be able to share a given 
context, or a single thread may have more than one context. 

The scope of dynamic memory is anywhere a pointer containing the address can 
be referenced. The lifetime is from allocation to deallocation. 

     Based upon this description, I'd try increasing the process' WSQUOTA 
and WSEXTENT assuming the C programs are *not* using global pages as "heap".  

Greg
194.3Page file quota?VIRKE::GULLNASOlof Gulln�s, DTN 876-7997Sun Feb 16 1997 13:448
.2:
Page file quota is more likely than wsquota or wsextent.
Might even be the VIRTUALPAGECNT sysgen parameter.

As .1 said, without more information about hat the message means,
we are just guessing... 

	Olof
194.4need more info from OracleMIASYS::SSAFFERWed Feb 19 1997 09:4820
    
    Thank you for the suggestions. I called the customer to see what his
    UAF params were already set to:
    
    	pgflquo	500000
    	wsquota   4000
    	wsextent 131000
    
    	These seemed sufficient, especially with an extent as large as
    	that, but just for kicks, I had him increase
    	wsquota to 20000, but it didn't make a difference.
    
    I suggested that he call Oracle again and ask them to take another look
    at the problem. These are Oracle sample programs that don't work and
    they should be supported. I told the customer that unless Oracle could
    narrow the problem down to an OpenVMS issue, that we really could not
    continue to 'guess' at what the problem might be. I will continue to
    monitor the customer's progress and will post the solution here when it
    is resolved.
            
194.5?pointer size??GREGOR::OPPThu Feb 20 1997 07:039
     SWAG:  
    	Is this version of Oracle using 64-bit pointers or 32-bit 
    pointers or a mix of both?  This could make quite a difference 
    in trying to compile a sample application.   Refer to "Digital
    Technical Journal", Volume 8 Number 2, 1996 for three excellent
    articles on OpenVMS for 64-bit addressable virtual memory.  
    
    Greg