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

Home -> Community -> Usenet -> c.d.o.misc -> GLOBAL transactions - OCI_TRANS_TIGHT - ORA-00161

GLOBAL transactions - OCI_TRANS_TIGHT - ORA-00161

From: Massis Isagholian <massis_at_socal.rr.com>
Date: Tue, 02 Oct 2001 17:51:34 GMT
Message-ID: <G8nu7.1906$SO.137110@typhoon.we.rr.com>


I have an application that needs to perform multiple concurrent transactions. To accomplish this I'm trying to use Oracle's Global Transactions. However, I'm having a problem with the OCITransStart() function.

I'm trying to establish multiple branches to operate in a single session and I can't figure out why my call to "(OCITransStart(phService, phErr, 0, OCI_TRANS_TIGHT)" is generating an error message. I'm getting error code 161, with the error message "ORA-00161: transaction branch length 536871073 is illegal (maximum allowed 64)." You can see the context of this call in the code segment below.

I'm under a tight time constraint and I'd appreciate ANY suggestions that you may have.

Massis

 if (OCISessionBegin ((OCISvcCtx *) phService, phErr, phSess,   OCI_CRED_RDBMS, OCI_DEFAULT))
{

  ErrHandler((dvoid *) phErr, OCI_HTYPE_ERROR);   return OCI_ERROR;
 }

 if (OCIAttrSet ((dvoid *) phService, OCI_HTYPE_SVCCTX,   (dvoid *) phSess, (ub4) 0, OCI_ATTR_SESSION, phErr)) // associate user session with SRVCTX
{

  ErrHandler((dvoid *) phErr, OCI_HTYPE_ERROR);   return OCI_ERROR;
 }

 /* ESTABLISH A NEW TRANSACTION AND EXECUTE SELECT * FROM SIMPLE_TBL WHERE TBL_ID = 1 */  if (OCIHandleAlloc ((dvoid *) phEnv, (dvoid **) &phTransK1,   OCI_HTYPE_TRANS, 0, (dvoid **) 0))
{

  ErrHandler((dvoid *) phEnv, OCI_HTYPE_ENV);   return OCI_ERROR;
 }

 if (OCIAttrSet ((dvoid *) phService, (ub4) OCI_HTYPE_SVCCTX,   (dvoid *) phTransK1, (ub4) 0, OCI_ATTR_TRANS, phErr)) // set server context
{

  ErrHandler((dvoid *) phErr, OCI_HTYPE_ERROR);   return OCI_ERROR;
 }

 strcpy((char *)txtTransName, "TRANS1");  nTransLen = strlen((char *) txtTransName);

 if (OCIAttrSet ((dvoid *) phTransK1, (ub4) OCI_HTYPE_TRANS,   (dvoid *) "TRANS1", (ub4) 6, OCI_ATTR_TRANS_NAME, phErr)) // set server context
{

  ErrHandler((dvoid *) phErr, OCI_HTYPE_ERROR);   return OCI_ERROR;
 }

 if (OCITransStart(phService, phErr, 0, OCI_TRANS_TIGHT)) /* START NEW TRANS */
{

  ErrHandler((dvoid *) phErr, OCI_HTYPE_ERROR);   return OCI_ERROR;
 } Received on Tue Oct 02 2001 - 12:51:34 CDT

Original text of this message

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