Conecte-se ao sql plus na linha de comando usando a cadeia de conexão

41

Digamos que eu tenho um banco de dados Oracle. Eu tenho um nome de usuário = x, senha = y, banco de dados = z. Também sei a porta = a, SID = b, Hostname = c.

Então, como eu preciso me conectar corretamente? Eu usei muitas opções 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)))

O envio dessas linhas de comando geralmente retorna mensagens de erro como:

ORA-12560: TNS: erro no adaptador de protocolo
ORA-12514: TNS: o ouvinte atualmente não conhece o serviço

Muito obrigado antecipadamente!!

Edvinas
fonte
3
Supondo que você tenha o host / porta certo, parece-me que a instância não está sendo executada ou não está registrada no ouvinte.
Colin 'Hart
11
usando ezconnect:sqlplus x/y@c:a/b
Dieter DHoker 14/05
11
para o registro, seu segundo exemplo (pelo menos) funciona para mim se eu o envolver entre aspas. como x @ "(DESCRIÇÃO = (ENDEREÇO = (protocolo TCP =) (HOST = c) (PORT = a)) (CONNECT_DATA = (SID = b)))"
rogerdpack
Abra -> serviços na janela Iniciar-> oracleservicexe Funciona para mim.
Prakash

Respostas:

74

você tentou

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

as versões modernas do sqlplus (versão 11 ou mais recente) entendem essa sintaxe e você não precisa de um arquivo tnsnames.ora.

Hanspeter Oberlin
fonte
2
Ele funciona perfeitamente
Gajotres
4
qual versão? Não trabalho para mim no CentOS ERROR: ORA-12154: TNS: poderia não resolver o identificador de conexão especificado
Edmondo1984
Número da porta padrão: 1521
Ivan Chau
4
Eu tenho SID em vez de serviço para usar ":" em vez de "/" funcionou para mim sqlplus nome de usuário / senha @ host: port: sid
Pratik Goenka
11
O sqlplus que acompanha v11.2.0.1.0não suporta host:portsintaxe. Parece 11.2.0.4.0já suporta ...
gavenkoa 20/01
12

O mais simples é usar o arquivo tnsnames.ora para conectar-se ao banco de dados. Para isso, edite-o e adicione uma nova entrada: Esse arquivo normalmente reside no diretório $ ORACLE HOME \ NETWORK \ ADMIN.

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

e então você pode se conectar ao banco de dados:

sqlplus x / y @ myDb

eliatou
fonte
Para evitar ter uma senha na linha de comando, consulte os links em comentários aqui: serverfault.com/a/87038/27813
rogerdpack
7

Para o pôster original ... na primeira opção, você perdeu um parêntese de fechamento

Incorreto: (Sua sequência)

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

Corrigir:

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

Sua linha sqlplus parece correta, verifique o seguinte:

  1. Você pode conectar-se como sysdba no próprio servidor de banco de dados.
  2. Você pode se conectar como o usuário que está tentando no próprio servidor de banco de dados.
  3. Você pode executar ping no servidor de banco de dados no computador em que está tentando se conectar.
  4. Você pode digitar o ouvinte no computador em que está tentando se conectar.

Se tudo isso ocorrer, você pode criar uma nova linha de conexão para garantir que não tenha erros de digitação.

Leigh Riffel
fonte
1

Talvez seu banco de dados não esteja funcionando. Se a máquina foi reiniciada e a instância não está definida para iniciar automaticamente (e não foi iniciada manualmente), pode ser necessário iniciar o serviço você mesmo.

Se você tiver acesso à tela Serviços, poderá fazê-lo a partir daí; ou, você pode fazê-lo na linha de comando.

Vá para o prompt de comando e insira os seguintes comandos:

set oracle_sid=ORCL

net start oracleserviceORCL

O primeiro define o SID do Oracle; o segundo realmente inicia o serviço.

Karthick
fonte
0

extrair da ajuda do sqlplus:

pode estar na forma de Net Service Name ou Easy Connect.

  @[<net_service_name> | [//]Host[:Port]/<service_name>]
user82219
fonte
-2

Achei fácil fazer a conexão remota da área de trabalho, abrir o prompt de comando e conectar-se por:

sqlplus sys/YourPassword as sysdba

Kelly
fonte
-3

Você deve iniciar os serviços dos seus bancos de dados. Para isso, vá ao menu Iniciar -> Executar e iniciar. services.mscEm seguida, procure lá por serviços de bancos de dados e inicie-o. Depois disso, ele começará a funcionar.

user139417
fonte
-4

Isso funciona para mim no Oracle 11G

sqlplus orcl_usr/orcl_usr_pass@host/sid
Agron Daka
fonte