Kommunikation über Firewalls

Die Problematik bei der Kommunikation zwischen einem Oracle-Client und einem Oracle-Server über eine Firewall besteht darin, dass nicht ausschließlich der Listener Port genutzt wird. Zwar wird dieser Port in der tnsnames.ora des Clients sowie der listener.ora des Servers eingetragen. Doch wird der Port nur verwendet, um den ersten Verbindungsaufbau zu realisieren. Der Port für den weiteren Datenverkehr wird dann dynamisch zwischen dem Oracle-Server und dem Client ausgehandelt. Hierbei ist nicht determiniert, welcher Port genutzt wird.

Der Mechanismus zur Verbindungserstellung ist dann problematisch, wenn Firewalls nur die Kommunikation über explizit freigeschaltete Ports zulassen. Der Port für den Oracle Listener (Default ist 1521) wird lediglich für den Verbindungsaufbau genutzt, für die weitere Kommunikation wird ein beliebiger Port verwendet. Folgende Lösungsansätze können hier helfen:

  • Nutzung einer passenden Firewall
  • Connection Manager
  • Shared Port für Windows Systeme
  • Dispatcher mit Portzuweisung

Nutzung einer passenden Firewall

Einige Firewalls können mit der dynamischen Portvergabe umgehen. Dies ist sicherlich die beste Lösung.

Connection Manager

Der Oracle Connection Manager nutzt feste Port-Nummern zur Kommunikation. Diese müssen über die Firewall freigeschaltet werden. Auf diese Weise können Dedicated Server-Prozesse genutzt werden. Ein Nachteil ist der etwas erhöhte Verwaltungsaufwand für den Connection Manager.

Shared Port für Windows Systeme

Für Windows-Systeme läßt sich in der Registrierung unter \\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\<ORACLE_HOME> der Schlüssel USE_SHARED_SOCKET auf TRUE setzen. Der Listener übergibt dann einen Socket Deskriptor an den Client-Prozess, so dass dieser keine neue Verbindung zur Datenbank öffnen muss. Alle Datenbankverbindungen nutzen damit denselben Port, den auch der Oracle Listener nutzt. Der Parameter kann nur für den Dedicated Server Mode in einer TCP/IP-Umgebung genutzt werden.

Dispatcher mit Portzuweisung

In einer Shared Server-Konfiguration können feste Ports für den/die Dispatcher zugewiesen werden.