Long time ago, Maxime Yuen registered 1521 for nCube License Manager.
By googling I found : Ellison cleans house at nCube, and since them 1521 has been used as a default port for Oracle. Still, you’ll see nCube in IANA.ORG service names port numbers and in /etc/services the nCube name. I don’t know which one came first, Oracle using 1521 or Larry investing in nCube, but I am pretty sure it’s related 😉
$ curl https://www.iana.org/assignments/ service-names-port-numbers/service-names -port-numbers.txt | grep 1521 ncube-lm 1521 tcp nCube License Manager [Maxine_Yuen] [Maxine_Yuen] ncube-lm 1521 udp nCube License Manager [Maxine_Yuen] [Maxine_Yuen] $ grep -w 1521 /etc/services ncube-lm 1521/tcp # nCube License Manager ncube-lm 1521/udp # nCube License Manager $ netstat -a | grep ncube tcp 0 0 *.ncube-lm *.* LISTEN
Later, still long time ago, Oracle officially registered 2483 and 2484 (tcps) for the listener communication, as documented on Recommended Port Numbers :
This port number may change to the officially registered port number of 2483 for TCP/IP and 2484 for TCP/IP with SSL.
Still, as of Oracle 12c Release 2, port 1521 is recommended.
Now, another question : do you really want to use port 1521?
On the one hand, it could be good for a hacker to know listener runs on 1521 and ssh on port 22. This is configurable of course.
On the other hand, you better use that is assigned to Oracle. RFC 6335 defines 1024-49151 as User Ports, and 49152-65535 as the Dynamic and/or Private
Ports (aka ephemeral). Remember, if a port is used before you start your listener, your listener won’t start.
Remember every network connection keeps a port busy. So if you start a network client from your database server to another server, ssh, sqlnet, mail, whatever, dns, then your port 1028 or 57313 may be busy for a client connection. Which will prevent your listener from starting. If you use port 9999, you could look on IANA and ask the owner if he plans anything on that port.
Very often, most ports are unused when you start the listener. If you find an unused port in the private range, 49152-65535, you may name it in /etc/services.
Very often I see database servers with more than one listener. Obviously, you cannot run more than one listener on port 1521. There are some case where you want different listener with different sqlnet.ora or different Oracle version. But this render consolidation (e.g. Multitenant) more painful.
The discussion on which port to use is obviously far beyond Oracle. There are gazillions of TCP/UDP servers running in the digital world and less than 65535 ports. For sure you cannot have all them on IANA.ORG, right?
In most cases, stick to Oracle recommendation, use port 1521.