Well, I have solved the problem...
I have seen with ethereal (without filtering by destination address as I used to do) that it was trying to resolve a name through the DNS servers.
I copy here the service as it is in my tnsnames.ora:
omp =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 159.23.98.26)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = omp)
)
)
Well, the first 'omp' is the name where PLSQLDEVELOPER will try to connect, so it needs to be resolved.
Then, if I add this line to my local hosts file, everything works fine:
159.23.98.26 omp
However, I think this is a bug in the application: in my understanding this name should just be local, to connect to the database server it should use the value:
HOST = 159.23.98.26
Another possible bug is that this name 'omp' has to match exactly the service name, which is actually the one running by the listener in the database server.
To illustrate, if I use those values in tnsnames.ora:
apps =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 159.23.98.26)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = omp)
)
)
and this in hosts:
159.23.98.26 apps
then I get the error ORA-12514.
I am really confused about all this behaviour.