简体   繁体   English

无法连接到数据库12c

[英]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_HOMEORACLE_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_nameSID It does not determine database instance and database service availability. 它不能确定数据库实例和数据库服务的可用性。 See Billy's reply here . 在此处查看Billy的回复。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM