Docker:Oracle数据库18.4.0 XE希望在启动时配置新数据库

时间:2019-03-30 20:16:27

标签: oracle docker

我正在尝试配置Oracle数据库容器。我的问题是,每当我尝试重新启动容器时,启动脚本都希望配置新数据库而失败,因为指定的卷上已经配置了数据库。

该如何使容器知道我要使用现有数据库?

启动脚本是我从Oracle GitHub下载的原始脚本: Link

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

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

2 个答案:

答案 0 :(得分:0)

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

docker exec -ti containerid bash

在那里,您应该手动检查以下内容:

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

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

num

评论后更新=====

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

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

答案 1 :(得分:0)

我认为我从头到尾都了解问题的根源。

我在documentation中忽略的是,Oracle数据库的Express Edition除了默认值外不支持SID / PBD。但是,配置脚本(看似/etc/init.d/oracle-xe-18c,但并不恰当)只是部分考虑了这一事实而制作的。这意味着,如果我在安装时设置了ORACLE_SID和/或ORACLE_PWD环境变量,则在尝试复制2个文件时,数据库将启动并运行,并出现2个可疑错误。

mv: cannot stat '/opt/oracle/product/18c/dbhomeXE/dbs/spfileROPIDB.ora': No such file or directory
mv: cannot stat '/opt/oracle/product/18c/dbhomeXE/dbs/orapwROPIDB': No such file or directory

在停止和重新启动docker容器时,我会收到一条错误消息,因为配置脚本根据这些变量创建了文件夹/文件名,但是,docker镜像的构建方式仅支持默认名称,导致它尝试重新配置一个新数据库,但发现该数据库已经存在。

我希望这是有道理的。