If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

Unanswered: Why TNS Listener?

I know TNS Listener service, on a oracle server machine establishes and maintains oracle database connections. But, Iam able to work with the database from client machine eventhough listener is stopped .
Please clarify my doubt or give me the link where I can find stuff on tns listener.
Thanks in advance.

Client connection requests to a remote Oracle service are arbitrated by the TNS Listener. The TNS Listener accepts the client request and establishes a TNS (Transparent Network Substrate) data connection between the client and the service. A TNS connection allows clients and servers to communicate over a network via a common API, regardless of the network protocol used on either end (TCP/IP, IPX, etc). The TNS Listener must be running if queries are to be made by remote clients or databases even if the network protocol is the same."

I would suggest that you could try a google search for Oracle Net8 - that may turn up more information.

90% of users' problems can be resolved by punching them - the other 10% by switching off their PCs.

You said, "TNS Listener must be running if queries are to be made by remote clients" but, after connection establishment I stoped tnslistener service on the server, surprise!! still I am able to run queries from my remote client. What could be the reason?

The Listener simply accepts the connection. Basic socket server architecture. The main thread/process does the socket() and bind() calls to create a socket on a port. It then listen() for connections. A connection is accept()'ed. This returns a socket handle for talking to that client specifically. A thread/fork is created and it is given this socket handle and tasked to service the client. The main process/thread goes back to listening and accepting more connections,

With Oracle on Unix, the Listener accepts a connection and then creates an Oracle dedicated server process and pass that process the socket handle for the client. A MTS setup is a bit different as the Listener passes that handle to the registered Dispatcher(s).

So once a client is serviced by an Oracle process (dedicated process or the Dispatcher process), you can zap the Listener. It will not affect any existing connections (the Listener does not own or service those socket handles already accepted). It only affects new connections - no process that is listening for connections and accepting them.