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.

Stefan Ausmann
info
held-informatik
de