Memory leak in ODBC Driver version 8.1.7.8?

We have a web application connected to an 8.1.7 database on a MS Windows 2000 SP 2 server.
We recently upgraded ODBC driver from 8.1.7.7 to 8.1.7.8 and found that we ran out of virtual memory.
On further investigations, a simple refresh of our summary web page (going to the database to select a small recordset - even when there are only 2 records with 6 small VARCHAR2 fields) causes the virtual memory usage to increase by approximately 1Mb each refresh.
The same refresh using driver 8.1.7.7 occasionally increases the VM usage by 4Kb!
Is there a memory leak in ODBC driver version 8.1.7.8?

Hello Thomas,
thanks for your tips, but they did not help. Activating Connection Polling did not change anything. And opening another connection did not help, either. I did it the following way:
Sub memtest2()
Dim conODBC As New ADODB.Connection
conODBC.ConnectionString = "Data Source='xxxx';User ID='xxx';Password='xxx'"
conODBC.Open
Dim Rs1 As Recordset, Rs2 As Recordset, DB1 As Database
Set DB1 = CurrentDb
Set Rs1 = DB1.OpenRecordset("select id from artikel")
Do While Not Rs1.EOF
    Set Rs2 = DB1.OpenRecordset("select * from artikel where id=" & Rs1("id"))
    'do something
    Rs2.Close
    Set Rs2 = Nothing
    Rs1.MoveNext
Loop
Rs1.Close
Set Rs1 = Nothing
DB1.Close
Set DB1 = Nothing
conODBC.Close
End Sub
Perhaps one of you has another tip how this can be done.
@Lukasz:
using a seperate ADODB.Connection works fine, but that does not solve the problem itself. At first I would have to rewrite much code and the second much bigger thing is that the memory leak occurs even when working with bound forms in MS Access. For example: I have one large form with many subforms on it. If i go from record to record on this form the memory usage is increasing dramatically fast and there is no way to influence what kind of connection MS Access is using for bound forms.
Regards
Thorstem

Similar Messages

  • Memory leak in ODBC driver

    I have a serious problem with the maxdb ODBC Driver. I tested Version 7.06.03.00 and some older Versions.
    Here is a little example for MS Access to show the problem. The table "artikel" is a linked maxdb table. The example code opens and closes a recordset in a loop. You can see the memory usage in the task manger going up and up. If you have many recordsets in the table, the system is crashing when it is going out of memory.
    If i change the linked table to for example a mysql-table the memory usage is stable. So I think there must be a memory leak in the maxdb odbc driver.
    Example code:
    Sub memtest()
    Dim RS1 As Recordset, RS2 As Recordset, DB1 As Database
    Set DB1 = CurrentDb
    Set RS1 = DB1.OpenRecordset("select id from artikel")
    Do While Not RS1.EOF
        Set RS2 = DB1.OpenRecordset("select * from artikel where id=" & RS1("id"))
        'do something
        RS2.Close
        Set RS2 = Nothing
        RS1.MoveNext
    Loop
    RS1.Close
    Set RS1 = Nothing
    DB1.Close
    Set DB1 = Nothing
    End Sub
    I hope you can follow me and find the leak.
    Thorsten

    Hello Thomas,
    thanks for your tips, but they did not help. Activating Connection Polling did not change anything. And opening another connection did not help, either. I did it the following way:
    Sub memtest2()
    Dim conODBC As New ADODB.Connection
    conODBC.ConnectionString = "Data Source='xxxx';User ID='xxx';Password='xxx'"
    conODBC.Open
    Dim Rs1 As Recordset, Rs2 As Recordset, DB1 As Database
    Set DB1 = CurrentDb
    Set Rs1 = DB1.OpenRecordset("select id from artikel")
    Do While Not Rs1.EOF
        Set Rs2 = DB1.OpenRecordset("select * from artikel where id=" & Rs1("id"))
        'do something
        Rs2.Close
        Set Rs2 = Nothing
        Rs1.MoveNext
    Loop
    Rs1.Close
    Set Rs1 = Nothing
    DB1.Close
    Set DB1 = Nothing
    conODBC.Close
    End Sub
    Perhaps one of you has another tip how this can be done.
    @Lukasz:
    using a seperate ADODB.Connection works fine, but that does not solve the problem itself. At first I would have to rewrite much code and the second much bigger thing is that the memory leak occurs even when working with bound forms in MS Access. For example: I have one large form with many subforms on it. If i go from record to record on this form the memory usage is increasing dramatically fast and there is no way to influence what kind of connection MS Access is using for bound forms.
    Regards
    Thorstem

  • Oracle ODBC Driver version

    Hello,
    I installed the latest ODAC version (ODAC 11.2 Release 3 and Oracle Developer Tools for Visual Studio (11.2.0.2.1)) on my Windows system.
    However, when I check the ODBC driver version in ODBC Data Source Administrator I see:
    Orcale in OraClient11g_home1 - version 11.01.00.07
    I was expecting version 11.2.0.2.0
    How can I check what Oracle ODBC driver version I have installed?
    Thank you,
    M.R

    Problem solved, the driver has been updated but not the version number+ (there is a bug filled for that).
    Edited by: user7047382 on Jan 12, 2011 9:51 AM

  • Has anybody had any problems with the ODBC driver version 10.2.0.2.0?

    Hi,
    I have experienced a problem with my current version of the ODBC driver (version 10.1.0.2) and have been advised to upgrade to the newest version 10.2.0.2.0.
    As the driver was only released a couple of months ago, I am a bit wary about upgrading. Has anybody out there had any issues with the reliability of this driver or does it seem to be pretty stable?
    Thanks very much,
    Caroline

    Sorry, forgot to mention it is on linux.
    Setting SetJavaHome in the jdev.conf did not help.
    I did find a way to at least start the IDE though.
    Either comment out SetJavaVM in the jdev.conf or start jdev with the -client option
    Also to note:
    I downloaded the jdk 1.4.2 32 bit for x86 and i can't get jdev to start:
    current locale is not supported in X11, locale is set to CX locale modifiers are not supported, using defaultjava.lang.InternalError: Current locale is not supported
    at sun.awt.motif.MWindowPeer.pSetTitle(Native Method)
    at sun.awt.motif.MWindowPeer.init(MWindowPeer.java:97)
    at sun.awt.motif.MFramePeer.<init>(MFramePeer.java:58)
    So right now i'll try to hack it with j2se 5...

  • Insert into CLOB fails with Oracle ODBC driver version 9.02.00.65

    I tried to insert into CLOB using the latest Oracle ODBC driver 9.02.00.65 and it fails. But the same works with earlier versions of ODBC driver earlier to 9.02.00.65 ie., 9.02.00.63.
    Here is the code snippet I tried. Any help now is highly appreciated as I am in the crunch time.
    I tried the same code snippet with VARCHAR2 column with the same driver and it works.
    ** CONVDSN.C - This is the ODBC sample code for
    ** creating File DSN pointers to machine DSNs.
    **This code is furnished on an as-is basis as part of the ODBC SDK and is
    **intended for example purposes only.
    #include <windows.h>
    #include <stdio.h>
    #include <tchar.h>
    #include <sql.h>
    #include <sqlext.h>
    #include <odbcinst.h>
    #include <sqltypes.h>
    #define MAXDATALEN 25 //maximum data length per column
    #define MAX_COL 15 //maximum column in result set
    #define MAX_ROW 100 //maximum number of rows
    #define MAXBUFLEN 256
    #define SQLERR_FORMAT "SQL Error State:%s, Native Error Code: %lX, ODBC Error: %s"
    #define MAXDISPLAYSIZE MAX_COL*(MAXDATALEN+1)
    #define SQLWRNMSGTITLE "SQL_SUCCESS_WITH_INFO results"
    #define SQLERRCNTDTITLE "SQL_ERROR results continued"
    #define SQLWRNMSGTITLE "SQL_SUCCESS_WITH_INFO results"
    #define SQLWRNCNTDTITLE "SQL_SUCCESS_WITH_INFO results continued"
    #define NULLDATASTRING "SQL_NULL_DATA"
    #define SQLERRMSGTITLE "SQL_ERROR results"
    // prototypes
    void ExpandFileName(LPSTR szFileDSNName, LPCSTR szDSNName);
    void MakeLegalName(LPSTR szLegalDSNName, LPCSTR szDSNName);
    // main routine: Iterate through the user and system DSNs, creating a pointer
    // to each.
    void FAR PASCAL DisplayError(SQLRETURN nResult, HWND hWnd, SWORD fHandleType, SQLHANDLE handle);
    void insertSelectClob();
    void checkRcCode(RETCODE rc);
    int main (int argc, char* argv[])
         insertSelectClob();
    return 0;
    void FAR PASCAL DisplayError(SQLRETURN nResult, HWND hWnd, SWORD fHandleType, SQLHANDLE handle)
         UCHAR szErrState[SQL_SQLSTATE_SIZE+1]; // SQL Error State string
         UCHAR szErrText[SQL_MAX_MESSAGE_LENGTH+1]; // SQL Error Text string
         char szBuffer[SQL_SQLSTATE_SIZE+SQL_MAX_MESSAGE_LENGTH+MAXBUFLEN+1];
         // formatted Error text Buffer
         SWORD wErrMsgLen; // Error message length
         UDWORD dwErrCode; // Native Error code
         int iSize; // Display Error Text size
         SQLRETURN nErrResult; // Return Code from SQLGetDiagRec
         SWORD sMsgNum = 1;
         SWORD fFirstRun = TRUE;
         char szDispBuffer[MAXDISPLAYSIZE+1]; // Display Buffer
         szBuffer[0] = '\0';
         do
              // continue to bring messageboxes till all errors are displayed.
              // more than one message box may be reqd. as err text has fixed
              // string size.
              // initialize display buffer with the string in error text buffer
              strcpy(szDispBuffer, szBuffer);
              // call SQLGetDiagRec function with proper ODBC handles, repeatedly until
              // function returns SQL_NO_DATA. Concatenate all error strings
              // in the display buffer and display all results.
              while ((nErrResult = SQLGetDiagRec(fHandleType, handle, sMsgNum++,
                   szErrState, &dwErrCode, szErrText,
                   SQL_MAX_MESSAGE_LENGTH-1, &wErrMsgLen)) != SQL_NO_DATA)
                   if(nErrResult == SQL_ERROR || nErrResult == SQL_INVALID_HANDLE)
                   break;
                   wsprintf(szBuffer, SQLERR_FORMAT, (LPSTR)szErrState, dwErrCode, (LPSTR)szErrText);
                   iSize = strlen(szDispBuffer);
                   if (iSize && (iSize+strlen(szBuffer)+1) >= MAXDISPLAYSIZE)
                   break;
                   if (iSize)
                   strcat(szDispBuffer, "\n");
                   strcat(szDispBuffer, szBuffer);
              // display proper ERROR or WARNING message with proper title
              if (nResult == SQL_SUCCESS_WITH_INFO)
                   MessageBox(hWnd, szDispBuffer, (fFirstRun? SQLWRNMSGTITLE : SQLWRNCNTDTITLE),
                   MB_OK | MB_ICONINFORMATION);
              else
                   MessageBox(hWnd, szDispBuffer, (fFirstRun? SQLERRMSGTITLE : SQLERRCNTDTITLE),
                   MB_OK | MB_ICONEXCLAMATION);
              if (fFirstRun)
                   fFirstRun = FALSE;
         while (!(nErrResult == SQL_NO_DATA || nErrResult == SQL_ERROR || nErrResult == SQL_INVALID_HANDLE));
    void insertSelectClob()
    SQLCHAR clobdata[1001];
    SQLCHAR resultdata[1001];
    SQLINTEGER ind = SQL_DATA_AT_EXEC;
    SQLCHAR *bufp;
         SQLINTEGER cbOrderID = sizeof(SQLSMALLINT);
         SQLSMALLINT sTmp=13;
         SQLCHAR *sqlStmt1  = _T("INSERT INTO clobtbl(id, clob1) VALUES(?, ?)");
         SQLCHAR *sqlStmt2  = _T("SELECT id, clob1 FROM clobtbl");
    //     SQLCHAR *sqlStmt1  = _T("INSERT INTO testInsert(id, clob1) VALUES(?, ?)");
    // SQLCHAR *sqlStmt2  = _T("SELECT id, clob1 FROM testInsert");
    int clobdatalen, chunksize, dtsize, retchklen;
         HENV envHnd;
    HDBC conHnd;
    HSTMT stmtHnd;
    RETCODE rc;
         int nRowcnt=0;
         SQLPOINTER pToken = NULL;
    rc = SQL_SUCCESS;
    // ENV is allocated
    rc = SQLAllocEnv(&envHnd);
    // Connection Handle is allocated
    rc = SQLAllocConnect(envHnd, &conHnd);
    rc = SQLConnect(conHnd, T("testd734"), SQLNTS, T("ipathdba"), SQLNTS, T("ipathdba"), SQLNTS);
    printf(_T("Insert CLOB1 using SQLPutData...\n[%s]\n"), sqlStmt1);
    // Set CLOB Data
    int i;
    SQLCHAR ch;
    for (i=0, ch=_T('A'); i< sizeof(clobdata)/sizeof(SQLCHAR); ++i, ++ch)
    if (ch > _T('Z'))
    ch = _T('A');
    clobdata[i] = ch;
    clobdata[sizeof(clobdata)/sizeof(SQLCHAR)-1] = _T('\0');
    clobdatalen = lstrlen(clobdata); // length of characters
    chunksize = clobdatalen / 7; // 7 times to put
         rc = SQLAllocHandle(SQL_HANDLE_STMT, conHnd, &stmtHnd);
    // Step 1: Prepare
    rc = SQLPrepare(stmtHnd, sqlStmt1, SQL_NTS);
    // checkSQLErr(envHnd, conHnd, stmtHnd, rc);
    // Step 2: Bind Parameter with SQL_DATA_AT_EXEC
    rc = SQLBindParameter(stmtHnd,
    1,
    SQL_PARAM_INPUT,
    SQL_C_SSHORT,
    SQL_INTEGER,
    0,
    0,
    &sTmp,
    0,
    &cbOrderID);
    rc = SQLBindParameter(stmtHnd,
    2,
    SQL_PARAM_INPUT,
    SQL_C_CHAR,
    SQL_LONGVARCHAR,
    clobdatalen*sizeof(CHAR),
    0,
    (SQLPOINTER)clobdata,
    clobdatalen*sizeof(CHAR),
    &ind);
    // checkSQLErr(envHnd, conHnd, stmtHnd, rc);
    // Step 3: Execute
    rc = SQLExecute(stmtHnd);
         while (rc == SQL_NEED_DATA) {
              rc = SQLParamData(stmtHnd, &pToken);
              if (rc == SQL_NEED_DATA) {
                   for (dtsize=0, bufp = clobdata;
                        dtsize < clobdatalen;
                        dtsize += chunksize, bufp += chunksize)
                   int len;
                   if (dtsize+chunksize < clobdatalen)
                        len = chunksize;
                        rc = SQLPutData(stmtHnd, bufp, len*sizeof(SQLCHAR));
                   else
                        len = clobdatalen-dtsize;
                        rc = SQLPutData(stmtHnd, bufp, SQL_NTS);
              rc = SQLParamData(stmtHnd, &pToken);
    // Fails as row count retrieved is zero.
         rc = SQLRowCount(stmtHnd, &nRowcnt);
         if(rc != SQL_SUCCESS)
              DisplayError(rc, NULL, SQL_HANDLE_ENV, conHnd);
    rc = SQLFreeStmt(stmtHnd, SQL_CLOSE);
    printf(_T("Finished Update\n\n"));
    rc = SQLAllocStmt(conHnd, &stmtHnd);
    if (rc != SQL_SUCCESS)
    printf(_T("Failed to allocate STMT\n"));
    exit(-1);
    // Clear Result Data
    memset(resultdata, 0, sizeof(resultdata));
    chunksize = clobdatalen / 15; // 15 times to gut
    rc = SQLExecDirect(stmtHnd, sqlStmt2, SQL_NTS); // select
         if(rc != SQL_SUCCESS)
              DisplayError(rc, NULL, SQL_HANDLE_ENV, conHnd);
    // Step 2: Fetch
    rc = SQLFetch(stmtHnd);
    for(dtsize=0, bufp = resultdata;
    dtsize > sizeof(resultdata)/sizeof(CHAR) && rc != SQL_NO_DATA;
    dtsize += chunksize-1, bufp += chunksize-1)
    int len; // len should contain the space for NULL termination
    if (dtsize+chunksize<sizeof(resultdata)/sizeof(CHAR))
    len = chunksize;
    else
    len = sizeof(resultdata)/sizeof(CHAR)-dtsize;
    // Step 3: GetData
    rc = SQLGetData(stmtHnd,
    2,
    SQL_C_CHAR,
    (SQLPOINTER)bufp,
    len*sizeof(CHAR),
    &retchklen);
    if (!_tcscmp(resultdata, clobdata))
    printf(_T("Succeeded!!\n\n"));
    else
    printf(_T("Failed!!\n\n"));
         if (conHnd)
              SQLFreeConnect(conHnd);
         if (envHnd)
              SQLFreeEnv(envHnd);
    }

    Hi,
    Since 9.2 has been desupported for error correction you will not be able to download that version from OTN. You should ask whoever is providing the training if their is an alternate version you can use. The only versions that you will be able to download from oracle.com is 10.2 11.1, and 11.2.

  • Memory leak in my driver (lengthy)???

    Someone please give me a hint on what happens here:
    Test Program
    ===========
    #define MEMSZ (256*1024)
    main()
    int devdes, count;
    char devname[31];
    unsigned char * buffer;
    strcpy(devname,"/dev/mydriver\0") ;
    devdes = open(devname,O_RDWR) ;
    buffer = (unsigned char *)malloc(MEMSZ);
    while(1){
    i++;
    count = read(devdes, buffer, MEMSZ);
    if(count < 0)
    printf("i = %d ERROR - errno=%d\n",i, errno);
    break;
    My Driver
    =======
    my_read(dev_t dev, struct uio uiop, cred_t credp) {
    return (physio(my_strategy, (struct buf *)NULL, dev, B_READ, my_minphys,
    uiop));
    my_strategy(struct buf *bp)
    //pdx is my soft state
    pdx->buf_p = bp;
    Allocate dma handle for user data buffer
    if(ddi_dma_alloc_handle(pdx->dip, &pdx->dma_attr, DDI_DMA_DONTWAIT,
    (caddr_t)0, &pdx->dma_handle) != DDI_SUCCESS) {
    cmn_err(CE_WARN,"my_strategy: instance %d: ddi_dma_alloc_handle failure!",
    instance) ;
    bp->b_error |= EIO;
    bp->b_flags |= B_ERROR;
    biodone(bp);
    return (0);
    if (ddi_dma_buf_bind_handle(pdx->dma_handle, bp, DDI_DMA_READ|
    DDI_DMA_CONSISTENT, DDI_DMA_DONTWAIT,
    (caddr_t)0, &dma_cookie, &cookie_count) != DDI_DMA_MAPPED) {
    cmn_err(CE_WARN,"my_strategy: instance %d: ddi_dma_buf_bind_handle
    failure!", instance);
    ddi_dma_free_handle(&pdx->dma_handle);
    bp->b_error |= EIO;
    bp->b_flags |= B_ERROR;
    biodone(bp);
    return (0);
    * set up descriptor lists on the board based on each cookie
    pdx->cookie_count = cookie_count;
    ddi_put32(pdx->my_regs_handle,(uint32_t *)(pdx->my_base+HL_COMMAND),
    CMD_SGREAD);
    temp = HL_ARGS;
    do {
    ddi_put32(pdx->my_regs_handle,(uint32_t *)(pdx->my_base+temp),
    dma_cookie.dmac_size);
    temp += 4;
    ddi_put32(pdx->my_regs_handle,(uint32_t *)(pdx->my_base+temp),
    dma_cookie.dmac_address);
    temp += 4;
    cookie_count--;
    if (cookie_count != 0)
    ddi_dma_nextcookie(pdx->dma_handle, &dma_cookie);
    else break;
    } while (1);
    ddi_put32(pdx->my_regs_handle,(uint32_t *)(pdx->my_base+temp), 0);
    temp += 4;
    ddi_put32(pdx->my_regs_handle,(uint32_t *)(pdx->my_base+temp), 0);
    DELIVER_COMMAND(pdx, 1); //start DMA
    return (0);
    #define DMA_MINPHYS 0xffffffff
    my_minphys(struct buf *bp)
    minphys(bp);
    bp->b_bcount = (min(bp->b_bcount, DMA_MINPHYS));
    my_intr(...)
    mutex_enter(&pdx->mutex);
    ddi_dma_unbind_handle(pdx->dma_handle);
    ddi_dma_free_handle(&pdx->dma_handle);
    biodone(pdx->buf_p);
    mutex_exit(&pdx->mutex);
    return(DDI_INTR_CLAIMED);
    NOTE:
    The following is dma_attr:
    pdx->dma_attr.dma_attr_version = DMA_ATTR_V0;
    pdx->dma_attr.dma_attr_addr_lo = 0x0;
    pdx->dma_attr.dma_attr_addr_hi = 0xFFFFFFFF;
    pdx->dma_attr.dma_attr_count_max = 0xFFFFFFFF;
    pdx->dma_attr.dma_attr_align = 0x1;
    pdx->dma_attr.dma_attr_burstsizes = 0x17;
    pdx->dma_attr.dma_attr_minxfer = 0x4;
    pdx->dma_attr.dma_attr_maxxfer = 0xFFFFFFFF;
    pdx->dma_attr.dma_attr_seg = 0xFFFFFFFF;
    pdx->dma_attr.dma_attr_sgllen = 1;
    pdx->dma_attr.dma_attr_granular = 1;
    pdx->dma_attr.dma_attr_flags = 0x0;
    What Happens
    ============
    My test program does nothing but read 256k data out of my PCI board and
    throw them to the ground. It is a stress test. It stops and shows
    "i = 8192 ERROR = 22", which I figure means 8192 x 256K = 2G. I check my
    driver code, and I don't allocate any memory and I only use whatever the
    user program allocates. I unbindle_handle and free_handle for each
    interrupt.(I only have one interrupt from my board; that is DMA done
    interrupt). I hope I have given as much detail as possible. Is there
    anything wrong in my driver that causes the possible memory leak?
    Thanks

    Hi tyh,
    There is a lovely feature in mdb that allows you to track down memory usage in kernel modules (including drivers of course), so the hint is rather straight-forward: get the mdb (comes with Solaris 8), read the AnswerBook (available at docs.sun.com) and you are 75% done :).
    Good luck ;)
    --I.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Need RDB ODBC driver version 2.10.17

    I need this older release for Visual Foxpro 9.0 ODBC connections. This version is no longer available for download on your website. Or, alternatively, I need a way to transfer this working release from one PC to another. Version 3 works with some apps but not VFP 9.

    here you should find what you are looking for:
    http://www.oracle.com/technetwork/developer-tools/visual-studio/downloads/index.html

  • Memory Leak with Oracle ODBC Driver for Long Raw columns

    Oracle version : 8.1.7
    Platform : Win2K
    Oracle ODBC Driver version : 8.0.1.7.5.0.0
    Hi,
    I've got an Oracle database upgraded from
    V8.0.5 to V8.1.7 which has a table having one long raw +
    normal columns. I was able to observe distinct memory
    leaks (approx 80K) when using ODBC interface calls (thro C++ code) that referenced a combination of normal & long raw columns in a select statement. However, this leak was not observed when only normal columns were present in the
    select statement. Is there any known restriction for using
    long raw columns with other columns? Or do long raw columns have a known memory leak problem thro ODBC?
    Thanks!
    Regards
    Sanchayan

    Did you ever get an answer on this issue?
    Thanks in advance

  • Oracle ODBC Driver - latest version

    Hello,
    I installed the latest ODAC version (i.e. ODAC 11.2 Release 3 and Oracle Developer Tools for Visual Studio (11.2.0.2.1)) on my Windows system.
    However, when I check the ODBC driver version in ODBC Data Source Administrator I see:
    Oracle in OraClient11g_home1 - version 11.01.00.07
    I was expecting version 11.2.0.2.0
    Also, if I create a new ODBC data source and click on Test Connection -> About, I get:
    Oracle ODBC Driver
    Version 11.1.0.7.0
    Copyright @ 1996, 2007 Oracle
    I am really confused, why I cannot see the latest 11.2.0.2 version installed???
    Thank you,
    M.R

    There's a bug filed for that. The driver is actually 11202 (you can check the build date), but the version number didnt get rev'd.
    Greg

  • Need to install ODBC driver 9.2.0.6.5 to client but how?

    Greetings.
    I have client PC (Not including DataBase engine) and I want install ODBC-driver version 9.2.0.6.5 (I have reasons). PC is normal Win XP 32bit.
    I found this driver from Oracle's download pages -> OK
    It's *.jar file, so I need to run it via Installer -> NOK
    In Client PC I do not have this Oracle Installer, what I can to do?
    It's seems that ODBC-driver need installer version 2.3.0.5.0a or later...
    I will be very appreciate if someone can help.

    Or download the 10g client, its in there and U can run it without having to install 10g...
    this is whgat we did but it crashes when we try to create a ODBC DSN in control panel based on the new ODBC driver, this is what I am looking into currently

  • Use of parameter sets with prepared INSERTS via Oracle's ODBC driver 8.1.6.4

    Oracles ODBC driver, version 8.1.6.4, allows for driver configuration of three different batch auto commit modes. If I select COMMIT ALL SUCCESSFUL STATEMENTS and cause my app to execute a prepared and parameterized INSERT statement that makes use of parameter value sets, all records up to the first record that causes an error are committed. What is happening? The driver returns only one diagnostic record, with SQLGetDiagField returning the index of the bad record through the [SQL_DIAG_ROW_COUNT] field. Regardless of whether SQLExecute executed successfully or not, the [SQL_ATTR_PARAM_OPERATION_PTR]/ [SQL_ATTR_PARAM_STATUS_PTR] buffers are not initialized by the driver. Even more so, the drive returns SQL_PARC_NO_BATCH for SQLGetInfo when [SQL_PARAM_ARRAY_ROW_COUNTS] is passed. Does anyone know if the driver fully or partially or does not support use of parameter value sets. If it is only partial implementation, ignoring the parameter operation and status buffers, in my opinion, greatly diminishes any real use of parameter value sets. Does anyone known if the above problems disappear with use of Oracles ODBC driver, version 8.1.7.3.0?
    All help is greatly appreciated,
    Chris Simms
    null

    <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">quote:</font><HR>Originally posted by Justin Cave ([email protected]):
    What version of the database do you have on the back end?
    Justin<HR></BLOCKQUOTE>
    Oracle8i version 8.1.6. Looking at the specs that come with the ODBC driver upgrades, version 8.1.7.3.0 [which requires Oracle*i version 8.1.7] and 8.1.6.4, it seems that similar enhancements/fixes were made to both. I honestly do not know if what I am attempting is possible with either of the ODBC drivers. I really would prefer not to have to drop down to programming using OCI.
    Chris
    null

  • Oracle ODBC Driver 8.1.7.8b causing MFC OpenEx() delay

    Hi:
    I have installed the Oracle ODBC Driver version 8.1.7.8b on a WINNT 4.0 Workstation with SP6a. I have an MFC test app with the following code:
    PostStatus(ERROR_NOERROR, APP_NAME, "Calling OpenEx()");
    CDatabase db;
    if(db.OpenEx(_T("DSN=MYTESTDSN;UID=USERID;PWD=PASSWORD"), CDatabase::openReadOnly|CDatabase::noOdbcDialog))
         PostStatus(ERROR_NOERROR, APP_NAME, "OpenEx() success,calling Close()");
         db.Close();
    } // OpenEx()
    else // OpenEx() error
         PostStatus(ERROR_MODERATE, APP_NAME, "Error opening database,OpenEx() failed!");
    The above OpenEx call is taking upto 3 seconds to return. When I use Microsoft Oracle ODBC driver, it takes less than 0.5 sec to connect/disconnect.
    Any idea why OpenEx() is taking that long? I've compiled this using VC++ 6.0 SP5, on a WIN2K and WINNT system but I get the same result.
    Thanks,
    Amit.

    This forum is for feedback about the OTN program and problems with OTN accounts. Technical questions cannot be answered here. Please post your question in the appropriate product or technology forum. http://forums.oracle.com/forums/index.jsp?cat=48

  • Crystal Report Oracle ODBC driver invalid Thai character display problem

    Hi,
       My server has CR Oracle ODBC 5.1 installed on last week. We have several reports in the servers which called by our Application to export to text file and pdf file. Sometimes, the output (both text file and pdf file) can't display Thai character correctly. The text file show Thai character in question mark and pdf file show in square box. This problem occur randomly and disappear without doing anything. Sometimes the problem occur for an hour and gone but sometimes occur 10-15 minutes and gone. This problem also not happen every days. Once the problem occur, all reports with Thai character will fail.
       However, we have another server installed the same Application, same OS level, same OS patches and same CR Oracle ODBC driver version installed on the same time as above server (the problem server). This server does not have any problems.
       Any suggestions would be appreciated.
    Best Regards,
    Noppadon S.

    Hi Noppadon,
    Thank you for the info. If it happens randomly in their application then it's something they need to debug. Could even be in the ODBC driver.
    I suggest you tell them that because it works sometimes it shows the issue is likely in their software because if it failed all the time then it would be in Crystal dll's. They need to debug the problem, suggest they use tools like Process Monitor from www.sysinternals.com to step through to see where or what part is failing. If they having logging abilities that may help to find out what step is failing and in which API.
    At this point we have no way of determining where the problem is, it's failing in their application and no one but them know what or how they are using CR runtime files.
    If you can duplicate the problem using Crystal Report Designer then it's our problem, if not they have to help you to show us it is a CR issue.
    Sorry we can't be of more help but without know their code we can't suggest anything to try. Suggest they log a call with support here to help them debug the problem if they don't know what to do.
    Thank you
    Don

  • Oracle ODBC driver 8.1.6.2.0

    Hi
    I want know where can I download the Oracle ODBC driver version 8.1.6.2.0?I read in the Oracle support that the access violation error due to network problems is fixed out in this driver version.Please guide me where to download it.
    Thanking in advance

    We haven't released 8.1.6.2 yet. We should be wrapping up new work on this version and moving into the testing phase shortly.
    Justin Cave
    ODBC Development

  • ODBC Driver-specific TNSName issue

    I seem to be having a problem resolving TNSnames frm a local TNS file that is unique to the ODBC driver and would appreciate suggestions.
    I have Oracle Client 10.2.0.3 and the like-versioned ODBC driver, on Windows Vista SP1. We are configured to use a central TNS Names file with an IFILE entry that includes a per-user names file. The IFILE entry looks like this:
    IFILE=h:\oracle_tns\tnsnames.ora
    (Everyone has an H drive in our environment).
    The Oracle ODBC Driver, ONLY, seems to not be able to use names in the 'included' personal names file (you always get a name not resolved error). Interestingly, the dropdown list in the TNS Service Name part of the Oracle DNS configuration dialog has an entry for 'IFILE', and not any entries for the names in the included file. Even manually entered names don't work.
    HOWEVER, these same names work fine with both SQL*Plus and the Microsoft ODBC Driver for Oracle.
    Looks like a bug in the Oracle ODBC driver - though I can't understand why it's doing name lookup differently than SQL*Plus is. ANyway, did a look with Process Monitor and verified that doing a test connection in the ODBC DSN configuraiton dialog doesn't even try to open the 'included' file, just the central one, while doign the same thing with SQL*Plus DOES open the 'included' file.
    Can anyone confirm this issue occurs and/or doesn't occur, and with other ODBC driver versions? Anyone know of any fiix or workaround to get my included file's names to work?

    Doh.
    I have figured out my problem.
    We have a custom set of policy for Vista UAC in our setup, especially for 'privileged users', who have administrator-like permissions. When these users get elevated, some quirk in how things works means they lose a few things - one of those things is the 'H' drive. I noticed that eaerlier in testing our new PC iamges but hadn't tweaked to the ramifications. I'll have to ask our Windows admin guys why it works that way; not an Oracle issue, anyhow.
    I'd been testing the Oracle ODBC driver using the ODBC Administrator applet.
    When you start the applet, and you're a 'privileged user', you get the UAC elevation prompt.
    So I was, in effect, disconnecting my H drive. Needless to say, that disconnected me from my personal names file...
    Tested with an ODBC-enabled app, not elevated, and everything works fine.
    Thanks for the suggestion to check with purely-local files, which got me started; would've taken quite a bit longer to figure things out otherwise!

Maybe you are looking for