【发布时间】:2019-12-27 22:33:51
【问题描述】:
我在 docker 容器上运行 Oracle 11g 映像 (https://hub.docker.com/r/oracleinanutshell/oracle-xe-11g)。
我正在使用调试选项创建容器,如下所述:
docker run --name oracle-xe-11g -idt -p 1521:1521 -p 49161:8080 -e ORACLE_ALLOW_REMOTE=true oracleinanutshell/oracle-xe-11g /bin/bash
之后,我以 sudo 身份登录容器,使用正确的主机名配置 listener.ora,一切都遵循本指南(在 pt-Br 中,但命令易于理解)
http://loredata.com.br/2017/08/31/rodando-o-oracle-no-docker/
我可以连接 SQL Developer 和在 Wildfly 服务器上运行的主应用程序,但出于支持目的,我需要调试一些包和存储过程。
我编译了我的所有包和过程以允许调试,向用户授予调试权限,但是当我尝试使用 SQL Developer 默认调试选项调试包中的过程时,我收到以下错误:
Conectando ao banco de dados SFW_DOCKER.
Executando PL/SQL: ALTER SESSION SET PLSQL_DEBUG=TRUE
Executando PL/SQL: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( '127.0.0.1', '20587' )
ORA-30683: falha ao estabelecer conexão com o depurador
ORA-12541: TNS:não há listener
ORA-06512: em "SYS.DBMS_DEBUG_JDWP", line 68
ORA-06512: em line 1
Processo encerrado.
Desconectando do banco de dados SFW_DOCKER.
它说没有监听器,但我确信一切运行良好。
我还尝试在端口 4000-4999 中运行,在创建容器命令中公开它们并强制 SQL Developer 使用它们,但我得到了同样的错误。
谁能帮我解答这个问题?
【问题讨论】:
-
linux 容器可以通过 localhost:20587 访问你的主机吗?这就是调试器正在尝试做的事情,从数据库返回到运行 SQL Developer 的机器
-
我不确定我是否理解您的要求。容器和 SQL Developer 运行的是同一台机器,这是我的开发工作站。 SQL Developer 可以通过 localhost 访问容器,并且所有其他应用程序也可以访问容器,因此我的 database.url=jdbc:oracle:thin:@localhost:1521:xe 适用于所有情况。您的意思是我的机器需要将其端口暴露给 docker 容器?
-
我知道容器 ip 和端口,并且我知道我的机器 ip 和端口,所以我不需要尝试将我的 SQL Developer 连接到暴露容器 ip 和端口的 oracle 容器,我需要做其他事情怎么办?
标签: docker debugging oracle11g oracle-sqldeveloper