oracle - 使用 docker : "TNS:listener: all appropriate instances are blocking new connections" error 启动 oracle

标签 oracle bash maven docker

我正在使用 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

基于这张图片:

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

最佳答案

您可能需要添加 depends_on directivedocker-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/

相关文章:

oracle - Pl-sql block 中的分区索引重建

linux - 在特定位置执行命令并取决于上一个命令的回答

maven - spring maven profile - 根据编译配置文件设置属性文件

使用 pls_integer 进行 Oracle 集合

Oracle 无法启动 - ORA-00845 : MEMORY_TARGET not supported on this system - but memory size seems to be fine

linux - 如何通过 shell 脚本在远程服务器上连接和运行 shell 脚本

xml - 使用 Maven 生成 XML 文件

eclipse - STS(Eclipse)maven添加远程存储库

java - 引用游标和直接 Java 代码之间的性能差异

linux - 如何在 Linux bash shell 中转义 bang (!) 字符?