Vielen Dank Euch allen für die Tipps - hier mal eine Zusammenfassung:

Ich hab folgende Änderungen vorgenommen:
* Die JOIN-Orgien sind jetzt in zwei SQL Views ausgelagert.
* Im rekursiven SQL nehm ich nur noch auf die Views bezug.
* Auf das Sortierkriterium hab ich einfach mal verzichtet
* Gem. Visual-Explain wurden nur vorhandene LFs (DDS) verwendet - konnte keine MTI finden (kenne mich hier aber nicht so aus).

WITH LISTE
(GESHID, BTLHID, PTAHID, PTAHIDALTK, PTASTUFE, VERTRETENER, EBENE, PTGPTAGRP, PTG4STEUER) AS
(
SELECT GES.GESHID, GES.BTLHID, GES.PTAHID, GES.PTAHIDALTK, GES.PTASTUFE, 0 AS VERTRETENER,
DEC(1) AS EBENE, GES.PTGPTAGRP, GES.PTG4STEUER
FROM GES1 AS GES
WHERE GES.GESHID=333661 AND GES.FIRHID=22 AND GES.GGPHID =39
UNION ALL
SELECT V.GESHID, V.VERTRETER, V.PTAHID, V.PTAHIDALTK, V.PTASTUFE,
V.VERTRETENER AS VERTRETENER, X.EBENE + 1, V.PTGPTAGRP, V.PTG4STEUER
FROM BTV1 V
INNER JOIN LISTE AS X ON V.GESHID = X.GESHID AND V.vertretener = X.BTLHID
WHERE V.GESHID=333661 AND V.FIRHID=22 AND V.GGPHID =39 AND X.EBENE <= 5
)
SELECT GESHID, BTLHID, PTAHID, PTAHIDALTK, PTASTUFE, VERTRETENER, EBENE,
PTGPTAGRP, PTG4STEUER
FROM LISTE;

---
Auswirkungen:
* Die Abfrage braucht ca. 10 - 20x länger (auch nach mehrfacher Ausführung), der Cache scheint jetzt nicht mehr genutzt zu werden
* Abfragen mit mehr als 20 Sätzen kommen innerhalb einer halben Stunde nicht mehr zurück (hab dann abgebrochen)
* Gem. VisualExplain wird statt SQL-Views weiterhin auf die DDS-LFs zugegriffen, obwohl alle verwendeten Felder in den Views sind.

Aus Zeitgründen hab ich das Ganze jetzt auf Left-Outer-Joins für max. 10 Ebenen umgestellt - auch wenn das nicht ganz sauber ist. Trotzdem nochmals herzlichen Dank für all die Ideen!

Kann mir jemand eine Einführungs-Lektüre zur SQL-Optimierung auf der AS empfehlen - ich glaube, ich brauch hier noch etwas Grundwissen zu VisualExplain / PerformanceMonitor und QAQQINI. Im Moment fehlt mir hier absolut der Überblick...

merci!