Conéctese a sql plus desde la línea de comando usando una cadena de conexión

41

Digamos que tengo una base de datos Oracle. Tengo un nombre de usuario = x, contraseña = y, base de datos = z. También sé el puerto = a, SID = b, Nombre de host = c.

Entonces, ¿cómo necesito conectarme correctamente? Usé muchas opciones como:

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)))

Enviar estas líneas de comando generalmente me devuelve mensajes de error como:

ORA-12560: TNS: error del adaptador de protocolo
ORA-12514: TNS: el oyente actualmente no conoce el servicio

¡¡Muchas gracias de antemano!!

Edvinas
fuente
3
Suponiendo que tiene el host / puerto correcto, me parece que la instancia no se está ejecutando o no está registrada con el oyente.
Colin 't Hart
1
usando ezconnect:sqlplus x/y@c:a/b
Dieter DHoker
1
para el registro, su segundo ejemplo (al menos) funciona para mí si lo rodeo con comillas. como x @ "(DESCRIPCIÓN = (DIRECCIÓN = (PROTOCOLO = TCP) (HOST = c) (PUERTO = a)) (CONNECT_DATA = (SID = b)))"
rogerdpack
Abrir -> servicios en la ventana Inicio-> oracleservicexe Funciona para mí.
Prakash

Respuestas:

75

has probado

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

Las versiones modernas de sqlplus (versión 11 o posterior) entienden esta sintaxis y no necesita un archivo tnsnames.ora.

Hanspeter Oberlin
fuente
2
Funciona perfectamente
Gajotres
44
¿cual version? No funciona para mí en CentOS ERROR: ORA-12154: TNS: no se pudo resolver el identificador de conexión especificado
Edmondo1984
Número de puerto predeterminado: 1521
Ivan Chau
44
Tengo SID en lugar de servicio, por lo que usar ":" en lugar de "/" funcionó para mí sqlplus nombre de usuario / contraseña @ host: puerto: sid
Pratik Goenka
1
sqlplus que viene con v11.2.0.1.0no admite la host:portsintaxis. Parece que 11.2.0.4.0ya es compatible ...
gavenkoa
12

Lo más simple es usar el archivo tnsnames.ora para conectarse a la base de datos. Para eso, edítelo y agregue una nueva entrada: este archivo normalmente reside en el directorio $ ORACLE HOME \ NETWORK \ ADMIN.

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

y luego puedes conectarte a la base de datos:

sqlplus x / y @ myDb

eliatou
fuente
Para evitar tener una contraseña en la línea de comando, vea los enlaces en los comentarios aquí: serverfault.com/a/87038/27813
rogerdpack
7

Al póster original ... en la primera opción se perdió un paréntesis de cierre

Incorrecto: (su cadena)

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

Correcto:

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

Su línea sqlplus se ve correcta, verifique lo siguiente:

  1. Puede conectarse como sysdba en el servidor de la base de datos.
  2. Puede conectarse como el usuario que está intentando en el servidor de la base de datos.
  3. Puede hacer ping al servidor de la base de datos desde la computadora desde la que está intentando conectarse.
  4. Puede conectar el oyente desde la computadora desde la que está intentando conectarse.

Si todo esto se verifica, es posible que desee crear una nueva línea de conexión para asegurarse de que no tiene un error tipográfico.

Leigh Riffel
fuente
1

Tal vez su base de datos no esté activa. Si la máquina se reinició y la instancia no está configurada para iniciarse automáticamente (y no se inició manualmente), es posible que deba iniciar el servicio usted mismo.

Si tiene acceso a la pantalla Servicios, puede hacerlo desde allí; o, puedes hacerlo desde la línea de comando.

Vaya al símbolo del sistema e ingrese los siguientes comandos:

set oracle_sid=ORCL

net start oracleserviceORCL

El primero establece el Oracle SID; el segundo realmente inicia el servicio.

Karthick
fuente
0

extracto de la ayuda de sqlplus:

puede ser en forma de Nombre de servicio neto o Easy Connect.

  @[<net_service_name> | [//]Host[:Port]/<service_name>]
usuario82219
fuente
-2

Descubrí que es fácil hacer una conexión de escritorio remoto y abrir el símbolo del sistema y luego conectarme por:

sqlplus sys/YourPassword as sysdba

Kelly
fuente
-3

Debe iniciar los servicios de sus bases de datos. Para esto, vaya al menú Inicio -> Ejecutar e iniciar services.mscLuego busque allí los servicios de bases de datos e inícielo. Después de eso comenzará a funcionar.

usuario139417
fuente
-4

Esto funciona para mí en Oracle 11G

sqlplus orcl_usr/orcl_usr_pass@host/sid
Agron Daka
fuente