【问题标题】:Connect to Oracle XE Docker container连接到 Oracle XE Docker 容器
【发布时间】:2020-09-05 14:16:07
【问题描述】:

我在通过 Telnet 或 SQLPLUS 从我的主机系统访问 Oracle XE 数据库 Docker 容器(版本 2.3.0.4)时遇到问题:

这是我的 Oracle XE 和容器配置:

docker port 54cb9336d8c3
1521/tcp -> 127.0.0.1:1521

Oracle 配置:

cat /opt/oracle/product/18c/dbhomeXE/network/admin/listener.ora
DEFAULT_SERVICE_LISTENER = XE

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

cat /opt/oracle/product/18c/dbhomeXE/network/admin/tnsnames.ora
XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

LISTENER_XE =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))

lsnrctl 输出:

lsnrctl status

LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 05-SEP-2020 13:29:49

Copyright (c) 1991, 2018, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 18.0.0.0.0 - Production
Start Date                04-SEP-2020 23:23:29
Uptime                    0 days 14 hr. 6 min. 20 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Default Service           XE
Listener Parameter File   /opt/oracle/product/18c/dbhomeXE/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/54cb9336d8c3/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=127.0.0.1)(PORT=5500))(Security=(my_wallet_directory=/opt/oracle/admin/XE/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "XE" has 1 instance(s).
  Instance "XE", status READY, has 1 handler(s) for this service...
Service "XEXDB" has 1 instance(s).
  Instance "XE", status READY, has 1 handler(s) for this service...
Service "ae7e9c04366c09a3e053030011ac556e" has 1 instance(s).
  Instance "XE", status READY, has 1 handler(s) for this service...
Service "xepdb1" has 1 instance(s).
  Instance "XE", status READY, has 1 handler(s) for this service...
The command completed successfully

我可以通过 SQLPLUS 从 Docker 容器访问 XE 数据库,但无法从我的主机系统连接到数据库。

Telnet 到 1521 端口(在 Docker 容器中)

[root@54cb9336d8c3 admin]# telnet localhost 1521
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Telnet 到端口 1521(从 macOS 主机)

telnet localhost 1521
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.

我是否遗漏了 Oracle DB 或 Docker 容器的配置?

【问题讨论】:

    标签: oracle docker containers


    【解决方案1】:

    我已经有一段时间没有配置 Oracle DB,但在我看来,您的监听器设置为只监听环回接口。

    你应该试试这个配置:

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

    为了比较,这里是来自官方 Oracle 数据库企业版 Docker 镜像的listener.ora

    LISTENER =   (DESCRIPTION_LIST =     (DESCRIPTION =       (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))     )   ) 
    DIAG_ADR_ENABLED = off
    SSL_VERSION = 1.0
    

    tnsnames.ora 来自同一张图片:

    ORCLCDB =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = ORCLCDB.localdomain)     )   ) 
    ORCLPDB1 =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = ORCLPDB1.localdomain)     )   )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-26
      • 2020-01-29
      • 2022-11-18
      • 1970-01-01
      • 2021-07-18
      • 1970-01-01
      相关资源
      最近更新 更多