(1) Similar setup works ok on Linux connecting to remote Sybase on Windows. But get error below when running on Windows 7.
(2) Similar setup from Windows7 to Windows 2008 R2 works fine when ODBC Gateway on remote Windows 2008 server.
(3) ODBC connectivity has been verified as ok to remote Sybase database on Windows 2008 server.
(4) tnsping dblink verified ok.
Problems started when moving ODBC Gateway to local system where Oracle target database resides.
Added to initdblink.ora the following (no change in results):
HS_KEEP_REMOTE_COLUMN_SIZE = ALL
HS_NLS_LENGTH_SEMANTICS = CHAR
You're mixing different OH's in your listener. The gateway is located in C:\oraclexe\app\oracle\product\11.2.0\gtw, but the database and the listener in: C:\oraclexe\app\oracle\product\11.2.0\server
When you're using DG4ODBC you can use the gateway which is automatically installed in the database home -> you'll find there as well a HS directory and the dg4odbc executable. The other option is to use separate listeners for both installations. For example using the Oracle database listener on port 1521 for the database connections and 1522 for the gateway.
If you really want to use one listener (which is not the preferred solution), then you need also to specify the location to the executable, similar to:
As the listener is only spawning the gateway executable and then not longer used, there's no performance increase when using 2 listeners. It is just easier to maintain as you can shut down separately the database and/or gateway listener.
And the other reason is that Oracle is downwards compatible, not upwards. This means that you can use for example an 22.214.171.124 listener to spawn an 126.96.36.199 process, but there's no guarantee that it can also correctly spawn an 188.8.131.52 process. When you now just update the gateway OH to for example 184.108.40.206 but keep the atabase at lower level like 220.127.116.11 there's no guarantee that the listner is correctly spawning the gateway process.