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
Similar Messages
-
Oracle ODBC Driver adds bind variable when browsing whole table in Access
Hi, we are looking for some reasons why we may see this behavior in the Oracle ODBC driver (10gR2 and 11g) when using Microsoft Access (2003 or 2007)...
1) Link a table from the Oracle database.
2) Double-click the newly linked table to "browse" it.
Oracle sends the following statement to the server:
{color:#0000ff}select * from linked_table where primary_key = :b1{color}
It then proceeds to read the entire table.
If I tell Microsoft Access that there is no primary key, the query gets sent as:
{color:#0000ff}select * from linked_table{color}
And the query comes back as soon as the first 100 or so rows are fetched which is quite quickly.
ADDITIONAL NOTES:
1) If the table has a primary key or unique constraint, Microsoft Access automatically assigns that as the primary key.
2) We can stop the behavior in #1 if we wrap a view around it which prevents Access from discovering that information and then it prompts for a primary key definition.
3) If we use the Microsoft ODBC driver, the bind variable is not added no matter what the primary key defintiion is.
We're stumped and are looking for solutions and/or workarounds without having to wrap all of our tables in views to hide the fact that there is a primary key.
Thanks,
SteveThanks for the response, Greg.
The specific question I am seeking an answer for (sorry it was not clear on my first message) is this:
Why does the Oracle driver add the bind variable to the query only when the primary key is defined?
The Microsoft ODBC driver does not add the bind variable with or without a primary key defined.
You asked how I traced this statement and what I am doing is launching the query in Access and then using TOAD to view the V$SESSION and V$SQL_TEXT_WITH_NEWLINES views. All I do is change the driver. This is just for a simple browse table (double-click on the table) which should send
select * from table
However, whenever I use the Oracle ODBC driver (with a primary key defined) it sends
select * from table where primary_key = :1
If I remove the primary key on the table definition, the Oracle driver sends
select * from table
What is it about the primary key that could cause that behavior?
I don't think it is the MDAC/Jet level because this is the conversion to the native SQL statement not the Jet version. I know the Oracle driver has to do that part because you have those workaround options like don't add the RULE hint, etc. That's not part of the Jet engine.
Hope that helps. I'm just baffled over this one and wish I knew where to go next. -
Memory Leak when I get the SP return refcursor by oracle ODBC driver:
Oracle server:HP-Unix
Oracle Version: 9.2.0.6.0
Application Server: windows2003
Develop tool : VC++;
Question:
when I get the return refcursor by OLEDB.Oracle, there is not any memory leak and work well. But when I change the driver to ODBC Oralce in OraHome92"
there will be an 56k memory leak.
And in the other hand if I call an store precedure without return ref. Both driver /way can work well.
Can you give me the advice? thanks a lot.
Code such as:
_ConnectionPtr m_AdoConnection;
_CommandPtr pcmd = NULL;
_RecordsetPtr sp_rs = NULL;
_bstr_t bstrConstruct = _bstr_t("DSN=test;Uid=test;Pwd=test;PLSQLRSet=1");
HRESULT hr = CoCreateInstance(__uuidof(Connection),NULL,CLSCTX_INPROC_SERVER,__uuidof(_ConnectionPtr),(LPVOID *)&m_AdoConnection);
if (FAILED (hr) ) throw hr ;
m_AdoConnection->PutCursorLocation(adUseClient) ;
m_AdoConnection->IsolationLevel = adXactSerializable;
m_AdoConnection->Mode = adModeShareExclusive;
bstr_t bstrEmpty(L"") ;
m_AdoConnection->Open (bstrConstruct, bstrEmpty, bstrEmpty, -1) ;
SAFE_CALL(m_spObjectContext->CreateInstance(__uuidof(Command),__uuidof(_CommandPtr),(LPVOID *)&pcmd));
if(pcmd == NULL)
throw CAtlExceptionEx(E_POINTER,"pcmd is NULL");
pcmd->CommandText = _bstr_t(L"wec_pkg_spl.wec_proc_spl_check");
pcmd->CommandType = adCmdStoredProc;
_bstr_t id = _bstr_t("65650000");
pcmd->Parameters->Append(pcmd->CreateParameter(_bstr_t(L"id"),DataTypeEnum(adVarChar),adParamInput,2000,_variant_t(id)));
pcmd->Parameters->Append(pcmd->CreateParameter(_bstr_t(L"errcode"),DataTypeEnum(adNumeric),adParamOutput,4));
pcmd->Parameters->Append(pcmd->CreateParameter(_bstr_t(L"errdescription"),DataTypeEnum(adVarChar),adParamOutput,2000));
pcmd->ActiveConnection = sp_con.m_AdoConnection;
sp_rs = pcmd->Execute(NULL,NULL,adCmdStoredProc);
pcmd->Release;
sp_rs->Close();
if (m_AdoConnection->State == adStateOpen)
m_AdoConnection->Close();
wec_pkg_spl.wec_proc_spl_check arguments:
id varchar2 in
flowpaths ref cursor out
errcode number out
errdescription varchar2 out
Message was edited by:
[email protected]I'm using the oracle ODBC driver 8.05.10 with MFC and client version 8.0.5. In my experience you can't prevent memory leaks with that or earlier versions of the ODBC driver. Client patchkits or service packs for NT or the Visual Studio doesn't solve the problem.
The following code will result in a memory leak with the oracle driver. With every expiration of the timer the leak will grow.
void CTestOdbcOracleDriverDlg::OnTimer(UINT nIDEvent)
TCHAR errString[255];
//open the database with class CDatabase
//use of CRecordset
TRY {
//my table name is AL_ALARME_LOG
pMyRecordset->Open(CRecordset::dynaset,"SELECT * FROM AL_ALARME_LOG",CRecordset::none);
//do something with the data
Sleep(0);
pMyRecordset->Close();
CATCH_ALL(error) {
error->GetErrorMessage(errString,255);
DELETE_EXCEPTION(error);
END_CATCH_ALL
CDialog::OnTimer(nIDEvent);
The same code with the Microsoft ODBC driver
doesn't cause memory leaks.
Andreas ([email protected]) -
Setting up an Oracle ODBC Driver and Essbase
Hi all,
I am trying to retrieve data directly from Essbase into SAS (Statistical Analysis Software) by setting up an Oracle ODBC Driver and Essbase.
I read this document in the below link and I was convinced that I could use ODBC to connect to Essbase, but our data administrator says that Essbase is an OLAP database and can NOT use ODBC.
http://docs.oracle.com/cd/E10530_01/doc/epm.931/esb_sqlint.pdf
I am a SAS programmer, but I have no background in technical configuration, so I was wondering if someone can help me if it is really possible or not to connect to Essbase using ODBC.
If it is possible, I have a follow up question...
I followed this link below to do a set up and did so successfully before the actual step to add a new data source to ODBC driver.
I should be able to select the TNS Service Name from the drop down list. This name will be that which I named in the TNSNAMES.ora file’s Alias = section, but I don’t see this option…
It would be great if someone knows why I do not see this option populated under drop-down in the screenshot.
Setting up an Oracle ODBC Driver and Data Source | Ten Six Consulting1) As I recall, the problem of returning 0 is caused either by an outdated version of the ODBC driver or of the MDAC (Microsoft Data Access Components). Updated versions of the ODBC driver are available here on OTN and updated versions of the MDAC are available at <http://www.microsoft.com/data>.
2) Versioning-
To determine the version of the Oracle8 ODBC driver you should be using, simply match up the first three digits of the ODBC driver version and the Oracle client version (see chart Mr. Oehl posted). The 8.1.5.6 ODBC driver should go on an 8.1.5.x.x system, the 8.1.6.1 ODBC driver should go on an 8.1.6.x.x system. If you have an Oracle7 client, you'll need one of the version 2.5x Oracle7 ODBC drivers.
Any ODBC driver should connect with any Oracle database. No need to match anything up there. You can determine the version of the database you're connected to by calling the ODBC function SQLGetInfo with the InfoType SQL_DBMS_VER.
A little elaboration on version numbers
- Oracle versions are generally 5 digits (i.e. 8.0.5.2.4, 8.1.5.1.1). The versions that you get on CD's are generally (always?) x.x.x.0.0 versions (i.e. 8.1.5.0.0, 8.1.6.0.0). The last two digits are incremented by periodic patchkit releases <ftp://oracle-ftp.oracle.com/server/patchsets/wgt_tech/server/windowsNT/>
- ODBC drivers must report versions in 4 parts, each part having 2 digits (i.e. 8.01.05.05). Since we're lazy about typing extra 0's, we simplify this and just refer to the 8.1.5.5 ODBC driver.
- The 8.1.5.x ODBC driver is built with the client libraries that ship with Oracle 8.1.5.x.x, the 8.1.6.x ODBC driver is built with the client libraries that ship with Oracle 8.1.6.x.x, etc. This is why I said above that you need to match the first 3 version numbers between Oracle client and ODBC driver to determine which to use.
I hope this is more enlightening than confusing...
Justin Cave
ODBC Development
null -
MS ODBC or Oracle ODBC driver?
Can anyone tell me which is the correct driver to use when developing front end MS Access 2003 to retrieve and update data on a Open VMS platform with Oracle 8.1.7.3 database?
I have serval Access 2000 databases that run on most WinNT or W2K clients with a couple of W2K Dell exceptions. These Access 2000 db's connect to the Oracle database using linked tables and SQL pass-through queries that work with ODBC Manager-DNS system setup using the Microsoft for Oracle ODBC driver.
Now we are upgrading to Office Pro 2003 so new W2K images have been setup with Oracle 8.1.7 Client. SQL*Plus works on these clients but when I create the System DNS the Access databases return an error "ODBC connection failed". I can however connect with a pass-through query using Oracle's ODBC driver. Not enough time in roll-out plan to change the ODBC connection string in hundreds of Access SPT queries.
Please help!
Bonnieif you still need assistance reagarding this...email me directly..
shah
null -
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. -
How to select active Oracle ODBC Driver programmatically?
Hi,
My application creates ODBC DSN to connect with Oracle 10g database server. I need to find out Oracle Driver installed on the system programmatically. I am trying to read KEY_<PRODUCT NUMBER> registry key and eventually searching ORACLE_HOME value. This helps me in searching Oracle Driver in ODBCINST.INI registry key. (Oracle in OraDb10g_home1)
If multiple Oracle clients are installed on the same system, multiple KEY_<PRODUCT NUMBER> registry keys and oracle drivers would be available. I am not sure which and how to select the current active oracle driver.
Oracle in OraDb10g_home1
Oracle in OraDb10g_home2
Can anybody help me out? Can I use inventory file (inventory.xml) to determince current active home directory? Reading PATH environment variable to identity active home directory would be tedious.Please look at following thread for answer.
How to select active Oracle ODBC Driver programmatically? -
Installing the Oracle ODBC driver
Is there any way to wrap only the oracle odbc driver in an
install program?
we want to avoid having to go through an entire oracle client
install.
Any help would be much apprecitaed.
nullRadha (guest) wrote:
: Is there any way to wrap only the oracle odbc driver in an
: install program?
: we want to avoid having to go through an entire oracle client
: install.
: Any help would be much apprecitaed.
I have the same question. The universal installer is too
complicated for simple client application connectivity
installation.
null -
Download and installing oracle odbc driver alone
Hi all,
I wanted to find out if I can download just the oracle odbc driver and install in without actually installing oracle database or client version on windows PC.
thank youYou will need to have some Oracle software on your machine for the Oracle ODBC driver to function.
If you can use the 10g client, you can install the 10g Instant Client and the ODBC driver. The Instant Client is a minimal set of libraries that allow components like the Oracle ODBC driver to work. The 10g client, though, is not certified to connect to databases earlier than 8.1.7.
If you have to use an earlier version, you have to install the full Oracle client, which is not a small install, to be able to use the Oracle ODBC driver.
Justin
Distributed Database Consulting, Inc.
http://www.ddbcinc.com/askDDBC -
Installing Oracle ODBC driver from within another installation
My application requires ODBC driver. Is it possible/recommended
to install the driver from within my installation program (other
than invokig the ODBC's setup program)? If so, what are the
files that need to be installed, the registry entries that need
to be updated and other activities perfromed?
Thanks
MichaelIn order for the ODBC driver to function properly, the Oracle
client must have been installed on the user's machine. If the
Oracle client has been successfully installed, users will have
the Oracle ODBC driver.
Since the Oracle client install is very large as installers
go, you probably don't want to package this with your app. In
addition, the Oracle client installation is pretty significant
in terms of what it does, so you definitely don't want to try to
replicate that work in your installer.
Justin -
What means Rdb in "Oracle ODBC Driver for Rdb" ...
... I assume data basse but what about the upper R ? ^^
thanksoh ok thanks, for OpenVMS platforms only and R as "relational" oki doki
I'm surprise that, when I'm looking for the oracle odbc driver 8, I find almost only result for Rdb, is it not compatible with a windows standard edition as 2000, xp ... -
Hi Everybody,
I have a problem with SQL queries with /*+ RULE */ base hints being posted to an Oracle database. I have reason to believe that these queries are generated by the Oracle ODBC Driver itself. Although I don't have a performance problem per se, I need to reduce these hints to a minimum so we can fine-tune the database as a whole.
* The views that are hit are always the same: All_Objects, All_Arguments, All_Synonyms,
* We are using Oracle ODBC driver 10.02.00.04 for Windows, the database server is a RS6000 with AIX and Oracle 10g,
* Aside Oracle Development tools, there are no applications, reports or similar gadgets that query the tables described above.
I would really appreciate any help about this issue.
Here is an example of the type of queries that I'm writing about:
SELECT /*+ RULE */ '', b.owner, decode (b.object_type, 'PACKAGE', CONCAT( CONCAT (b.object_name, '.'), a.object_name), b.object_name), NULL, NULL, NULL, NULL, decode (b.object_type, 'PACKAGE', decode(a.position, 0, 2, 1, 1, 0), decode(b.object_type, 'PROCEDURE', 1, 'FUNCTION', 2, 0))
FROM ALL_ARGUMENTS a, ALL_OBJECTS b
WHERE ( b.object_type = 'PROCEDURE' OR b.object_type = 'FUNCTION' ) AND b.object_id = a.object_id AND (a.sequence=1 OR a.sequence=0) AND b.OBJECT_NAME = 'MYTABLE' AND b.OWNER = 'MYSCHEMA' UNION
SELECT /*+ RULE */ '', b.owner,b.object_name,NULL, NULL, NULL, NULL,decode(b.object_type, 'PROCEDURE', 1, 'FUNCTION', 2, 0)
FROM ALL_OBJECTS b
WHERE (b.object_type = 'PROCEDURE' OR b.object_type = 'FUNCTION') AND b.OBJECT_NAME = 'MYTABLE' AND b.OWNER = 'MYSCHEMA' UNION
SELECT /*+ RULE */ distinct '', a.owner,CONCAT(CONCAT (a.package_name, '.'), a.object_name),NULL, NULL, NULL, NULL,decode(a.position, 0, 2, 1, 1, 0)
FROM ALL_ARGUMENTS a
WHERE (a.sequence=1 OR a.sequence=0) AND a.OBJECT_NAME = 'MYTABLE' AND a.OWNER = 'MYSCHEMA' ORDER BY 2,3
Best Regards,
Manuel
Edited by: user10165637 on Jul 28, 2009 1:29 PMHi Greg,
Thank you for your answer. One of the things that we did when we migrated to Oracle 10g was to ensure that the "Disable Rule Base Hints" flag, located in the "Work-arounds" tab in the ODBC DSN window is checked. We previously refreshed all Microsoft's Access databases to use this new DSN connection. Still, the hints are there.
However... we may have been able to link these calls to these Oracle System Catalog views, with a custom application that launces Crystal Reports.
Although we all know that Crystal Reports also caches ODBC DSN configuration settings, I must say that these same Crystal Reports do not generate hints when called from their InfoView server.
We will proceed to modify the custom application, overridding the dissable rule-base hint work-around with the string "DRH=T" on the connection string. Next week we will know if this works.
Best Regards,
Manuel -
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 -
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
SanchayanDid you ever get an answer on this issue?
Thanks in advance -
How can I do to get Oracle ODBC driver in Windows?
Hello,
Please, I need help to use Oracle ODBC driver in Windows 7. I installed Oracle Client 10g with the ODBC driver, but I can't use it. OracleODBC driver don't appear in the driver list when I want to create a new datasource. How I can do to get Oracle ODBC driver for create a new datasource?
Thank
Edited by: user4528703 on 13 mars 2010 02:01Hello,
To get the ODBC driver you should run a custom Oracle Client installation and Select
Oracle Windows Interfaces 10.2.0.1.0.
Then, you'll get the Oracle ODBC Driver 10.2.0.1.
But, be aware that Oracle didn't certify Windows 7.
So, if afterwards, you experience some trouble, think to install Oracle with Xp compatibilty mode, or
wait to Oracle 11.2.0.1 which will be certified on Windows 7.
Hope this help.
Best regards,
Jean-Valentin
Maybe you are looking for
-
I'm trying to install iTunes 10.5 and I get an error message.
The error says, "There is a problem with this Windows Installer package. A program required for this install to comeplete could not be run. Contact your support personnel or package vendor."
-
Problem in starting server instances in Cluster using nodeagent
Hi, I have a cluster which is having 2 servers and in that one server is under nodeagent1(on the same host) and another is on nodeagent2 which is on an another host. When I start the Cluster instances the server in the nodeagent1 is getting started.
-
Hdmi to component or s video converter
what is a good converter box to convert and hdmi signal to a component or s video signal?
-
Factory reset on every restart (z 10 stl 100-2)
Plss tell me what is the issue with my device. It gets reset every time I restart it. All internal device data contacts and apps are erased. Plss help!
-
Trouble Getting Started With Flex
I am trying to go through the tutorials that come with Flex Builder 2 and cannot get any custom components to work. Projects that have custom components defined in them compile OK but I get a run-time error: Error #1009 Cannot access a property or me