Re: ye olde 1521

  • From: Tanel Põder <tanel.poder.003@xxxxxxx>
  • To: "ORACLE-L" <oracle-l@xxxxxxxxxxxxx>
  • Date: Sat, 5 Feb 2005 17:12:57 -0000


Yep, it's called direct handoff - when listener manages to start up the 
server process (or a server process already pre-started), listener hands off 
the new TCP connection to server process and server process will now respond 
to client, while listener can continue its job. Otherwise redirection had to 
be done, e.g. listener responded to client with the ip and port number where 
the new server process was listening, client disconnected from listener and 
tried to connect to new address.

This was the main problem with firewalls, that's why you had to get a sqlnet 
compatible firewall, which snooped sqlnet traffic and opened up the required 
port for client to allow redirection. Other alternatives were to use 
connection manager or bind a MTS dispatcher to specific port and connect 
directly there (you don't need a listener to connect through a dispatcher).

Handoff isn't done by fork() call since fork only creates a clone of current 
process, but listener and Oracle server processes are based on different 
executable images.

Direct handoff should work with shared servers as well. It can be disabled 
with listener.ora parameter DIRECT_HANDOFF_TTC_<listener name> parameter (ON 
| OFF), but I've never tried it.

Btw, thanks to using shared sockets, you can shut down your listener, but 
all server process connections on the same port will remain operational.


----- Original Message ----- 
From: "Henry Poras" <hporas@xxxxxxxxxxx>
To: <oracle-l@xxxxxxxxxxxxx>
Sent: Friday, February 04, 2005 3:00 PM
Subject: ye olde 1521

> Just wondering if one of my strongly held untested assumptions is wrong. I 
> always thought that when you connected to Oracle via the listener in 
> dedicated server mode, you would come in via the listener port (i.e. 1521, 
> 1526). The listener would then validate, spawn off a shadow oracleSID 
> process using some arbitrary port, and the client would then be passed to 
> this process with the listener butting out at that point. The client would 
> then be connected to the database through that arbitrary port.
> Last week a developer and myself checked this out. He sniffed the coming 
> and going of packets, and everything used only port 1521. I looked at 
> netstat (I think the parameters were asp (RedHat AS3 OS) but I'm not 
> sure. That info is at work but I'm not at the moment) and the only active 
> Oracle ports were also 1521. Are other ports used? Is this dependent on 
> load? I searched metalink and found the question asked, but no answers 
> were ever posted.
> Thanks.
> Henry
> --


Other related posts: