Aufgabe:
Von dem Entwicklungsarbeitsplatz aus soll mit dem Oracle SQL*Developer auf eine Datenbank zugegriffen werden.
Diese Datenbank ist aber nicht direkt erreichbar, die Route und die Ports der Datenbank Server sind aus dem Entwickler Netz im ersten Schritt aus Sicherheitsgründen nicht erreichbar.
Um aber eine komplexere Aufgabe umsetzten zu können wird der SQL*Developer als IDE für die PL/SQL Entwicklung benötigt.
Lösung:
Vom Entwicklungsrechner ist ein Applikation Server per SSH erreichbar, der die notwendigen Datenbank erreichen kann.
D.h. per SSH kann eine Verbindung auf den Applikation Server aufgebaut werden und über diese Verbindung wird der Zugriff auf die Datenbank getunnelt.
Muss allerdings regelmäßig mit so eine Verbindung gearbeitet werden, bietet es sich an den CMAN zu verwenden ⇒ Oracle 21c - SQL*Net Proxy und Firewall mit dem Oracle Connection Manager CMAN implementieren - Einsatz als Standby DB Proxy für ältere Java Apps
SSH Zugang „normal“ auf den Application Server sicherstellen, über Keys sicherstellen das eine Password lose Anmeldung möglich ist.
Das ideale Werkzeug unter Windows ist dazu https://mobaxterm.mobatek.net.
Im dem Tool kann auch ein Tunnel „graphisch“ definieren werden:
Das Dynamisches Port-Forwarding über einem SOCKS-Proxy ermöglicht es, den gesamten Netzwerkverkehr eines Clients über einen einzigen SSH-Tunnel zu leiten, der Client ist der lokaler Proxy-Server.
Bash:
ssh -D 1541 servgpi01
Die spannende Frage ist nun, wie aber wie über eine Tunnel eine SQL*Net Verbindung weitergeleitet werden kann. Im eigentlichen SQL*Net Connect String kann das so einfach mit angeben werden.
Die notwendigen Einstellungen im JDBC Treiber sind:
Für SQL*CL in der Befehlszeile:
export JAVA_TOOL_OPTION=" -Doracle.net.socksProxyHost=127.0.0.1 -Doracle.net.socksProxyPort=1541 - oracle.net.socksRemoteDNS=true " $ sqlcl user/pwd@host:port/SERVICE
Diese Parameter können im SQL*Developer auch in den Connection Einstellung als erweiterte Parameter hinterlegen werden:
Unterstützt das leider nicht ! siehe dazu auch https://docs.oracle.com/en/database/oracle/oracle-database/23/netrf/parameters-for-the-sqlnet.ora.html