【发布时间】: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