美文网首页
解决在docker中运行oracle,远程使用PL/SQL 连接

解决在docker中运行oracle,远程使用PL/SQL 连接

作者: 造一个大大的轮子 | 来源:发表于2018-12-18 15:54 被阅读0次

    问题描述:我使用的是阿里云的轻量级应用服务器,在服务器上安装了一个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)就会找不到监听,从而就会报错.
    上面也只是我的猜测,欢迎大家指正.

    相关文章

      网友评论

          本文标题:解决在docker中运行oracle,远程使用PL/SQL 连接

          本文链接:https://www.haomeiwen.com/subject/hcjlkqtx.html