Connettersi a sql plus dalla riga di comando utilizzando la stringa di connessione


41

Diciamo che ho un database Oracle. Ho un nome utente = x, password = y, database = z. Inoltre conosco port = a, SID = b, Hostname = c.

Quindi, come devo collegarmi correttamente? Ho usato molte opzioni come:

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED)))'

sqlplus (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=b)))

L'invio di queste righe di comando di solito mi restituisce messaggi di errore come:

ORA-12560: TNS: errore dell'adattatore di protocollo
ORA-12514: TNS: il listener non è attualmente al servizio

Molte grazie in anticipo!!


3
Supponendo che tu abbia l'host / la porta giusti, mi sembra che l'istanza non sia in esecuzione o non sia registrata con l'ascoltatore.
Colin 't Hart,

1
usando ezconnect:sqlplus x/y@c:a/b
Dieter DHoker

1
per la cronaca, il tuo secondo esempio (almeno) funziona per me se lo circondo tra virgolette. come x @ "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = c) (PORT = a)) (CONNECT_DATA = (SID = b)))"
rogerdpack

Apri -> servizi nella finestra Start-> oracleservicexe Funziona per me.
Prakash,

Risposte:


75

hai provato

sqlplus username/password@host:port/service
sqlplus x/y@c:a/b

le versioni moderne di sqlplus (versione 11 o successive) comprendono questa sintassi e non è necessario un file tnsnames.ora.


2
Funziona perfettamente
Gajotres il

4
quale versione? Non funziona per me su CentOS ERROR: ORA-12154: TNS: impossibile risolvere l'identificatore di connessione specificato
Edmondo1984,

Numero porta predefinito: 1521
Ivan Chau,

4
Ho SID invece del servizio, quindi usando ":" invece di "/" ha funzionato per me sqlplus username / password @ host: port: sid
Pratik Goenka

1
sqlplus fornito con v11.2.0.1.0non supporta la host:portsintassi. Sembra 11.2.0.4.0già supporta ...
gavenkoa il

12

Il più semplice è usare il file tnsnames.ora per connettersi al database. Per questo modificalo e aggiungi una nuova voce: questo file normalmente risiede nella directory $ ORACLE HOME \ NETWORK \ ADMIN.

myDb  =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(Host = c)(Port =a))
   )
 (CONNECT_DATA =
   (SERVICE_NAME =b)
 )
)

e quindi potresti connetterti al db:

sqlplus x / y @ myDb


Per evitare di avere una password dalla riga di comando, vedere i collegamenti nei commenti qui: serverfault.com/a/87038/27813
rogerdpack

7

Al poster originale ... nella prima opzione hai perso una parentesi chiusa

Errato: (la tua stringa)

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED)))'

Corretta:

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED))))'

2

La tua linea sqlplus sembra corretta, verifica quanto segue:

  1. È possibile connettersi come sysdba sul server di database stesso.
  2. È possibile connettersi come l'utente a cui si sta tentando sul server di database stesso.
  3. È possibile eseguire il ping del server di database dal computer dal quale si sta tentando di connettersi.
  4. È possibile tnspare l'ascoltatore dal computer dal quale si sta tentando di connettersi.

Se tutti questi check out potresti voler creare una nuova linea di connessione per assicurarti di non avere un refuso.


1

Forse il tuo database non è attivo. Se la macchina è stata riavviata e l'istanza non è impostata per l'avvio automatico (e non è stata avviata manualmente), potrebbe essere necessario avviare il servizio da soli.

Se hai accesso alla schermata Servizi, puoi farlo da lì; oppure puoi farlo dalla riga di comando.

Vai al prompt dei comandi e inserisci i seguenti comandi:

set oracle_sid=ORCL

net start oracleserviceORCL

Il primo imposta Oracle SID; il secondo avvia effettivamente il servizio.


0

estrarre dalla guida di sqlplus:

può essere sotto forma di Nome servizio di rete o Easy Connect.

  @[<net_service_name> | [//]Host[:Port]/<service_name>]

-2

Ho scoperto che è facile eseguire una connessione desktop remoto e aprire il prompt dei comandi, quindi connettersi tramite:

sqlplus sys/YourPassword as sysdba


-3

È necessario avviare i servizi dei database. Per questo, vai al menu Start -> Esegui e avvia services.mscQuindi cerca lì i servizi di database e avviarlo. Dopodiché inizierà a funzionare.


-4

Questo funziona per me su Oracle 11G

sqlplus orcl_usr/orcl_usr_pass@host/sid
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.