Oracle
 sql >> Database >  >> RDS >> Oracle

identificando la posizione dei tnsname rilevanti e facendo eco alla console

Secondo Oracle, queste posizioni vengono cercate per tnsnames.ora , risp. sqlnet.ora :

  1. percorso corrente (associato all'applicazione client in esecuzione)
  2. Variabile d'ambiente TNS_ADMIN definito per la sessione
  3. Variabile d'ambiente TNS_ADMIN definito per il sistema
  4. Chiave del registro di Windows HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN (per 64 bit) o ​​HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN (per 32 bit)
  5. %ORACLE_HOME%\network\admin

Tuttavia, non sono sicuro che ogni applicazione/driver/versione segua questo elenco. Questo elenco è stato fornito da Oracle relativo alla versione 9i. Penso che lo gestirai per interrogare queste cartelle tramite VBScript.

Se ORACLE_HOME non è impostato dalla variabile di ambiente, devi interrogare il registro HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME (per 64 bit) o ​​HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME (per 32 bit)

Per ORACLE_HOME_NAME devi accedere al tuo bin Oracle cartella (che si trova tramite %PATH% Variabile d'ambiente) e apri il file oracle.key . Questo è un semplice file di testo contenente solo il ORACLE_HOME_NAME valore, ad es. OraClient11g_home1 .

Tuttavia, in genere c'è solo una Oracle Home sotto HKLM\SOFTWARE\ORACLE , quindi cercare e leggere il file oracle.key potrebbe essere eccessivo.

Aggiorna

Quando eseguo un test sulla mia macchina (con Oracle Client 11.2) ottengo il seguente ordine:

  1. Variabile d'ambiente TNS_ADMIN
  2. HKLM\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN , risp. HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN -> Solo se TNS_ADMIN La variabile d'ambiente non è impostata.
  3. %ORACLE_HOME%\network\admin
  4. Directory attuale (che può essere diversa dalla directory in cui si trova l'applicazione)
  5. Cartella in cui si trova la tua applicazione

Per un'analisi approfondita devi cercare tnsnames.ora , sqlnet.ora e ldap.ora . Il nome del database Oracle può essere risolto attraverso ciascuno di essi, ovvero può essere stabilita una connessione anche quando tnsnames.ora e sqlnet.ora non esistono.