子洋丶 2019-03-25 12:11 采纳率: 100%
浏览 1281
已采纳

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条回答

  • 子洋丶 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应该足以解决问题!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥25 关于##爬虫##的问题,如何解决?:
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误