Newsgroup: it.comp.software.database
Titolo: Rendere Oracle visibile dal web

Visto che la mia richiesta precedente non ha ricevuto risposte, ci
riprovo cambiando un po' il punto di vista e cercando di essere il più
possibile chiaro.
Ho una macchina server (win 2000 pro) su cui sono installati Oracle 9i
server e IIS server; sotto IIS è presente un'applicazione web, scritta
in ASP, che deve interrogare il db Oracle.
Dal momento che ASP gira lato server, credo che sui client che accedono
all'applicazione tramite il loro browser, non debba essere installato
niente di specifico. Dovrebbe invece essere installato sulla macchina
server il client Oracle, visto che è IIS ad inviare le richieste al
DB. E' corretto il ragionamento fin qui?
Se quello che ho scritto finora è giusto vorrei sapere in dettaglio
cosa installare e cosa configurare sul server. Premesso che il db
server funziona (ci sono altre applicazioni non web che vanno
regolarmente), quello che ho fatto è stato installare il componente
Oracle client sul server, e configurare tramite "Configuration Net
Assistant" un "nome del servizio di rete locale".
Fatto questo, se avvio l'applicazione ASP dal browser del server, tutto
funziona regolarmente; provando invece da altre macchine, collegate in
LAN, Oracle non risponde e restituisce questo errore:
OraOleDB error '80004005'
ORA-12154: TNS: non è stato possibile risolvere il nome del servizio
Io credo che dipenda da qualche configurazione del server, ma non sono
riuscito a capire cosa ci sia di diverso tra l'interrogazione fatta in
locale sul server o quella proveniente dalla LAN; in fondo è sempre
IIS che invia le richieste al db. O no?
Grazie per l'aiuto
Peppe


Ciao Beppe,
in maniera piuttosto veloce (scusami ma in questi giorni ho i minuti 
contati):
nel tuo caso, se ho capito bene, hai oracle e ISS installati sullo 
stesso server.
Non ti serve installare un client allora visto che puoi sfruttare i 
binari dell'installazione server.
L'unica cosa che devi fare e' creare un DSN (usa l'ODBC oracle o quello 
microsoft per oracle) usando la corretta definizione che dovrebbe gia' 
esistere nel tnsnames.ora dell'installazione oracle.
Il tnsnames si trova in %ORACLE_HOME%\network\admin (dove %ORACL_HOME% 
e' la directory dove oracle e' stato installato).
Nel caso in cui tu avessi oracle e ISS su due macchine diverse avresti 
dovuto installare e configurare il client (a meno di non usare 
connessione jdbc thin... ma non so se ISS le supporta).
L'errore ORA-12154 indica che nel tuo tnsnames non c'e' una definizione 
dell'istanza a cui stai tentando di connetterti.
Ciao
-- 
Fabrizio Magni
fabrizi...@mycontinent.com
replace mycontinent with europe

Io però non volevo utilizzare  ODBC ma OleDB
Peppe

Mentre cercavo di capire la differenza tra una select e un drop database,
gd650 ha scritto:

ciao,
fermo restando quanto ti ha consigliato Fabrizio, il tuo ragionamento
è corretto. Io proverei a controllare se nel codice esiste qualche
differenza (parametri, variabili ecc) tra la chiamata eseguita
sul server stesso e quella che arriva dai pc remoti.
ciao

 
Non cambia nulla.
Come hai definito la stringa di connessione per l'oleDB?
Nel campo "Data Source" avrai il nome dell'alias definito nel tnsnames.ora.
Se in quel file e' tutto a posto (ma data la natura dell'errore ne 
dubito) controlla le variabili (relative a oracle) che la tua 
applicazione usa (per la tua applicazione dovrebbero trovarsi nel 
registro di widnows).


 Nel campo "Data Source" avrai il nome dell'alias definito nel tnsnames.ora.
Questa è la stringa di connessione:
Provider=ORAOLEDB.ORACLE; Data Source=webconn; User Id=miodb;
Password=pass
... e questo è il contenuto del tnsnames.ora:
WEBCONN =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = serverweb)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = aa)
    )
  )
A me sembra tutto a posto ma, semmai non si fosse capito, di Oracle so
ben poco.
Peppe

 
Ciao Beppe,
ma il tuo SERVICE_NAME e' davvero "aa"?
In ogni caso, ammettendo che la tua configurazione net8 lato cleint sia 
corretta (lo puoi verificare tendando una semplice connessione a riga di 
comando da quella macchina) il problema potrebbe essere, come ti dicevo, 
nelle variabili oracle.
Queste sono settate in due punti in windows: registro e environment. Il 
primo caso e' solitamente legato agli applicativi grafici mentre il 
secondo per cio' che funziona a linea di comando.
Controlla quindi che l'utente con cui esegui la connessione riesca a 
vedere quelle variabile e che queste siano corrette (nel tuo caso 
specialmente ORACLE_HOME e TNS_ADMIN).
Poi controllerei quel "Data Source".
Per oracle il valore dell'alias non e' case-sensitive.
Non so se lo sia per windows. Vale la pena provare.
Punterei pero' piu' il dito sulle variabile di cui ti scrivevo sopra.


 Non so se lo sia per windows. Vale la pena provare.
Il data source è corretto e in minuscolo
La situazione è caotica. L'altro giorno si riusciva ad accedere dal
browser del server ma non da quelli dei client; ieri non funzionava
più neanche dal server; stasera ha ricominciato a funzionare solo dal
server. Poi, improvvisamente, si è messo a funzionare tutto anche dai
client.
Cosa ho cambiato? Niente.
Ma non è possibile. Lo so.
Qualcun altro ci ha messo le mani? No, ci lavoro solo io.
Allora hai cambiato qualcosa tu. Sono sicuro di no.
Hai bevuto? No.
Quindi? Boh?!?!
... ho fatto tutto da solo così ci risparmiamo tempo ed evitiamo post
inutili.
Domani funzionerà? Chi lo sa....?
Per ora ciao e grazie
Peppe

 inutili.
ROTFL
-- 
                Molti desiderano ammazzarmi.
                Molti desiderano fare un'oretta
        \ | /   di chiacchiere con me.
        (@ @)   Dai primi mi difende la legge.
  ---o00-(_)-00o--------------------------------------------

 
Ciao Peppe,
ho paura che tu abbia un ambiente mal configurato.
Non posso aiutarti sul lato web server. Al massimo posso darti una mano 
sul lato DB.
Tanto per sapere: l'utente con cui gira il servizio di DB e' lo stesso 
con il quale gira l'applicazione web (o il webserver)?
Per la parte oracle ti consiglio di configurare propriamente almeno le 
variabili di sistema. Non e' molto complesso.
Se vuoi la discussione puo' continuare.


Dopo lunga e penosa malattia credo di essere riuscito a dare un senso
(almeno parziale) al problema. Ecco quello che succede.
 - Avvio il server su cui risiedono sia IIS che Oracle
 - Dal browser di un client accedo all'applicazione ASP che richiama
Oracle e ottengo sistematicamente questo errore in fase di apertura
della connessione:
Tipo di errore: ADODB.Connection (0x800A0E7A)
Impossibile trovare il provider. È possibile che non sia installato
correttamente.
 - Faccio la stessa prova dal browser del server e tutto funziona
 - Rifaccio (immediatamente e senza modificare niente) la prova dal
client e finalmente funziona anche lì; dopo di questo l'applicazione
non dà più problemi
Controllando i processi attivi ho scoperto che aprendo l'applicazione
ASP dal browser del server, viene caricato
C:\oracle\ora92\bin\oranbeq9.dll, dipendente dal processo del TNS
Listener (TNSLSNR.EXE). Una volta caricata, questa DLL rimane lì e
tutto funziona regolarmente.
Riavviando poi il servizio TNS Listener, la DLL non viene caricata
automaticamente; viene però caricata appena un browser (anche se da
client questa volta) richiede i servizi di Oracle. L'errore quindi si
presenta solo a server "freddo".
Qualcuno ha idea dei motivi di questo comportamento?
Peppe