[英]Unable to Connect to Database 12c
I have installed Oracle Database 12.1.0.2 on my linux machine. 我已经在Linux机器上安装了Oracle Database 12.1.0.2。 For the very first time everything works perfectly fine but when i restarted my machine then i was unable to connect to the database and it throws this error 第一次,一切正常,但是当我重新启动计算机时,我无法连接到数据库,并引发此错误
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor ORA-12514:TNS:侦听器当前不知道连接描述符中请求的服务
My listerner.ora file is as follows: 我的listerner.ora文件如下:
LISTERNER=
(DESCRIPTON_LIST=
(DESCRIPTION=
(ADDRESS = (PROTOCOL = TCP)(HOST=oracle.localdomain)(PORT=1521))
(ADDRESS= (PROTOCOL = IPC)(KEY=EXTPROC1521))
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=orcl)
(ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/db_1)
(PROGRAM = /u01/app/oracle/product/12.1.0.2/db_1/bin/dg4odbc)
)
)
DEFAULT_SERVICE_LISTERNER=(orcl.localdomain)
My tnsnames.ora file is as follows: 我的tnsnames.ora文件如下:
orcl=
(DESCRIPTION=
(ADDRESS=(PROTOCOL = TCP)(HOST=oracle.localdomain)(PORT=1521))
(CONNECT_DATA=
(SERVER = DEDICATED)
(SERVICE_NAME=orcl.localdomain)
)
)
Kindly help i am stuck with this issue for over 2 weeks. 请帮助我解决这个问题超过2周。
tnsping orcl command gives the following output: tnsping orcl命令提供以下输出:
TNS Ping Utility ffor Linux: Version 12.1.0.2.0 - Production on 01-DEC-2015 15:21:46
Copyright (c) 1997, 2014, Oracle. All Rights reserved.
Used parameter files:
/u01/app/oracle/product/12.1.0.2/db_1/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION=
(ADDRESS=(PROTOCOL = TCP)(HOST=oracle.localdomain)(PORT=1521))
(CONNECT_DATA=
(SERVER = DEDICATED)
(SERVICE_NAME=orcl.localdomain)
)
)
OK (0msec)
lsnrctl status command gives this output: lsnrctl status命令给出以下输出:
[oracle@oracle ~]$ lsnrctl status
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 01-DEC-2015 15:38:50
Copyright (c) 1991, 2014, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle.localdomain) (PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.1.0.2.0 -Production
Start Date 01-DEC-2015 14:08:29
Uptime 0 days 1 hr. 30 min. 20 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Default Service orcl.localdomain
Listener Parameter File
/u01/app/oracle/product/12.1.0.2 /db_1/network/admin/listener.ora
Listener Log File
/u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle.localdomain)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "orcl" has 1 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
Per our conversation in the comments, you are now able to connect locally. 根据我们在评论中的对话,您现在可以在本地连接。 You just need to start the database. 您只需要启动数据库。 Let me explain in details: 让我详细解释一下:
To connect to database locally , you do not need a listener . 要本地连接到数据库,您不需要侦听器 。 You need it only to receive remote connections . 您只需要它就可以接收远程连接 。
To connect locally, you just need a combination of ORACLE_HOME and ORACLE_SID environment variables. 要在本地连接,您只需要ORACLE_HOME和ORACLE_SID环境变量的组合。
export ORACLE_HOME=path of ORACLE_HOME
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=orcl
sqlplus / as sysdba
Now, you are connected to an idle instance . 现在,您已连接到一个空闲实例 。 You need to start the database : 您需要启动数据库 :
startup;
On a side note, remember, tnsping is very primitive. 另外,请记住, tnsping非常原始。 it only validates the host and port and nothing else. 它只会验证主机和端口,而不会验证其他任何内容。 It doesn't validate the service_name or SID . 它不验证service_name或SID 。 It does not determine database instance and database service availability. 它不能确定数据库实例和数据库服务的可用性。 See Billy's reply here . 在此处查看Billy的回复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.