使用docker启动oracle:" TNS:listener:所有适当的实例都阻止了新连接"错误

时间:2016-08-02 03:28:15

标签: oracle bash maven docker

我使用docker启动oracle容器。容器启动正常并且DB出现,当我尝试运行maven命令加载某些sql文件时,我收到以下错误:

[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:3.4.1:dropAll (default-cli) on project edacm-se: Error setting up or running Liquibase: liquibase.exception.DatabaseException: java.sql.SQLException: Listener refused the connection with the following error:
[ERROR] ORA-12528, TNS:listener: all appropriate instances are blocking new connections

如果我有2个maven命令,一个先丢弃所有命令然后再一个更新,第一个将失败,上面的消息,第二个将通过,所以它显然是一个等待的问题直到oracle实例可用。

接下来的问题是,您如何确定oracle docker容器实例中的TNS监听器是否可用于远程请求?这可以在shell脚本中完成吗?

我的oracle实例正在运行:

f543a59dad62        oracle              "/bin/sh -c '/usr/sbi"   22 minutes ago      Up 22 minutes       8080/tcp, 0.0.0.0:49160->22/tcp, 0.0.0.0:49161->1521/tcp   determined_khorana

并且基于这张图片:

https://hub.docker.com/r/wnameless/oracle-xe-11g/

1 个答案:

答案 0 :(得分:0)

您可能需要在docker-compose.yml中添加depends_on directive,以便等待数据库完全可用。

请参阅docker-oracle-xe-11g issue 20,其中涉及" Controlling startup order in Compose"