【问题标题】:Can't connect to Oracle DB ORA-12560 error无法连接到 Oracle DB ORA-12560 错误
【发布时间】:2017-09-14 19:53:19
【问题描述】:

我已经下载了测试 Oracle EDQ 测试数据库,使用数据库配置助手创建了一个数据库并创建了一个用户。

我已授予他以下特权:

  • 所有权限

  • 连接

  • 资源

  • 在 v_$sysstat 上选择

  • 创建会话

  • 创建表

当我在本地连接到这个名为“eratest”的服务时,我可以通过执行以下命令毫无问题地做到这一点: sqlplus localhost/eratest

但是,当我在不同的机器上做同样的事情时,我得到了这个:

sqlplus edqtrn:1521/era_test(我也尝试过使用 SID eratest 进行连接,但我读到这可能是错误的。)

SQLPlus: Release 10.2.0.4.0 - Production on Thu Sep 14 12:38:08 2017 Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

ERROR: ORA-12560: TNS:protocol adapter error

Enter user-name: c##kuba

Enter password:

ERROR:ORA-12560: TNS:protocol adapter error

我在 tnsnames.ora 文件中有 era_test(如果需要,我可以复制粘贴 tnsnames.ora 的全部内容

ERA_TEST = 

 (DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.3.51)(PORT=1521))

   (CONNECT DATA =



(SERVER = DEDICATED)

  (SERVICE_NAME = ERA_TEST)

  (INSTANCE_NAME = ERATEST)

   )

  )

这里是m Listener.ora 文件:

listener.ora Network Configuration File: /apps/app/oracledb/oracle-base/product/12.1.0/dbhome_1/network/admin/listener.ora

Generated by Oracle configuration tools.

 USE_SID_AS_SERVICE_LISTENER=on

 LISTENER =   (DESCRIPTION_LIST =

     (DESCRIPTION =

>       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

>       (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

>     )   )

我做错了什么?

【问题讨论】:

    标签: linux oracle database-connection


    【解决方案1】:

    请通过 shell/cmd 执行以下命令来检查监听器的状态:

    $>lsnrctl status
    

    然后尝试通过从 shell/cmd 执行来 ping Oracle 实例

    $>tnsping your_oracle@SID
    

    可以是防火墙设置。 检查 iptables 服务的状态。如果是您的测试环境,您可以通过从 shell 执行来禁用此服务:

    $>service iptables stop
    $>chkconfig iptables off
    

    或者您可以使用 iptables 简单地打开端口 1521(适用于 RHEL/Centos):

    $>iptables -I INPUT -p tcp -m tcp --dport 1521 -j ACCEPT
    $>service iptables save
    

    【讨论】:

    • 所以:lsnrctl status 在任何时候都不会返回eratest 服务。也许这就是我无法连接的原因?如果是这样,我可以手动启动它吗?当前摘要如下所示:服务“EDQREPOSITORYXDB”有 1 个实例。实例“orcl”,状态 READY,有 1 个用于此服务的处理程序...同一实例还有其他服务(不能在此处全部粘贴),如果有帮助,我可以将它们粘贴到另一条评论中。至于后者:-机器响应 ping -禁用 iptables 没有帮助
    • 所以“Instance orcl status READY”表示oracle没有问题。可能是 SELinux,检查 /etc/selinux/config 中的配置文件,如果模式为“enforsing”则将其更改为“permissive”
    • 非常感谢您迄今为止的帮助。 SELinux 从 enfrocing 更改为 permissive,我重新启动了服务器(只是为了确定)。有一个变化,当我尝试在本地登录(使用 sqlplus)时,sqlplus 返回:ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA。之后我被提示登录,我输入了与我使用简单连接相同的登录名,它可以工作。远程执行相同操作时没有任何变化(即使使用相同的简单连接命令),我仍然得到ORA-12560: TNS:protocol adapter error
    • 还有一个问题:如果服务摘要(来自 lsnrctl 状态)返回每个服务,但不是我尝试连接的服务(era_test),我应该担心/进一步调查吗?或者,如果我可以使用此服务在本地连接,这意味着它也应该可以工作。另外,也许有一些我忘记/不知道的权限。
    • 如果“lsnrctl services”中没有服务,你应该手动注册。只需在$ORACLE_HOME/network/admin/listener.ora 文件中添加有关它的信息即可。
    猜你喜欢
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 2014-12-22
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    相关资源
    最近更新 更多