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


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.


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


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

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.


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.


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

-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


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


-4

Esto funciona para mí en Oracle 11G

sqlplus orcl_usr/orcl_usr_pass@host/sid
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.