A database needs to be made available in local network, as well as NAT environment. In the NAT setup, DB server (not client) IP was translated.
From same client machine, same TNS configuration (which is changed from other DB, only difference in service name), connection to some databases succeeded, some failed.
LOCAL_LISTENER is IP based, because some client has no DNS.
According to "About Dedicated Server Processes" (http://docs.oracle.com/cd/E11882_01/network.112/e41945/concepts.htm#NETAG185),
To complete a client/server connection, one of the following actions occurs:
- The dedicated server inherits the connection request from the listener.
- The dedicated server informs the listener of its listening protocol address. The listener passes the protocol address to the client in a redirect message and terminates the connection. The client connects to the dedicated server directly using the protocol address.
One of the preceding actions is selected based on the operating system and the transport protocol.
It seems Oracle was trying method 1 for some DB (and connection succeed), method 2 for other DB (and connection fail). But since TNS settings are essentially the same, OS and transport protocol should be the same, unless there are some difference in DB / instance specific setting (except Local and Remote listener, which are consistent in 2 DB).
Any suggestion?
Oracle 11.2.0.3, RHEL 5.6, x64
Message was edited by: thtsang