Estou tentando configurar o oracle-xe na minha máquina Linux. Só preciso de um ambiente para jogar com Oracle SQL; isso não é para produção.
Quando tento iniciar o SQLPLUS, continuo recebendo um dos seguintes erros:
ORA-12541: TNS:no listener
ORA-28547: connection to server failed, probable Oracle Net admin error
Existem alguns posts sobre problemas semelhantes, mas mesmo depois de tentar muitas "soluções" diferentes, ainda estou perdido.
Provavelmente estou fazendo algo terrivelmente errado. Veja as seguintes saídas:
[oracle@roshan ~]$ whoami
oracle
[oracle@roshan ~]$ pwd
/usr/lib/oracle
[oracle@roshan ~]$ echo $ORACLE_HOME
/usr/lib/oracle/product/11.2.0/xe
[oracle@roshan ~]$ echo $ORACLE_SID
PLSExtProc
[oracle@roshan ~]$ cat product/11.2.0/xe/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File:
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
SQL_AUTHENTICATION_SERVICES = (NONE)
[oracle@roshan ~]$ product/11.2.0/xe/bin/lsnrctl start
LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 22-OCT-2017 12:24:03
Copyright (c) 1991, 2011, Oracle. All rights reserved.
TNS-01106: Listener using listener name LISTENER has already been started
[oracle@roshan ~]$ product/11.2.0/xe/bin/lsnrctl status
LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 22-OCT-2017 12:24:07
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.2.0 - Production
Start Date 22-OCT-2017 12:21:18
Uptime 0 days 0 hr. 2 min. 48 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Default Service XE
Listener Parameter File /usr/lib/oracle/product/11.2.0/xe/network/admin/listener.ora
Listener Log File /usr/lib/oracle/diag/tnslsnr/roshan/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=roshan.localdomain)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "XE" has 1 instance(s).
Instance "XE", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@roshan ~]$ sqlplus SYSTEM/foobar@localhost:8080/PLSExtProc
SQL*Plus: Release 12.2.0.1.0 Production on Sun Oct 22 12:24:14 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
ERROR:
ORA-12541: TNS:no listener
Enter user-name: % [oracle@roshan ~]$ sqlplus SYSTEM/foobar@localhost:1521/PLSExtProc
SQL*Plus: Release 12.2.0.1.0 Production on Sun Oct 22 12:24:27 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
ERROR:
ORA-28547: connection to server failed, probable Oracle Net admin error
Enter user-name: %
[oracle@roshan ~]$ su
Password:
[root@roshan oracle]# /etc/rc.d/oracle-xe status
LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 22-OCT-2017 12:32:06
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.2.0 - Production
Start Date 22-OCT-2017 12:21:18
Uptime 0 days 0 hr. 10 min. 47 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Default Service XE
Listener Parameter File /usr/lib/oracle/product/11.2.0/xe/network/admin/listener.ora
Listener Log File /usr/lib/oracle/diag/tnslsnr/roshan/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=roshan.localdomain)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "XE" has 1 instance(s).
Instance "XE", status READY, has 1 handler(s) for this service...
The command completed successfully
Algum destes parece muito errado?
1) você deve definir ORACLE_SID para 'xe', não 'PLSExtProc'. 'PLSExtProc' é um caso especial para procedimentos externos. Em mais de 25 anos, eu nunca tive uma razão para usá-lo.
2) quando você chama o sqlplus assim:
você está solicitando uma conexão entre processos e ignorando todos os problemas de rede, incluindo o ouvinte. O ouvinte é envolvido apenas para solicitações que chegam pela rede.
Quando você chama o sqlplus assim:
você está solicitando uma conexão de rede, com os detalhes a serem resolvidos na entrada 'mydb' no arquivo tnsnames.ora
Quando você chama o sqlplus assim (como sugerido por @Balazs Papp)
Você está solicitando uma conexão de rede, mas ignorando o uso de tnsnames.ora e fornecendo as informações críticas (nome do host, porta, sid) diretamente. Não que todos os três elementos devam corresponder ao que é relatado pelo 'status lisnrctl'. No seu caso, o host não é 'localhost', mas sim 'roshan.localdomain'.
O fato de seu cliente (sqlplus) e o banco de dados estarem na mesma máquina não importa. Se você usar uma sintaxe que solicite uma conexão de rede, a solicitação ainda passará por todos os protocolos de rede.
Você pode ler mais sobre como o Oracle lida com conexões de rede em http://edstevensdba.com/category/oracle-tns/ e http://edstevensdba.com/category/oracle-listener/
O ouvinte escuta na porta padrão: 1521. Você está tentando efetuar login usando a porta 8080.
Em vez disso:
Tente isto:
A porta 8080 é usada pelo APEX, você pode efetuar login a partir de um navegador.