* * * *

Privacy Policy

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Dicembre 03, 2021, 03:17:30 pm

Inserisci il nome utente, la password e la durata della sessione.

20 Visitatori, 0 Utenti

Autore Topic: Oracle errore 12504  (Letto 287 volte)

Coriandolo

  • Newbie
  • *
  • Post: 5
  • Karma: +0/-0
Oracle errore 12504
« il: Ottobre 02, 2021, 11:02:04 pm »
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

  • Scrittore
  • Sr. Member
  • *****
  • Post: 342
  • Karma: +6/-0
  • Prima ascoltare, poi decidere
Re:Oracle errore 12504
« Risposta #1 il: Ottobre 03, 2021, 01:40:26 pm »
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.
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2513
  • Karma: +12/-2
Re:Oracle errore 12504
« Risposta #2 il: Ottobre 03, 2021, 02:50:33 pm »
Puoi postare tnsnames.ora?

Edit:
Sia del tuo pc che quello in ufficio
Imagination is more important than knowledge (A.Einstein)

Coriandolo

  • Newbie
  • *
  • Post: 5
  • Karma: +0/-0
Re:Oracle errore 12504
« Risposta #3 il: Ottobre 03, 2021, 05:31:56 pm »
Ufficio:
Codice: [Seleziona]
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)
    )
  )

Casa:
Codice: [Seleziona]
# 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)
    )
  )


nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2513
  • Karma: +12/-2
Re:Oracle errore 12504
« Risposta #4 il: Ottobre 03, 2021, 06:28:04 pm »
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: [Seleziona]
XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.9)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

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
Imagination is more important than knowledge (A.Einstein)

DragoRosso

  • Scrittore
  • Sr. Member
  • *****
  • Post: 342
  • Karma: +6/-0
  • Prima ascoltare, poi decidere
Re:Oracle errore 12504
« Risposta #5 il: Ottobre 03, 2021, 07:27:11 pm »
Vorrei anche ricordare, magari è una informazione stupida, che ovviamente i server Oracle aziendali devono essere raggiungibili.

Sia che siano "proiettati" su Internet che su VPN è necessario che il PC di casa venga configurato correttamente per la rete e abbia i corretti privilegi (non è detto che un PC che accede alla rete aziendale possa anche "andare" su altri servizi non previsti).

Ciao
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

Coriandolo

  • Newbie
  • *
  • Post: 5
  • Karma: +0/-0
Re:Oracle errore 12504
« Risposta #6 il: Ottobre 03, 2021, 11:19:48 pm »
Grazie a tutti ho capito il problema.
@nomorelogic grazie al tuo suggerimento sono riuscito a ragionare in maniera mirata trovando la soluzione. Era esattamente quello il problema, sbagliavo ad inserire il nome del DB. Anzichè mettere XE come nome DB dovevo mettere SERVER01. A mente stanca non è per niente facile superare certi intoppi che possono sembrare banali.

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2513
  • Karma: +12/-2
Re:Oracle errore 12504
« Risposta #7 il: Ottobre 04, 2021, 08:48:10 am »
ottimo

certi intoppi capitano a tutti i programmatori, non c'è nulla da fare
poi oracle, secondo me, ci mette del suo a complicare le cose semplici  :D
Imagination is more important than knowledge (A.Einstein)

 

Recenti

How To

Utenti
  • Utenti in totale: 729
  • Latest: fogfog
Stats
  • Post in totale: 15588
  • Topic in totale: 1921
  • Online Today: 28
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 20
Total: 20

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.