首页 > 解决方案 > Docker:Oracle 数据库 18.4.0 XE 想在启动时配置一个新数据库

问题描述

我正在尝试配置 Oracle 数据库容器。我的问题是每当我试图重新启动容器时,启动脚本想要配置一个新的数据库并且没有这样做,因为已经在指定的卷上配置了一个数据库。

我该怎么做才能让容器知道我想使用我现有的数据库?

启动脚本是我从 Oracle GitHub 下载的库存脚本: 链接

更新:很明显,当/etc/init.d/oracle-xe-18c start返回没有配置数据库时会出现问题,这会触发启动脚本尝试配置一个。

更新2:我尝试在没有传递任何环境变量的情况下创建数据库,并且在重新启动容器后,数据库已启动并运行。这是一个烦人的解决方法,但这是似乎有效的解决方法。如果您有其他想法,请告诉我

标签: oracledocker

解决方案


我认为您应该使用以下方式连接到 linux 映像:

docker exec -ti containerid bash

到达那里后,您应该手动检查以下内容:

如果 $ORACLE_BASE/oradata/$ORACLE_SID 与脚本一样存在,如果 $ORACLE_BASE/admin/$ORACLE_SID/adump 不存在。

您应该手动执行的另一件事是

/etc/init.d/oracle-xe-18c start | grep -qc "Oracle Database is not configured

评论后更新=====

我没有脚本,但您应该使用 bash -x 运行它以查看脚本在寻找什么,以便调试正在发生的事情

没有意义的是,您说 $ORACLE_BASE/admin/$ORACLE_SID/adump 不存在,但如果部署了 docker 并且您有一个数据库正在运行,那么脚本第一次运行时它应该已经创建了这个。


推荐阅读