weixin_42693699
枭筱龙
采纳率71.4%
2019-03-25 12:11 阅读 1.2k

oracle 监听问题 --sqlplus可以登录,其他程序不可以连接

图片说明

???????????????
ip什么的根本不管,直接就能登录本地oracle

在其他程序连接oracle报错:
oracle 错误代码:ora-12541

图片说明

请问这种情况怎么解决?

以下是 listener.ora代码
为了解决这个问题,重新配置了一个监听
所以有两个监听程序,但是依旧不好使!

# listener.ora Network Configuration File: E:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

LISTENER2 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = KX8G3P6HOZLYPJ9)(PORT = 1512))
    )
  )

ADR_BASE_LISTENER2 = E:\app\Administrator

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = KX8G3P6HOZLYPJ9)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = E:\app\Administrator

SID_DESC =
  (GLOBAL_DBNAME = ORCL)
  (ORACLE_HOME = E:\app\Administrator\product\11.2.0\dbhome_1)
  (SID_NAME = ORCL)


以下是tnsnames.ora代码,
前两天还能用,今天一连接就开始报错!!

# tnsnames.ora Network Configuration File: E:\app\Administrator\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

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


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = KX8G3P6HOZLYPJ9)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

============补==================

以下是lsnrctl stat 执行结果

图片说明

以下是tnsping orcl执行结果

图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    weixin_42693699 枭筱龙 2019-04-02 16:42

    问题解决了,因为数据库用的不是很多,所以只能每天抽空查资料做测试!
    数据库回复前我曾修改了两处。

    一、数据库监听配置文件:

    1.tnsnames.ora 文件
    将HOST统一成 localhost 根据上述tnsnames.ora所示,我的HOST一个引用的localhost ,一个引用的机器名。
    2. listener.ora 文件
    也将HOST 统一成 localhost ,这里统一成localhost 是为了避免 listener.ora和.tnsnames.ora不统一的问题。

    有帖子说:统一127.0.0.1 或者 localhost 都是可以的,目前没有亲测IP地址。

    二 oracle字符集环境变量:

    我删除了之前为了解决sqlplus中文乱码问题,所手动添加的环境变量
    (后来发现也没用,因为不是字符集的问题,是因为win10命令窗口不兼容,
    解决方法,命令窗口右键属性,勾选使用旧版控制台,重启就OK了····)
    gbk字符集环境变量配置信息:
    环境变量:NLS_LANG ;
    变量值 : SIMPLIFIED CHINESE_CHINA.ZHS16GBK

    因为很早之前在别的电脑上也配置过一次,配置后恰巧也出现了问题
    (不过,那时候刚接触oracle懂得不多)
    所以这次连带也删除了。

    补充一下:
    @ 后面其实不会影响访问本地数据库,
    @ dba后 如果ip地址不对,那么也不影响他的本地链接,
    所以第一张图并没有问题!

    我在解决这个问题时,统一HOST了,删除了字符集变量,
    重启后就可以正常连接了。

    推测主要原因:
    外部程序或手动修改了计算机的IP、计算机名称
    监听出现问题配置HOST应该足以解决问题!

    点赞 评论 复制链接分享
  • viviliving 回到未来望过去 2019-03-26 15:35

    lsnrctl stat查看一下监听状态
    tnsping orcl查看客户端与服务之间监听访问

    你的机器上是不是装了不止一套oracle软件,如果是的话 请制定要用的那个oracle目录作为环境变量

    点赞 评论 复制链接分享

相关推荐