Per quanto riguarda Oracle su Windows vi è un problema legato al porting di Oracle su Windows che ha trasformato l’archiettettura da multi processi a mono processo e multi thread.
Nell’architettura originaria, multi processi, con processi dedicati, quando un client chiede una connessione al database inoltra una richiesta via TCP/IP (normalmente) al Listener (solitamente, per default, in ascolto sulla porta 1521) il listener gestisce tale richiesta chiedendo al server la creazione di un processo (spawn, a basso livello si tratta di una chiamata di sistema in Unix chiamata fork), a tale processo viene passato l’identificatore del socket creato tra il client ed il listener, a questo punto il listener ha concluso il suo compito ed il client è connesso il database server.
Su Windows, con l’architettutura multithread la sequenza sopra descritta non è possibile in quanto pare non sia possibile creare un nuovo thread e passargli il descrittore del socket. Quindi Oracle usa il cosiddetto meccanismo di REDIRECT, cioè quando un client richiede una connessione al database al listener, questi chiede al server la creazione di un nuovo thread, questo si mette in ascolto su una porta TCP/IP libera a caso, a questo punto il listener manda al client un messaggio con l’indicazione di connettersi alla porta su cui sta in ascolto il nuovo thread creato. Questo meccanismo è ben spiegato nella nota Metalink numero 66382.1 intitolata “Firewalls, Windows NT and Redirections“. Nella stessa nota spiega che il range di porte su cui si mette in ascolto il nuovo thread non è definito, ciò rende impossibile configurare un firewall. Quindi nella stessa nota spiega come risolvere il problema usando la chiave di registro “USE_SHARED_SOCKETâ€. Questa configurazione è spiegata più in dettagli nella nota metalink numero 124140.1 intitolata “How to configure USE_SHARED_SOCKET on Windows NT/2000“.In pratica nella configurazione di default non è possibile creare un tunnel ssh perché viene fatto un redirect della chiamata.
Per attivare l’opzione USE_SHARED_SOCKET, dovrete aggiungere la chiave di registro “USE_SHARED_SOCKET” con valore TRUE su <LOCAL MACHINE><ORACLE><ORACLE HOME>.
Fonte: cristian cudizio
Fletto i muscoli e sono nel vuoto.