Você precisa de compreender como os trabalhos em rede de Oracle trabalham.
Em um de nível elevado:
O ouvinte aguarda até escutar SOMENTE conexões, valida o pedido, cria um porto novo, mãos fora da conexão e vai para trás à escuta.
Escolhe aleatòria um porto de nível elevado entre 1021 e 65535 (eu penso). Você precisa de ter TODOS aqueles abertos no guarda-fogo.
Há duas maneiras em torno deste e nenhum é todo o que grande:
1: Configurar o Multi-Rosquear-Usuário (MTS). MTS permite que você defina um jogo fixo dos portos a ser usados.
2: Forçar TODAS AS conexões para usar o porto dos ouvintes com USE_SHARED_SOCKET.
O problema aqui é disputa portuária e se você para nunca o ouvinte, você MATA todas as conexões de base de dados ativas.