Connessioni al database Oracle: quali sono tutti i campi che devo compilare?
-
13-09-2019 - |
Domanda
Sono abituato a utilizzare SQL Server e ora devo connettermi a Oracle.Posso ottenere descrizioni del tutto inequivocabili di quali sono tutti i campi che devo compilare?
Nello specifico voglio capire cosa sono:
Casa
Nome host
Porta
SID
Nome di Servizio
Alias di rete
Connetti identificatore
La mia comprensione di base è che il nome host è il pooter su cui è seduto, ma è diverso da casa?Port è la porta TCP e il valore predefinito è 1521: sembra abbastanza chiaro.
Devo solo fornire il SID o il nome del servizio?E qual è la differenza: perché l'uno o l'altro?
Se ho un file TNS, qual è l'alias di rete e l'identificatore di connessione?Sono comunque uguali agli altri campi che ho se non utilizzo un file TNS?
Mi dispiace essere un tale noob, ma la mia ricerca preliminare per ottenere risposte mi ha ancora molto confuso.
Grazie!
Soluzione
Home: ORACLE_HOME, an environment variable that points to the location of the Oracle binaries (either location Instance runs from on server or client runs from on client) Hostname: name of the server Port: Port on which the Listener is listening for Oracle connections SID: **S**ervice **ID**entifier. The name of the the Database. This is one of the identifiers that the Listener will expose Service name: An alternate identifier that may be exposed by the Listener
Su un sito esistente e configurato, il modo più semplice per trovare questi dettagli è da un file tnsnames.ora su un client (o server) da cui è possibile effettuare connessioni al database.Cerca sotto $ORACLE(underscore)HOME/network/admin.Trova ORACLE(underscore)HOME con un comando set (Windows) o env (Unix).tnsnames.ora potrebbe anche trovarsi in una posizione indicata dalla variabile $TNS_ADMIN.
Se non è possibile trovare tnsnames.ora e hai accesso al server, prova il seguente comando, generalmente come utente Oracle
lsnrctl status
lsnrctl è l'ascoltatore.Lo stato mostrerà i SID e i nomi dei servizi di cui è a conoscenza (e un paio di altri dettagli)
Oppure trova i file listener.ora e sqlnet.ora in $ORACLE_HOME/network/admin o nella posizione indicata dalla variabile env $TNS_ADMIN
Generalmente ci sarà un ascoltatore per host, quindi una porta per host (potrebbero essercene di più ma non è comune)
Per connettersi a Oracle è necessario indirizzare il client al Listener in una posizione specificata da una combinazione Nome host/Porta e dirgli anche a quale SID o servizio connettersi.
Il commento di DCookie sul SID rispetto al nome del servizio è essenzialmente corretto.
Il SID può essere trovato con (a seconda della versione)
select db_unique_name from v$database or select db_name from v$database
Oppure cercando nel file $ORACLE_HOME/dbs/init(SID NAME).ora o facendo
ps -ef | grep pmon
e annotando l'ultima parte del nome del processo, ad es.ora(sottolineato)pmon(sottolineato)SID
Altri suggerimenti
Se stai usando Oracle 10g
o superiore, utilizzare Easy Connect
sintassi:
//servername/dbname
, come in:
sqlplus scott/tiger@//servername/dbname
Se è necessario utilizzare TNS
, ecco l'esempio di TNSNAMES.ORA
:
XE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = XE)
)
)
In CONNECT_DATA
, puoi usarli entrambi SERVICE_NAME
(che è un identificatore per un'istanza registrata con un ascoltatore), o SID
(che è un identificatore del database).
In un paio di parole:
SERVICE_NAME
è un identificatore di un'istanza:una corsaOracle
eseguibile a cui ti connetteraiSID
è un identificatore di un database:una serie di file in cui sono archiviati i tuoi dati.
Un database può essere utilizzato da più database Oracle
istanze.
In caso di dubbio utilizzare SERVICE_NAME
.
In questo caso, collegarsi come segue:
sqlplus scott/tiger@XE