我正在使用 docker 启动 oracle 容器。容器启动正常,数据库启动,当我尝试运行 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
基于这张图片:
最佳答案
您可能需要添加 depends_on
directive在 docker-compose.yml
中等待数据库完全可用。
参见 docker-oracle-xe-11g issue 20 ,它指的是“Controlling startup order in Compose”
关于oracle - 使用 docker : "TNS:listener: all appropriate instances are blocking new connections" error 启动 oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38711321/