2010-08-13 40 views
8

Sto provando a connettermi a un db Oracle da un'applicazione ASP classica, tuttavia continuo a eseguire l'errore ORA-12154.Oracle (0x80004005) ORA-12154: TNS: impossibile risolvere l'identificatore di connessione

  1. TNSNAMES.ORA è configurato correttamente

    DBSOURCE.ABcom = (DESCRIZIONE = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = CDBcom) (PORT = 1231)) ) (CONNECT_DATA = (SERVICE_NAME = DBSOURCE) ) )

  2. posso tnsping

    C: \ Documents and Settings \ USERID.A> tnsping DBSOURCE

    TNS Ping Utility per Windows a 32 bit: Versione 10.2.0.4.0 - Produzione il 09-MAR-2 011 09:12:31

    Copyright (c) 1997, 2007, Oracle. Tutti i diritti riservati.

    usate file di parametri: C: \ oracle \ product \ 10.2.0 \ Client_1 \ Network \ Admin \ sqlnet.ora

    staffatura TNSNAMES per risolvere l'alias Il tentativo di contattare (DESCRIZIONE = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = CDBcom) (PORT = 1231))) (CONNECT_DATA = (SERVIC E_NAME = DBSOURCE))) OK (30 msec)

  3. posso creare un ODBC connessione e ho testato la connessione che ha successo.

  4. Posso collegarmi al db oracle attraverso il rospo.
  5. Ho controllato il mio file sqlnet.ora

    NAMES.DEFAULT_DOMAIN = ABCom

    SQLNET.AUTHENTICATION_SERVICES = (none)

    NAMES.DIRECTORY_PATH = (TNSNAMES, EZConnect)

  6. Ho anche verificato che TNSNAMES.ORA sia uno dei miei percorsi di sistema.

  7. posso collegare al DB con SQLPLUS

Ecco il codice che genera l'errore

dim CnnStr 

Set Cnn = Server.CreateObject("ADODB.Connection") 

CnnStr="Provider=MSDAORA.1;Password=pass;User ID=user;Data Source=DBSOURCE" 

Cnn.Open CnnStr 

Sto facendo funzionare Windows Xp pro 32bit SP3

ho testato questo su una macchina di collaboratori e l'applicazione asp non ha problemi, mi manca una configurazione da qualche parte o ho rovinato la mia configurazione?

Grazie per l'aiuto a tutti!

risposta

4

Sembra che tutte le impostazioni sono stati controllati, ma ecco il mio suggerimento per un po 'di risoluzione dei problemi:

  • ne dite di restrizioni sul conto di IIS è in esecuzione? Ha i permessi dei file per leggere TNSNAMES? Hai provato a concedere all'utente più diritti. Anche eseguire IIS con l'account di sistema locale come? Ricordati di rimetterlo com'era.
  • Sei sicuro che non ci siano app di terze parti come antivirus o firewall che potrebbero influenzare/bloccare l'accesso. (Disabilitarli per testare, ma non dimenticate di riattivare :)

(Cosa hai finalmente fare per risolverlo?)

+0

Grazie mille! Dopo aver incluso USERID \ USERS nel mio gruppo o nomi utente per il permesso nel file TNSNAMES.ORA ha funzionato! – ChickSentMeHighE

+0

Ha funzionato come un incantesimo. dolore serio nel a $$. – temarsden

2

"questo funziona su un computer di un collega ma non mio".

ORA-12154 è di solito un problema di configurazione, e sicuramente sembrerebbe essere così nel tuo caso. La risposta breve è confrontare la tua macchina con quella del tuo collega e capire qual è la differenza.

Cose da verificare includono: il file

  • il TNANAMES.ORA il file
  • lo SQLNET.ORA
  • file listener.ora (se si sta utilizzando un database locale)
+0

thats Originariamente quello che anche se troppo, però dopo aver copiato il TNSNAMES.ORA e SQLNET.ora dal mio collega di lavoro (le cui opere di connessione) Ancora non risolve il problema – ChickSentMeHighE

+0

La cosa strana è che è in grado di eseguire il ping del database tramite tnsping. La creazione di una connessione ODBC e il test dall'interfaccia ODBC funziona correttamente. La connessione tramite sqlplus funziona anche ... – Mike

+0

Potrebbe esserci un servizio che deve essere riavviato per prelevare una modifica modificata di TNSNAMES.ORA o del Registro di sistema). Forse provate a bypassare TNSNAMES.ORA specificando direttamente un host: port: service –

0

Provare a impostare il valore della variabile di ambiente TNS_ADMIN sulla macchina con il problema su/network/admin (o ovunque il file tnsnames.ora risieda) e vedere se questo aiuta.

+0

Grazie per aver risposto, tuttavia non ha risolto il problema :( – ChickSentMeHighE

1

Se si utilizza un sistema operativo a 64 bit e Oracle 10, provare a installare tutte le patch per Oracle. Mi è successo qualcosa di simile a me, SQL plus e tutto il resto ha funzionato, tranne il mio programma .NET. Stavo eseguendo un programma .Net dalla cartella "Programmi (x86)". L'installazione delle patch lo ha risolto.

+0

Potete dirmi per favore quale patch dobbiamo installare. Sarebbe fantastico se voi puoi condividere il link Grazie !! – SharpCoder

2

Avete più sedi Oracle? Verifica che IIS non punti all'altra ORA_HOME (e quindi non trovi la tua voce tnsnames.ora). Non ho molta familiarità con la configurazione di IIS, quindi testerei questo aggiungendo la voce TNS a tutti i tnsnames.ora sul mio PC.

1

Il probabile problema è la mancanza di permesso di lettura sulle directory Oracle l'utente IIS sta eseguendo-come.

Come dice @Derick, temporaneamente imposta le autorizzazioni a tutto campo nella directory $ ORACLE_HOME (Everyone = Full Control), riavvia IIS e verifica. Quando ciò funziona, concedere all'utente IIS l'autorizzazione di lettura per quella directory.

È inoltre possibile confermare questo problema utilizzando Process Monitor from Microsoft SysInternals e visualizzare il messaggio di errore durante la chiamata API CreateFile (...) per aprire le DLL o leggere il file TNSNAMES.ORA. Dato il modo in cui i file temporanei funzionano quando si selezionano i cursori, potrebbe essere necessario fornire le autorizzazioni di scrittura dell'utente IIS in alcune directory.

0

Ho avuto il problema simile e ho trovato una soluzione semplice. Non è necessario modificare alcun file di configurazione.Spero che questo può aiutare:

CREATE DATABASE LINK server2_db 
    CONNECT TO dbuser IDENTIFIED BY pwd USING 
'(DESCRIPTION = 
    (ADDRESS_LIST = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = server_2)(PORT = port_num)) 
    ) 
    (CONNECT_DATA = 
    (SERVICE_NAME = server2_db) 
    ) 
)'; 

La soluzione è da qui: http://oraclequirks.blogspot.com/2008/11/ora-12154-tnscould-not-resolve-service.html