Пример #1
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() */
Пример #2
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);
	}
Пример #3
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);
}
Пример #4
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 = "";
}
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;
}
Пример #6
0
/*
=begin
--- OCIServer#detach([mode])
     detach from the database.

     :mode
        ((|OCI_DEFAULT|)) only valid. Default value is ((|OCI_DEFAULT|)).

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


    rb_scan_args(argc, argv, "01", &vmode);
    Get_Handle(self, h); /* 0 */
    Get_Int_With_Default(argc, 1, vmode, mode, OCI_DEFAULT); /* 1 */

    rv = OCIServerDetach(h->hp, h->errhp, mode);
    if (rv != OCI_SUCCESS)
        oci8_raise(h->errhp, rv, NULL);
    return self;
}
Пример #7
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;
	}
}
Пример #8
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);
}
Пример #9
0
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"));

}
Пример #10
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);
}
Пример #11
0
int db_init(char *servername, char *username, char *passwd)
{
    OCIEnvCreate(&myenvhp, OCI_THREADED|OCI_OBJECT, (dvoid *)0, 0, 0, 0,
                 (size_t)0, (dvoid **)0);
    OCIHandleAlloc((dvoid *)myenvhp, (dvoid **)&mysrvhp, OCI_HTYPE_SERVER, 0,
                   (dvoid **)0);
    OCIHandleAlloc((dvoid *)myenvhp, (dvoid **)&myerrhp, OCI_HTYPE_ERROR, 0,
                   (dvoid **)0);
    /* 服务名 */
    status = OCIServerAttach(mysrvhp, myerrhp, (const OraText*)servername,
                             strlen(servername), OCI_DEFAULT);
    if (status != OCI_SUCCESS && status != OCI_SUCCESS_WITH_INFO) {
        checkerr(status, myerrhp);
        OCIServerDetach(mysrvhp, myerrhp, OCI_DEFAULT);
        return -1;
    }
    OCIHandleAlloc((dvoid *)myenvhp, (dvoid **)&mysvchp, OCI_HTYPE_SVCCTX, 0,
                   (dvoid **)0);
    OCIAttrSet((dvoid *)mysvchp, OCI_HTYPE_SVCCTX, (dvoid *)mysrvhp, (ub4)0,
               OCI_ATTR_SERVER, myerrhp);
    OCIHandleAlloc((dvoid *)myenvhp, (dvoid **)&myusrhp, OCI_HTYPE_SESSION, 0,
                   (dvoid **)0);
    OCIAttrSet((dvoid *)myusrhp, OCI_HTYPE_SESSION, (dvoid *)username,
               (ub4)strlen(username), OCI_ATTR_USERNAME, myerrhp);
    OCIAttrSet((dvoid *)myusrhp, OCI_HTYPE_SESSION, (dvoid *)passwd,
               (ub4)strlen(passwd), OCI_ATTR_PASSWORD, myerrhp);

    if(OCISessionBegin((dvoid *)mysvchp, myerrhp, myusrhp, OCI_CRED_RDBMS,
                       OCI_DEFAULT) != OCI_SUCCESS) {
        DEBUG("Build the talking fail!\n");
        OCIHandleFree((void *)myenvhp, OCI_HTYPE_ENV);
        return -1;
    }
    OCIAttrSet((dvoid *)mysvchp, OCI_HTYPE_SVCCTX, (dvoid *)myusrhp, (ub4)0,
               OCI_ATTR_SESSION, myerrhp);
    INFO("Oracle connect successful!\n");
    return 0;
}
Пример #12
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);
}
Пример #13
0
void  db_close()
{
    OCISessionEnd(mysvchp,myerrhp,myusrhp,OCI_DEFAULT);
    OCIServerDetach(mysrvhp,myerrhp,OCI_DEFAULT);
    OCIHandleFree((void *)myenvhp,OCI_HTYPE_ENV);
}