The actual task of moving the data between two machines is left to the services provided by the networking software. Oracle software uses these underlying services to establish the communication between the components. Oracle uses a common set of services known as Transparent Network Substrate (TNS) to handle communication within Oracle components. It is important to remember this model of network communication. The acronym TNS occurs in many places, especially in error messages. TNS uses the underlying protocol, which could be TCP/IP, SPX/IPX, DECNET, AppleTALK, etc. This combination of TNS and the underlying networking protocol makes the diagnosis of problems quite challenging, but Oracle does provide some tracing facilities to make it easier. The Oracle Transparent Network Substrate (TNS) facilitates simple inter-database communication. To implement TNS, Oracle has built a management layer over the standard network topology.
To implement Oracle Net Services, several Oracle files must be present on the server:
tnsnames.ora defines outgoing database requests. It contains all database names (SIDs) running on the processor.
When a new database is added to a box, the file /etc/tnsnames.ora must be updated. This file also describes each domain name, including protocol, host, and port information.
Listener.ora contains a list of destinations for incoming database connections.. When a new destination database is added to a box, it must be added to /etc/listener.ora and the listener must be bounced.
In addition, TNS uses several server files to resolve host and service names. On UNIX, these files include:
/etc/HOSTS lists all the host names and their corresponding IP addresses.
/etc/SERVICES lists the SQL*Net services and their IP addresses.
The following SlideShow illustrates how a connection is made. Click the Previous and Next navigation arrows to flip through the images.
A request is made in SQL with a database link name
Oracle dictionary takes the link names and supplies the TNS service name, the USER ID, and password
Service name is looked-up in the tnsnames.ora file, and the host name, port number, SID and protocol are supplied
Host name is passed to the /etc/hosts file where it is used to get the IP address
The network packet is shipped to the remote database using the IP address, port number, and protocol.
Remote listener intercepts the request and bequeaths a UNIX process
UNIX process connects to the remote database using the SID, User ID and password