在使用WSL2创建Oracle Database XE 18.4映像后,我遇到了这个问题。我正在尝试基于此映像创建一个容器,并且不断收到这些错误,即使我正在执行与 Oracle 提供的本教程中要求完全相同的操作。 当我尝试创建容器并首次打开它时,会出现错误
sed: can't read /etc/oratab: No such file or directory
/opt/oracle/runOracle.sh: line 194: /etc/init.d/oracle-xe-18c: No such file or directory
grep: /etc/oratab: No such file or directory
/opt/oracle/checkDBStatus.sh: line 18: oraenv: No such file or directory
#####################################
########### E R R O R ###############
DATABASE SETUP WAS NOT SUCCESSFUL!
Please check output for further info!
########### E R R O R ###############
#####################################
The following output is now a tail of the alert.log:
tail: cannot open '/opt/oracle/diag/rdbms/*/*/trace/alert*.log' for reading: No such file or directory
tail: no files remaining
我想知道我到底能做些什么来解决这些错误并使该数据库运行。事实上,我无法验证日志中提到的这些文件是否存在,因为我甚至无法连接到这个容器,因为它由于这些错误而保持打开大约 5 秒.
我在与 WSL2.
XE v18.4.0 的Dockerfile
与同一存储库中的所有其他版本不同,因为它尝试在容器构建阶段使用 https 直接从 Oracle Web 服务器拉取映像。但是容器构建阶段本身发生在容器内(FROM...),所以,就我而言,它失败了,因为它没有正确的互联网连接(带有https问题的糟糕代理)。映像已创建,但不包含数据库引擎。
我已经修改了OracleDatabaseSingleInstancedockerfiles18.4.0
内部的Dockerfile
,以便不再使用 https 源,它会在映像内执行(已下载)oracle-database-xe-18c-1.0-1.x86_64.rpm
的COPY
并将其安装在"本地"。
我使用另一个版本的Dockerfile
作为模板,但这很简单。
隐藏在docker-imagesOracleDatabaseSingleInstanceREADME.md
中的内容如下:
重要说明:您必须提供 Oracle 数据库的安装二进制文件(Oracle Database 18c XE 除外)并将它们放入
dockerfiles/<version>
文件夹中。您只需为要安装的版本提供二进制文件。二进制文件可以从 Oracle 技术网络下载,请确保您使用 linux 链接:Linux x86-64。所需的文件名为linuxx64_<版本>_database.zip版本>。您还必须确保为yum提供互联网连接。请注意,不得解压缩二进制文件。脚本将为您处理,如果您手动解压缩它们,则会失败!
如果您从 https://www.oracle.com/uk/database/technologies/xe-downloads.html 下载 OracleXE RPM 并按照文档中的说明将其复制到版本目录中,那么在构建 Oracle XE docker 映像时,它似乎使用下载的 RPM 对 Oracle XE 进行了完整安装。
如果您在构建 Docker 映像之前跳过 RPM 的手动下载,似乎将构建容器,但它会在运行时尝试进行下载,至少对我来说,这不起作用。
构建 Docker 映像后,可以使用以下命令启动容器:
docker run --name oraclexe
-p 51521:1521
-p 55500:5500
-v [HOST_PATH]:/opt/oracle/oradata
-e ORACLE_PWD=mysecurepassword
-e ORACLE_CHARACTERSET=AL32UTF8
oracle/database:18.4.0-xe
其中HOST_PATH
是 Oracle 将在其中存储数据库的本地目录的路径。