I get "error diagnosed by Net8 when connecting to an agent" when using DG4ODBC or HSODBC. What can I do?
The full text of the error reported to us was:
ORA-28545: error diagnosed by Net8 when connecting to an agent Unable to retrieve text of NETWORK/NCR message 65535
You may get this error if:
- Oracle fails to connect to DG4ODBC or HSODBC.
- DG4ODBC or HSODBC cannot retrieve the underlying error from the ODBC driver.
This article lists some possible solutions for this problem. You may need to try more than one solution.
Check whether HSODBC is installed (Oracle 10g users)
If you're using Oracle 10g, check that your Oracle distribution includes the Heterogeneous Services agent (HSODBC) and that it is installed. To do this, log on as your Oracle user and run:
cd $ORACLE_HOME/bin file HSODBC
On a Linux machine, you'll get something similar to the following if HSODBC is installed:
hsoodbc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, not stripped
If you get HSODBC: empty
, your version of Oracle does not include HSODBC. Ask your Oracle supplier about installing the Oracle 11g Database Gateway for ODBC (DG4ODBC). This gateway (which transparently connects Oracle to non-Oracle databases for which an ODBC driver is available) also supports Oracle 10g.
Check your Oracle configuration files
Check your initsid.ora
, tnsnames.ora
, and listener.ora
files. Make sure that the sid
part of the sid.ora
file is referenced in the listener.ora
attribute SID_NAME
and the tnsnames.ora
attribute SID
.
If you're not sure how to configure these files, refer to the appropriate Easysoft tutorial:
- ODBC-ODBC Bridge:
- SQL Server ODBC driver
Note that these tutorials describe how to configure Oracle for use with DG40DBC or HSODBC. Additional Oracle configuration is beyond the scope of the tutorials and what our Support team can offer assistance with.
Note that although these tutorials were based around the Easysoft ODBC-ODBC Bridge and Easysoft SQL Server ODBC driver, the process is the same for all Easysoft ODBC drivers. If you need help configuring DGODBC or HSODBC with another Easysoft product, contact the Easysoft Support team ( ). We will then create a tutorial based around your setup.
Check that you have the correct version of the Easysoft software
You may have installed the wrong version of the Easysoft software. For example:
- If you're using Oracle 10g, you need to use a 32-bit version of the Easysoft software. Oracle 10g, including the 64-bit version, ships with a 32-bit HSODBC interface, and so you need a 32-bit Easysoft ODBC driver. A 32-bit ODBC driver will function correctly on a 64-bit platform.
- If you're using a 32-bit version of Oracle 11g, you must use a 32-bit Easysoft ODBC driver even if you are running the software on a 64-bit platform.
- If you're using a 64-bit version of Oracle 11g, you must use an Easysoft ODBC driver that has been built with 64-bit SQLLEN or SQLULEN types.
If you are not sure whether to use a 32-bit or 64-bit Easysoft driver, contact the Easysoft Support team ( ). Supply the team with this information:
- Your Oracle version.
- The contents of
installation_dir/easysoft/product_install.info
, whereinstallation_dir
is the directory where the Easysoft ODBC driver is installed, by default,/usr/local
.
Enable HSODBC or DG4ODBC logging
To enable HSODBC logging, in initsid.ora
, set HS_FDS_TRACE_LEVEL
to 4
, and specify a log file with HS_FDS_TRACE_FILE_NAME
. For example:
HS_FDS_TRACE_LEVEL = 4 HS_FDS_TRACE_FILE_NAME = /tmp/hsodbcsql.trc
To enable DG4ODBC logging, in initsid.ora
, set HS_FDS_TRACE_LEVEL
to Debug
. For example:
HS_FDS_TRACE_LEVEL = Debug
The log output is written to a file in the $ORACLE_HOME/hs/log
directory.
After you have made these changes to initsid.ora
, restart the Oracle Listener. For example:
cd $ORACLE_HOME/bin ./lsnrclt stop ./lsnrclt start
If a log file is not generated, either your Oracle configuration files have not been set up correctly or HSODBC or DG4ODBC is not installed. For help with Oracle configuration, contact your Oracle DBA or Oracle Support team.
If a log file is generated and you get the following error, refer to Why do I get error "Generic Connectivity Using ODBC][C077] Could not find symbol 'SQLAllocConnect' in dynamic library"?
ERROR : Could not find symbol 'SQLAllocConnect' in dynamic library
If you get an error that contains the text Could not load library libodbc
, on the machine where the Easysoft ODBC driver is installed, you need to ensure the library search path includes the Easysoft driver directories. The environment variable you use to set the library search path varies:
Platform | Environment variable |
---|---|
AIX | LIBPATH |
HP-UX | SHLIB_PATH |
Linux. Solaris. Other System V based operating systems. | LD_LIBRARY_PATH |
Set the appropriate variable for your platform in your Oracle user's .profile
file. For example:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:installation_dir/easysoft/lib:installation_dir/easysoft/unixODBC/lib export LD_LIBRARY_PATH
where installation_dir
is the directory where the Easysoft ODBC driver is installed, by default, /usr/local
.
Stop and start your Oracle listener before trying to connect again.
If you get another error, try searching for the error text on the Easysoft web site. Make sure that you have checked the Easysoft.com, Documentation and Knowledge Base search options.
Contact Easysoft Support
If you're still having a problem with your Easysoft ODBC driver and HSODBC or DG4ODBC set up, send the following information to :
- The exact error you're getting in SQL*Plus. Make sure you reproduce your problem in SQL*Plus rather than Toad or Oracle Developer, as these applications do not always return the complete or correct error.
- The exact version of Oracle you are running.
- The output produced by running:
-
cd $ORACLE_HOME/bin file hsodbc ./hsodbc tnsping listener name
where
listener name
is the listener you configured to listen for HSODBC.
–Or–
-
cd $ORACLE_HOME/bin file dg4odbc ./ dg4odbc tnsping listener name
where
listener name
is the listener you configured to listen for DG4ODBC.
-
- An HSODBC or DG4ODBC trace log of the problem.
- The exact version of the Easysoft ODBC driver you have installed. If you recently downloaded the installation file from the Easysoft web site, the distribution file name is sufficient. Otherwise, send the contents of
installation_dir/easysoft/product_install.info
, whereinstallation_dir
is the directory where the Easysoft ODBC driver is installed, by default,/usr/local
. - A copy of your Oracle configuration files
initsid.ora
,listener.ora
andtnsnames.ora
. - A copy of your ODBC data source from your
odbc.ini
file. If you don't know where to find this file, run:cd installation_dir/easysoft/unixODBC/bin ./odbcinst -j
- Whether you get an error when running one particular query or all queries.
If you'd like to contribute to this document, email .