예제 #1
0
OGROCISession::~OGROCISession()

{
    if( hDescribe != NULL )
        OCIHandleFree((dvoid *)hDescribe, (ub4)OCI_HTYPE_DESCRIBE);

    if( hSvcCtx != NULL )
    {
        OCISessionEnd(hSvcCtx, hError, hSession, (ub4) 0);

        if( hSvcCtx && hError)
            OCIServerDetach(hServer, hError, (ub4) OCI_DEFAULT);

        if( hServer )
            OCIHandleFree((dvoid *) hServer, (ub4) OCI_HTYPE_SERVER);

        if( hSvcCtx )
            OCIHandleFree((dvoid *) hSvcCtx, (ub4) OCI_HTYPE_SVCCTX);

        if( hError )
            OCIHandleFree((dvoid *) hError, (ub4) OCI_HTYPE_ERROR);

        if( hSession )
            OCIHandleFree((dvoid *) hSession, (ub4) OCI_HTYPE_SESSION);
    }

    CPLFree( pszUserid );
    CPLFree( pszPassword );
    CPLFree( pszDatabase );
}
예제 #2
0
파일: yada_oracle.c 프로젝트: pruiz/yada
static void yada_oracle_disconnect(yada_t *_yada)
{
  yada_rc_t *yrc;

  
  /* invalidate all result sets associated with this connection */
  for(yrc=_yada->_priv->rc_head; yrc; yrc=yrc->next)
    {
    if(yrc->t != YADA_RESULT)
      continue;

    ((extinfo*)yrc->data)->invalid = 1;
    OCIStmtRelease(((extinfo*)yrc->data)->stmt, _yada->_mod->err,
     NULL, 0, OCI_DEFAULT);
    OCIHandleFree(((extinfo*)yrc->data)->stmt, OCI_HTYPE_STMT);
    }

  /* cleanup OCI */
  if(_yada->_mod->ses)
    OCISessionEnd(_yada->_mod->ctx, _yada->_mod->err, _yada->_mod->ses, OCI_DEFAULT);
  if(_yada->_mod->srv)
    OCIServerDetach(_yada->_mod->srv, _yada->_mod->err, OCI_DEFAULT);
  if(_yada->_mod->env)
    OCIHandleFree(_yada->_mod->env, OCI_HTYPE_ENV);

  /* re-initialize extended structure */
  _yada->_mod->env = NULL;
  _yada->_mod->err = NULL;
  _yada->_mod->srv = NULL;
  _yada->_mod->ctx = NULL;
  _yada->_mod->ses = NULL;
  _yada->errmsg = _yada->_priv->errbuf;
}
예제 #3
0
파일: oracle.c 프로젝트: eaglexmw/gsql
gboolean
oracle_session_close (GSQLSession *session, gchar *buffer)
{
    GSQL_TRACE_FUNC;

    /* End session and detach from server */
    GSQLEOracleSession *o_session;

    o_session = (GSQLEOracleSession *) session->spec;

    gsql_session_close (session);

    OCISessionEnd (o_session->svchp, o_session->errhp,
                   o_session->usrhp, OCI_DEFAULT);
    OCIServerDetach (o_session->srvhp, o_session->errhp,
                     OCI_DEFAULT);
    OCIHandleFree ((dvoid *)o_session->errhp, OCI_HTYPE_ERROR);
    OCIHandleFree ((dvoid *)o_session->srvhp, OCI_HTYPE_SERVER);
    OCIHandleFree ((dvoid *)o_session->svchp, OCI_HTYPE_SVCCTX);
    OCIHandleFree ((dvoid *)o_session->usrhp, OCI_HTYPE_SESSION);
    OCIHandleFree ((dvoid *)o_session->envhp, OCI_HTYPE_ENV);

    g_free(o_session);

    return TRUE;
}
예제 #4
0
int COracleDB::oracle_close( void )
{
	ORACLE_HANDLE* handle = ( ORACLE_HANDLE* ) _handle;

	if ( handle == NULL )
		return DB_ERR_SUCCESS;

	int status;
	if ( handle->svchp != NULL ) {
		while ( ( status = OCISessionEnd( handle->svchp, handle->errhp, handle->authp, OCI_DEFAULT ) )
				== OCI_STILL_EXECUTING ) {
			my_usleep();
		}
	}

	if ( handle->srvhp != NULL ) {
		while ( ( status = OCIServerDetach( handle->srvhp, handle->errhp, OCI_DEFAULT ) ) == OCI_STILL_EXECUTING ) {
			my_usleep();
		}
	}

	if ( handle->envhp != NULL ) {
		OCIHandleFree( ( dvoid * ) ( handle->envhp ), OCI_HTYPE_ENV );
	}

	if ( handle != NULL ) {
		delete handle;
		handle = NULL;
	}

	return 0;
}
예제 #5
0
파일: oci8.c 프로젝트: jcasts/ruby-oci8
static VALUE complex_logoff_execute(void *arg)
{
    complex_logoff_arg_t *cla = (complex_logoff_arg_t *)arg;
    OCIError *errhp = oci8_errhp;
    sword rv = OCI_SUCCESS;

    OCITransRollback(cla->svchp, errhp, OCI_DEFAULT);

    if (cla->state & OCI8_STATE_SESSION_BEGIN_WAS_CALLED) {
        rv = OCISessionEnd(cla->svchp, oci8_errhp, cla->usrhp, OCI_DEFAULT);
        cla->state &= ~OCI8_STATE_SESSION_BEGIN_WAS_CALLED;
    }
    if (cla->state & OCI8_STATE_SERVER_ATTACH_WAS_CALLED) {
        rv = OCIServerDetach(cla->srvhp, oci8_errhp, OCI_DEFAULT);
        cla->state &= ~OCI8_STATE_SERVER_ATTACH_WAS_CALLED;
    }
    if (cla->usrhp != NULL) {
        OCIHandleFree(cla->usrhp, OCI_HTYPE_SESSION);
    }
    if (cla->srvhp != NULL) {
        OCIHandleFree(cla->srvhp, OCI_HTYPE_SERVER);
    }
    if (cla->svchp != NULL) {
        OCIHandleFree(cla->svchp, OCI_HTYPE_SVCCTX);
    }
    free(cla);
    return (VALUE)rv;
}
예제 #6
0
파일: ora.c 프로젝트: vSlipenchuk/vdb
// Очистка соединения
int ora_disconnect(database *db)
{
t_ora *o = db->h;
if (o)
 {
 int i;	 //ZUZUKA
  // OCISessionEnd(svchp, errhp, usrhp, (ub4)OCI_DEFAULT);
  if (o->blob) OCIDescriptorFree(o->blob, (ub4) OCI_DTYPE_LOB);
  if (o->dschp) OCIHandleFree(o->dschp,(ub4) OCI_HTYPE_DESCRIBE);
  if (o->stmt) OCIHandleFree( (dvoid *)o->stmt,OCI_HTYPE_STMT);
  if (o->authp) OCIHandleFree((dvoid *) o->authp, OCI_HTYPE_SESSION);
  if (o->srvhp) // Оракл сам не килит "соединение"
  {
   OCISessionEnd (o->svchp,o->errhp,0,OCI_DEFAULT);
   OCIServerDetach(o->srvhp,o->errhp, (ub4) OCI_DEFAULT);
  //	OCIServerDetach(o->srvhp,o->errhp, (ub4) 0 );
   OCIHandleFree( (dvoid *)o->srvhp, OCI_HTYPE_SERVER);
	//  printf("SrvHandle freed?\n");
  }
  if (o->svchp) {
	  OCIHandleFree( (dvoid *)o->svchp, OCI_HTYPE_SVCCTX);
           }
   if (o->errhp) {
	 //printf("Err handle=%d\n",o->errhp);
	 OCIHandleFree((dvoid *)o->errhp, OCI_HTYPE_ERROR);
	// printf("ErrHandle freed?\n");
    }

  //OCIHandleFree((dvoid *)o->envhp, OCI_HTYPE_ENV);
    //printf("EnvHandle freed?\n");

 //if (o->blob_read) OCIDescriptorFree(o->blob_read, (ub4) OCI_DTYPE_LOB);



 //if (o->mypard) OCIHandleFree(o->mypard, OCI_HTYPE_
 //for(i=0;i<256;i++) if (o->defs[i]) OCIHandleFree(o->defs[i],OCI_HTYPE_);   // Дефайнеры для SELECT колонок(подвязывание)
 //   OCIParam     *mypard; // Обьектик для получения информациипо отселекченой колонке

 if (o->p) free(o->p);
  //printf("asize = %d\n",asize);
 //if (o->envhp) OCIHandleFree((dvoid *) o->envhp, OCI_HTYPE_ENV);

 free(o);


 }
db->h = 0;
Free(db->s);
 // Так как свои диспетчеры памяти, нужно вылить...
 Free(db->out.data);
 Free(db->out.blob); // Так как юзаем блобы - это вещь необходимая...
 Free(db->out.cols);
 Free(db->in.data);
 Free(db->in.blob);
 Free(db->in.cols);
db->disconnect = 0;
return 1;
}
예제 #7
0
/* Freeing the allocated handles */
static void cleanup ()
{
  OCISessionEnd (svchp, errhp, sesnhp, OCI_DEFAULT );
  OCIHandleFree((dvoid *) sesnhp, OCI_HTYPE_SESSION);
  OCIServerDetach(svrhp, errhp, OCI_DEFAULT );
  OCIHandleFree((dvoid *) svrhp, OCI_HTYPE_SERVER);
  OCIHandleFree((dvoid *) svchp, OCI_HTYPE_SVCCTX);
  OCIHandleFree((dvoid *) errhp, OCI_HTYPE_ERROR);
  return;
}/* End of cleanup() */
예제 #8
0
	~connection()
	{
		OCISessionEnd(svcctx, error, session, OCI_DEFAULT);
		OCIServerDetach(server, error, OCI_DEFAULT);

		OCIHandleFree(session, OCI_HTYPE_SESSION);
		OCIHandleFree(svcctx, OCI_HTYPE_SVCCTX);
		OCIHandleFree(error, OCI_HTYPE_ERROR);
		OCIHandleFree(server, OCI_HTYPE_SERVER);
	}
예제 #9
0
void OraSession::endSession() {
	sword status;

	status = OCIHandleFree((dvoid *)ociHandles.stmthp, (ub4)OCI_HTYPE_STMT);
	status = OCISessionEnd(ociHandles.svchp, ociHandles.errhp, ociHandles.usrhp, (ub4)OCI_DEFAULT);
	status = OCIServerDetach(ociHandles.srvhp, ociHandles.errhp, (ub4)OCI_DEFAULT );
	status = OCIHandleFree((dvoid *)ociHandles.srvhp, (ub4)OCI_HTYPE_SERVER);
	status = OCIHandleFree((dvoid *)ociHandles.svchp, (ub4)OCI_HTYPE_SVCCTX);
	status = OCIHandleFree((dvoid *)ociHandles.errhp, (ub4)OCI_HTYPE_ERROR);
	connectedUser = "";
}
예제 #10
0
void OracleConnection_free(T* C) {
        assert(C && *C);
        if ((*C)->svc)
                OCISessionEnd((*C)->svc, (*C)->err, (*C)->usr, OCI_DEFAULT);
        if ((*C)->srv)
                OCIServerDetach((*C)->srv, (*C)->err, OCI_DEFAULT);
        if ((*C)->env)
                OCIHandleFree((*C)->env, OCI_HTYPE_ENV);
        StringBuffer_free(&(*C)->sb);
        FREE(*C);
}
void OracleConnection::Close()
{
	StartTrace(OracleConnection.Close);
	if ( fStatus == eSessionValid ) {
		if ( OCISessionEnd( fSvchp.getHandle(), fErrhp.getHandle(), fUsrhp.getHandle(), 0 ) ) {
			SystemLog::Error( "FAILED: OCISessionEnd() on svchp failed" );
		}
	}
	if ( fStatus >= eServerAttached ) {
		if ( OCIServerDetach( fSrvhp.getHandle(), fErrhp.getHandle(), OCI_DEFAULT ) ) {
			SystemLog::Error( "FAILED: OCIServerDetach() on srvhp failed" );
		}
	}
	fStatus = eHandlesAllocated;
}
예제 #12
0
파일: adbl_oracle.c 프로젝트: entc/entc-adb
void
qdbl_oracle_session_stop(struct QdblOracleConnection* self)
{
  /* variables */
  sword status;
  
  status = OCISessionEnd(self->ocicontext, self->ocierr, self->ocisession, OCI_DEFAULT);
  
  qdbl_oracle_error(self->ocierr, status, self->logger, "end session");
  
  /* release resources */
  OCIHandleFree(self->ocisession, OCI_HTYPE_SESSION);
  self->ocisession = 0;
  OCIHandleFree(self->ocicontext, OCI_HTYPE_SVCCTX);
  self->ocicontext = 0;
}
예제 #13
0
/*
=begin
--- OCISession#end(svc [, vmode])
     terminate user Authentication Context

     :svc
        ((<OCISvcCtx>)).
     :mode
        ((|OCI_DEFAULT|)) only valid. Defalt value is ((|OCI_DEFAULT|)).

     correspond native OCI function: ((|OCISessionEnd|))
=end
*/
static VALUE oci8_session_end(int argc, VALUE *argv, VALUE self)
{
  VALUE vsvc, vmode;
  oci8_handle_t *h;
  oci8_handle_t *svch;
  ub4 mode;
  sword rv;

  rb_scan_args(argc, argv, "11", &vsvc, &vmode);
  Get_Handle(self, h); /* 0 */
  Check_Handle(vsvc, OCISvcCtx, svch); /* 1 */
  Get_Int_With_Default(argc, 2, vmode, mode, OCI_DEFAULT); /* 2 */

  rv = OCISessionEnd(svch->hp, h->errhp, h->hp, mode);
  if (rv != OCI_SUCCESS)
    oci8_raise(h->errhp, rv, NULL);
  return self;
}
예제 #14
0
/*
 * Disconnect after network error
 */
void db_oracle_disconnect(ora_con_t* con)
{
	sword status;

	switch (con->connected) {
	default:
		status = OCISessionEnd(con->svchp, con->errhp, con->authp,
			OCI_DEFAULT);
		if (status != OCI_SUCCESS)
			LM_ERR("driver: %s\n", db_oracle_error(con, status));
	case 1:
		status = OCIServerDetach(con->srvhp, con->errhp, OCI_DEFAULT);
		if (status != OCI_SUCCESS)
			LM_ERR("driver: %s\n", db_oracle_error(con, status));
		con->connected = 0;
	case 0:
		break;
	}
}
예제 #15
0
void close_conn(OCI_CONNECTION *db_connection)
{
	OCISessionEnd(db_connection->svchp,
		          db_connection->errhp,
				  db_connection->authp,
				  OCI_DEFAULT);
		
	OCIServerDetach(db_connection->srvhp,
			        db_connection->errhp,
			        OCI_DEFAULT);
		
	OCIHandleFree(db_connection->authp, OCI_HTYPE_SESSION);
	OCIHandleFree(db_connection->srvhp, OCI_HTYPE_SERVER);
	OCIHandleFree(db_connection->svchp, OCI_HTYPE_SVCCTX);
	OCIHandleFree(db_connection->errhp, OCI_HTYPE_ERROR);
	OCIHandleFree(db_connection->envhp, OCI_HTYPE_ENV);
		
	free(db_connection);
	OCITerminate(OCI_DEFAULT);
}
예제 #16
0
파일: oracle.c 프로젝트: eaglexmw/gsql
void
oracle_session_reopen (GSQLSession *session)
{
    GSQL_TRACE_FUNC;

    GSQLEOracleSession *oracle_session;
    gchar buffer[256];
    GSQLWorkspace *workspace;

    gchar *username;
    gchar *database;
    gchar *password;

    g_return_if_fail (GSQL_IS_SESSION (session));

    oracle_session = (GSQLEOracleSession *) session->spec;
    workspace = gsql_session_get_workspace (session);

    OCISessionEnd (oracle_session->svchp, oracle_session->errhp,
                   oracle_session->usrhp, OCI_DEFAULT);
    OCIServerDetach (oracle_session->srvhp, oracle_session->errhp,
                     OCI_DEFAULT);
    OCIHandleFree ((dvoid *)oracle_session->errhp, OCI_HTYPE_ERROR);
    OCIHandleFree ((dvoid *)oracle_session->srvhp, OCI_HTYPE_SERVER);
    OCIHandleFree ((dvoid *)oracle_session->svchp, OCI_HTYPE_SVCCTX);
    OCIHandleFree ((dvoid *)oracle_session->usrhp, OCI_HTYPE_SESSION);
    OCIHandleFree ((dvoid *)oracle_session->envhp, OCI_HTYPE_ENV);

    username = (gchar *) gsql_session_get_username (session);
    password = (gchar *) gsql_session_get_password (session);
    database = (gchar *) gsql_session_get_database_name (session);

    oracle_session_open (oracle_session,
                         username,
                         password,
                         database,
                         buffer);

    gsql_message_add (workspace, GSQL_MESSAGE_NORMAL, N_("Session reconnected"));

}
예제 #17
0
OWConnection::~OWConnection()
{
    OCIHandleFree( (dvoid*) hDescribe, (ub4) OCI_HTYPE_DESCRIBE);

    if( hSvcCtx && hError && hSession )
        OCISessionEnd( hSvcCtx, hError, hSession, (ub4) 0);

    if( hSvcCtx && hError)
        OCIServerDetach( hServer, hError, (ub4) OCI_DEFAULT);

    if( hServer )
        OCIHandleFree((dvoid *) hServer, (ub4) OCI_HTYPE_SERVER);

    if( hSvcCtx )
        OCIHandleFree((dvoid *) hSvcCtx, (ub4) OCI_HTYPE_SVCCTX);

    if( hError )
        OCIHandleFree((dvoid *) hError, (ub4) OCI_HTYPE_ERROR);

    if( hSession )
        OCIHandleFree((dvoid *) hSession, (ub4) OCI_HTYPE_SESSION);
}
예제 #18
0
// free the resources associated with a connection
void tm_free_conn(TM_CONN_HNDL conn_hndl)
{
	TM_CONNECTION	*conn;

	conn = (TM_CONNECTION *)conn_hndl;
	
	OCISessionEnd(conn->svchp,
			conn->errhp,
			conn->authp,
			OCI_DEFAULT);

	OCIServerDetach(conn->srvhp,
			conn->errhp,
			OCI_DEFAULT);

	OCIHandleFree(conn->authp, OCI_HTYPE_SESSION);
	OCIHandleFree(conn->srvhp, OCI_HTYPE_SERVER);
	OCIHandleFree(conn->svchp, OCI_HTYPE_SVCCTX);
	OCIHandleFree(conn->errhp, OCI_HTYPE_ERROR);
	OCIHandleFree(conn->envhp, OCI_HTYPE_ENV);

	tman_free(conn_hndl);
}
예제 #19
0
파일: db.c 프로젝트: hongwozai/emms
void  db_close()
{
    OCISessionEnd(mysvchp,myerrhp,myusrhp,OCI_DEFAULT);
    OCIServerDetach(mysrvhp,myerrhp,OCI_DEFAULT);
    OCIHandleFree((void *)myenvhp,OCI_HTYPE_ENV);
}