解决在docker中运行oracle,远程使用PL/SQL 连接不成功,报错--监听程序当前无法识别连接描述符中请求的服务

问题描述:我使用的是阿里云的轻量级应用服务器,在服务器上安装了一个docker容器,在docker中启动了oracle-xe-11g,运行oracle-xe容器成功以后,然后启动容器,进入到oracle-xe-11g中:

[root@izwz91m0zmp2dlo94i0ptoz ~]# docker exec -it c637d5581b3a bash
root@c637d5581b3a:/# sqlplus   

SQL*Plus: Release 11.2.0.2.0 Production on Tue Dec 18 07:46:24 2018

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter user-name: system
Enter password: 

Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> 

也看到能够成功的进入到oracle的控制台中,在C:\app\wangle\product\11.2.0\client_1\network\admintnsnames.ora中添加了

ORACLE_DOCKER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 47.107.226.177)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORACLE_DOCKER)
    )
  )

使用PL/SQL登录时一直报错:监听程序当前无法识别连接描述符中请求的服务

折腾了好久,把上面的配置改成了

XE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 47.107.226.177)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = XE)
    )
  )

也就是改了SID和服务名
终于连接成功了
初步认为,DOCKER中运行的oracle默认已经配置了XE的监听(Listener),如果把服务名改成其他的(例如上面的ORACLE_DOCKER)就会找不到监听,从而就会报错.
上面也只是我的猜测,欢迎大家指正.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容