Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: Memory Leak Oracle 8.0

Re: Memory Leak Oracle 8.0

From: Andrew Protasov <oracle_at_protasov.kiev.ua>
Date: Tue, 15 Dec 98 10:49:44 +0200
Message-ID: <AEeAYTsK42@protasov.kiev.ua>

Hi,

You can not prevent connection from termination. If application wants to disconnect you can not prevent this. If you want to optimize server resources usage with large number of frequent connections/disconnections then you can try configure prespawned dedicated server processes. They are described in NET8 Administrator's Guide, Chapter 5:

5.1.2.1 Configuring Prestarted or Prespawned Dedicated Server Processes

Andrew Protasov

> Hi ,
> Thanks for the info. I have another question. How long will a database
> connection be active. Are they parameters to say that the connection must be
> alive for long.? This way i can prevent connection to the database and
> termination frequenly. Please help.
> bindu
> In article <ABF2GTsK42_at_protasov.kiev.ua>,
> oracle_at_protasov.kiev.ua wrote:
> >
> > Hi,
> >
> > I think that you can find ProC from Oracle 7.3 and use it
> > with Oracle 8 client software.
> >
> > Andrew Protasov
> >
> > > Hi,
> > > Thanks for the efforts taken. But Pro C/C++ doesn't generate calls to
> OCI.
> > > How can i fix the problem.
> > > Thanks a lot for the help
> > > bindu
> > >
> > > In article <ABkfQSsK42_at_protasov.kiev.ua>,
> > > oracle_at_protasov.kiev.ua wrote:
> > > >
> > > > Hi,
> > > >
> > > > I just finished my tests. So the result is - there is NO
> > > > memory leak in OCI7 implementation of Oracle 8.0.3 client
> > > > for NT and there IS a memory leak in OCI8 implementation of the
> > > > same client. This is the reason why Server Manager works
> > > > correctly (OCI7) but SQL Plus has memory leak (OCI8).
> > > >
> > > > This OCI7 test source:
> > > >
> > > > #include <stdio.h>
> > > > #include <stdlib.h>
> > > > #include <string.h>
> > > > #include <oratypes.h>
> > > > #include <ocidfn.h>
> > > > #include <ociapr.h>
> > > >
> > > > struct cda_def lda;
> > > > unsigned char hda[512];
> > > >
> > > > int checkerr(struct cda_def *lda,int i);
> > > > int main(int argc,char **argv)
> > > > {
> > > > int i=0,j,k;
> > > > if(argc!=5)
> > > > printf("testcon7 <username> <password> <sqlnetalias> <iterations>\n");
> > > > else
> > > > {
> > > > k=atoi(argv[4]);
> > > > for(j=1;j<=k;j++)
> > > > {
> > > > memset(&lda,0,sizeof(lda));
> > > > memset(&hda,0,sizeof(hda));
> > > >
> > >
> if(i=checkerr(&lda,olog(&lda,hda,argv[1],-1,argv[2],-1,argv[3],-1,OCI_LM_DEF)))
> > > goto err1;
> > > > printf("Connect iteration %d\n",j);
> > > > if(i=checkerr(&lda,ologof(&lda))) goto err1;
> > > > }
> > > > }
> > > > err1: return i;
> > > > }
> > > > int checkerr(struct cda_def *lda,int i)
> > > > {
> > > > char errbuf[1024];
> > > > if(i)
> > > > {
> > > > oerhms(lda,(short)i,errbuf,sizeof(errbuf));
> > > > printf("Error %s",errbuf);
> > > > }
> > > > return i;
> > > > }
> > > >
> > > > This is OCI8 test source:
> > > >
> > > > #include <stdio.h>
> > > > #include <stdlib.h>
> > > > #include <string.h>
> > > > #include <oci.h>
> > > >
> > > > #define anderror(i,j) ((i)=(i)?(i):(j))
> > > >
> > > > static OCIEnv *envhp;
> > > > static OCIError *errhp;
> > > > static OCIServer *srvhp;
> > > > static OCISvcCtx *svchp;
> > > > static OCISession *authp;
> > > >
> > > > int checkerr(OCIError *errhp,int i);
> > > >
> > > > int main(int argc,char **argv)
> > > > {
> > > > int i=0,e,j,k;
> > > > if(argc!=5)
> > > > printf("testcon7 <username> <password> <sqlnetalias> <iterations>\n");
> > > > else
> > > > {
> > > > if(i=OCIInitialize(OCI_DEFAULT,NULL,NULL,NULL,NULL)) goto err99;
> > > > if(i=OCIEnvInit(&envhp,OCI_DEFAULT,0,NULL)) goto err99;
> > > > if(i=OCIHandleAlloc(envhp,&errhp,OCI_HTYPE_ERROR,0,NULL)) goto err98;
> > > > if(i=OCIHandleAlloc(envhp,&srvhp,OCI_HTYPE_SERVER,0,NULL)) goto err97;
> > > > if(i=OCIHandleAlloc(envhp,&svchp,OCI_HTYPE_SVCCTX,0,NULL)) goto err96;
> > > > k=atoi(argv[4]);
> > > > for(j=1;j<=k;j++)
> > > > {
> > > > authp=NULL;
> > > >
> > >
> if(i=checkerr(errhp,OCIServerAttach(srvhp,errhp,argv[3],strlen(argv[3]),OCI_DEFA
> > > ULT))) goto err95;
> > > >
> > >
> if(i=checkerr(errhp,OCIAttrSet(svchp,OCI_HTYPE_SVCCTX,srvhp,0,OCI_ATTR_SERVER,er
> > > rhp))) goto err94;
> > > > if(i=OCIHandleAlloc(envhp,&authp,OCI_HTYPE_SESSION,0,NULL)) goto
> err94;
> > > >
> > >
> if(i=checkerr(errhp,OCIAttrSet(authp,OCI_HTYPE_SESSION,argv[1],strlen(argv[1]),O
> > > CI_ATTR_USERNAME,errhp))) goto err93;
> > > >
> > >
> if(i=checkerr(errhp,OCIAttrSet(authp,OCI_HTYPE_SESSION,argv[2],strlen(argv[2]),O
> > > CI_ATTR_PASSWORD,errhp))) goto err93;
> > > >
> > >
> if(i=checkerr(errhp,OCISessionBegin(svchp,errhp,authp,OCI_CRED_RDBMS,OCI_DEFAULT
> > > ))) goto err93;
> > > >
> > >
> if(i=checkerr(errhp,OCIAttrSet(svchp,OCI_HTYPE_SVCCTX,authp,0,OCI_ATTR_SESSION,e
> > > rrhp))) goto err92;
> > > > printf("Connect iteration %d\n",j);
> > > > err92:
> e=checkerr(errhp,OCISessionEnd(svchp,errhp,authp,OCI_DEFAULT));
> > > anderror(i,e);
> > > > err93: e=OCIHandleFree(authp,OCI_HTYPE_SESSION); anderror(i,e);
> > > > err94: e=checkerr(errhp,OCIServerDetach(srvhp,errhp,OCI_DEFAULT));
> > > anderror(i,e);
> > > > if(i) goto err95;
> > > > }
> > > > err95: e=OCIHandleFree(svchp,OCI_HTYPE_SVCCTX); anderror(i,e);
> > > > err96: e=OCIHandleFree(srvhp,OCI_HTYPE_SERVER); anderror(i,e);
> > > > err97: e=OCIHandleFree(errhp,OCI_HTYPE_ERROR); anderror(i,e);
> > > > err98: e=OCIHandleFree(envhp,OCI_HTYPE_ENV); anderror(i,e);
> > > > }
> > > > err99: return i;
> > > > }
> > > > int checkerr(OCIError *errhp,int i)
> > > > {
> > > > char errbuf[1024];
> > > >
> if(i&&!OCIErrorGet(errhp,1,NULL,&i,errbuf,sizeof(errbuf),OCI_HTYPE_ERROR))
> > > > printf("Error %s",errbuf);
> > > > return i;
> > > > }
> > > >
> > > > You may try this with newer Oracle client software.
> > > >
> > > > Andrew Protasov
> > > >
> > > > > Hello!
> > > > >
> > > > > Well, I tried this too, now with Server Manager, which I somehow had
> > > > > not tried before..
> > > > >
> > > > > My current Oracle version is 8.0.4 in NT 4 SP3.
> > > > >
> > > > > Yes, no leak in svrmgr80, none whatsoever. I even extended that test
> > > > > script to look like
> > > > >
> > > > > connect abba/babba_at_myserv
> > > > > select 1 from dual;
> > > > > disconnect
> > > > > ...
> > > > >
> > > > > This is because SQL*Plus does some invisible SQL and opens cursors
> > > > > 'behind curtains' when connected, and I though that Server Manager
> > > > > maybe does not. No joy, svrmgr30 still stable.
> > > > >
> > > > > I think they all should use the same OCI. Programs are linked to
> > > > > OCIW32.DLL, which in turn calls to whatever runtime is installed (so
> > > > > there's no need to relink apps when the runtime environment
> changes).
> > > > >
> > > > > Maybe it is so, that SQL*Plus code has a leak in it, it's not in OCI
> > > > > then.
> > > > >
> > > > > BUT, I remember that when I discovered the leak in my apps (it's
> maybe
> > > > > 1 year ago, I tried a simple program just connecting/disconnecting
> > > > > (just like that SQL-script, only with OCI calls orlon/ologof), the
> > > > > leak was there. Made that SQL*Plus test then, to prove the leak is
> not
> > > > > in my code..
> > > > >
> > > > > Have to test that again, maybe it's gone with 8.0.4!
> > > > >
> > > > > >
> > > > > >Hi,
> > > > > >
> > > > > >I tried your test with Oracle Client and Server 8.0.3. Yes,
> > > > > >there is a memory leak in plus80.exe and plus80w.exe
> > > > > >(Windowed version). But I did not find any memory leak
> > > > > >with your test in svrmgr30.exe (Server Manager). Maybe
> > > > > >it depends on OCI version? I do not know what OCI 7 or
> > > > > >OCI 8 each of them uses.
> > > > > >
> > > > > >And there is no any memory leak in Oracle 8.0.3 Server
> > > > > >for NT during this test.
> > > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > >
> > > -----------== Posted via Deja News, The Discussion Network ==----------
> > > http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own
> > >
> > >
> >

>

> -----------== Posted via Deja News, The Discussion Network ==----------
> http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own
> >
Received on Tue Dec 15 1998 - 02:49:44 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US