Forum > Databases

Oracle errore 12504

(1/2) > >>

Coriandolo:
Ho creato un'applicazione che tenta di connettersi ad un database oracle. Sul mio pc funziona benissimo, ho installato oracle e in localhost riesco a connettermi.
Il problema è sul pc d'ufficio che tento di connettermi in remoto ad oracle. Ottengo quest'errore:
ORA-12504
Descrizione: TNS: al listener non è stato assegnato SERVICE_NAME in CONNECT_DATA

Ho cambiato oci.dll con quello più aggiornato e mi da OCI.DLL ERROR. Se metto oci.dll 64bit mi dice che non è compatibile.
Insomma non riesco a capire il problema dov'è. Va configurato qualcosa nel database che accetti le connessioni dalla mia applicazione?

DragoRosso:
Spero che per te abbia un senso:


--- Citazione ---Database: 11g Rilascio 1
Codice errore: ORA-12504
   Descrizione: TNS: al listener non è stato assegnato SERVICE_NAME in CONNECT_DATA
Causa: Il listener non è stato configurato con un servizio predefinito e SERVICE_NAME mancava dal CONNECT_DATA ricevuto dal listener.
Azione: Le possibili soluzioni sono: - Configurare il parametro DEFAULT_SERVICE in LISTENER.ORA con un nome di servizio valido. Ricarica il file dei parametri del listener usando ricaricare []. Questo dovrebbe essere fatto dall'amministratore di LISTENER. - Se si utilizza un nome di servizio, verificare che il descrittore di connessione corrispondente al nome del servizio in TNSNAMES.ORA abbia un componente SERVICE_NAME o SID in CONNECT_DATA.
--- Termina citazione ---

nomorelogic:
Puoi postare tnsnames.ora?

Edit:
Sia del tuo pc che quello in ufficio

Coriandolo:
Ufficio:

--- Codice: ---
SERVER01 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.9)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )
 
SERVER02 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.9.9)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )
--- Termina codice ---

Casa:

--- Codice: ---
# tnsnames.ora Network Configuration File: C:\Oracle\18.0.0\dbhomeXE\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

LISTENER_XE =
  (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-5KC4KA6)(PORT = 1521))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )


--- Termina codice ---

nomorelogic:
se non ho capito male:
oracle è installato in locale sul tuo pc di casa
in ufficio oracle è installato in 192.168.7.9 (oppure 192.168.9.9)

quando lavori sul tuo pc, la tua applicazione tenta la connessione con "XE" mentre nel tuo ufficio trovo dichiarati "SERVER01" e "SERVER02".
Su tutte e 3 le configurazioni c'è l'indicazione "(SERVICE_NAME = XE)" ma questo è per la comunicazione col listener e per ora non credo che influisca (in oracle ogni DB normalmente ha un suo servizio).

Quello che puoi provare a fare è di modificare TNSNAME.ORA nel client  in ufficio includendo anche la seguente dichiarazione (posto che oracle sia in 192.168.7.9):

--- Codice: ---
XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.9)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )
--- Termina codice ---

in conclusione non credo che il problema sia con oci.dll ma che si tratti di un problema di configurazione per far in modo che il client trovi il server
spero che la soluzione quì sopra funzioni al primo colpo, in alternativa devi provare altre configurazioni
ma il tuo problema è in TNSNAMES.ORA o nel listener

Navigazione

[0] Indice dei post

[#] Pagina successiva

Vai alla versione completa