我目前正在尝试在 Windows docker 容器中以交互方式安装 Oracle Database 19c,但我不断收到相同的错误消息。
我的主机运行 Windows Server 2019 Standard,我使用的是 Docker 版本 20.10.9,内部版本 591094d。 如果从官方网站获取 Orcale Database 19c 版本 19.3 的 Oracle 安装文件: https://www.oracle.com/de/database/technologies/oracle19c-windows-downloads.html
我使用的镜像基于 Microsoft 的官方 Windows Server 2019 镜像。
我一直遵循本演示文稿中的说明: https://www.oracle.com/docs/tech/oow19-dockerforwindows.pdf
我知道 Oracle Database 19.7 修复了 Windows docker 容器的一些问题,但我找不到该问题的下载链接,并且演示文稿描述了这些问题的解决方法,我遵循了这些问题。
我的 Dockerfile 如下所示:
# Base image
FROM mcr.microsoft.com/windows/servercore:ltsc2019
# copy golden db image after taking it from OTN
COPY WINDOWS.X64_193000_db_home.zip c:/data/db_home.zip
# unzip Oracle golden db image and install VS2013 runtime
RUN powershell -command Expand-Archive c:\\data\\db_home.zip -DestinationPath c:\\data\\db_home
RUN setx path ".;c:\data\db_home\Bin;%path%;"
ENV ORACLE_HOME c:\\data\\db_home
COPY vcredist_x64.exe c:/vcredist_x64.exe
# Install VS2013 runtime env
RUN powershell.exe -Command \
$ErrorActionPreference = 'Stop'; \
Start-Process c:\vcredist_x64.exe -ArgumentList '/install /passive /norestart ' -Wait ; \
Remove-Item c:\vcredist_x64.exe –Force
# Provide response file to install Oracle Software Only (modified to workaround bug)
COPY db.rsp c:\\data\\db.rsp
#Execute response file to install Oracle Software Only
RUN c:\data\db_home\setup.bat -silent -responseFile c:\data\db.rsp
我使用自定义响应文件(添加了 INVENTORY_LOCATION 修复),并且可以根据需要提供详细信息。
构建 docker 容器,Oracle 安装程序 (setup.bat) 会给出以下输出:
Setupassistent von Oracle Database wird gestartet...
[WARNING] [INS-13001] Oracle-Datenbank wird auf diesem Betriebssystem nicht unterstützt. Die Voraussetzungsprüfungen werden nicht auf dem System durchgeführt.
URSACHE: Möglicherweise war dieses Betriebssystem zum Zeitpunkt des Release dieser Software nicht in der Zertifizierungsliste enthalten.
AKTION: Im My Oracle Support-Portal finden Sie die aktuellsten Zertifizierungsinformationen für dieses Betriebssystem. Setzen Sie die Installation fort, wenn das Betriebssystem nach dem Release dieser Software zertifiziert
wurde.
[FATAL] [INS-35180] Prüfung auf verfügbaren Speicher nicht möglich.
*ZUSÄTZLICHE INFORMATIONEN:*
Exception details
- PRVG-1901 : Verzeichnis "C:\Users\ContainerAdministrator\AppData\Local\Temp\InstallActions2024-02-06_11-31-17AM\CVU_19.0.0.0.0_ContainerAdministrator\" für CVU-Remote-Ausführungsframework konnte auf Knoten "93e1bbb9fbe4" ni
cht eingerichtet werden Wählen Sie einen anderen Arbeitsbereich für das Framework 93e1bbb9fbe4 : PRKN-1014 : Remote-Befehl "C:\Users\ContainerAdministrator\AppData\Local\Temp\InstallActions2024-02-06_11-31-17AM\CVU_19.0.0.0.0_
ContainerAdministrator\\exectask.exe" konnte nicht auf Knoten "93e1bbb9fbe4" ausgeführt werden.Failed during connecting to service 93e1bbb9fbe4 : Failed during connecting to service Version von exectask konnte von Knoten "93e1bbb9fbe4" nicht abgerufen werden
Installationssessionlogs wurden verschoben in:
C:\Program Files\Oracle\Inventory\logs\InstallActions2024-02-06_11-31-17AM
如果我查看 C:\Program Files\Oracle\Inventory\logs\InstallActions2024-02-06_11-31-17AM 中的 .out 文件,这就是事情似乎开始出错的地方:
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [RemoteExecCommand.executeInternal:1261] executing the command: 'C:\Users\ContainerAdministrator\AppData\Local\Temp\InstallActions2024-02-06_10-55-17AM\CVU_19.0.0.0.0_ContainerAdministrator\\exectask.exe' with args '-getver ', 'm_stdin == null ->true', 'm_localExecution ->true', 'm_chkException ->false'
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [Utils.getLocalHost:487] Hostname retrieved: 93e1bbb9fbe4, returned: 93e1bbb9fbe4
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [WindowsSystem.dorunRemoteExecCmd:3118] _WS_: Calling windowsNative with cmd: C:\Users\ContainerAdministrator\AppData\Local\Temp\InstallActions2024-02-06_10-55-17AM\CVU_19.0.0.0.0_Co
ntainerAdministrator\\exectask.exe
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [nativesystem.WindowsNative.Native] sprvmjni: isCopy=1 cmd=C:\Users\ContainerAdministrator\AppData\Local\Temp\InstallActions2024-02-06_10-55-17AM\CVU_19.0.0.0.0_ContainerAdministrato
r\\exectask.exe
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [nativesystem.WindowsNative.Native] sprvmjni: isCopy=1 node=93e1bbb9fbe4
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [nativesystem.WindowsNative.Native] num args: 1
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [nativesystem.WindowsNative.Native] args[0] = -getver
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [nativesystem.WindowsNative.Native] Trying to open a named pipe
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [nativesystem.WindowsNative.Native] About to open pipe
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [nativesystem.WindowsNative.Native] calling create file for pipe \\93e1bbb9fbe4\pipe\srvmremotexecpipev2
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [nativesystem.WindowsNative.Native] None-pipe-busy error 1231
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [nativesystem.WindowsNative.Native] sprvcli: retval = 7
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [nativesystem.WindowsNative.Native] Couldn't talk to service
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [WindowsSystem.dorunRemoteExecCmd:3122] _WS_: WinNative returned: false
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [RemoteExecCommand.executeInternal:1292] cmdSuccess status: false
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [RemoteExecCommand.execute:1050] Second attempt to run the command 'C:\Users\ContainerAdministrator\AppData\Local\Temp\InstallActions2024-02-06_10-55-17AM\CVU_19.0.0.0.0_ContainerAdministrator\\exectask.exe' status: false
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [RemoteExecCommand.execute:1062] cmdSuccess status: false
[Worker 1] [ 2024-02-06 10:55:59.884 MEZ ] [VerificationCommand.execute:419] commandResult.getErrorString()=PRKN-1014 : Remote-Befehl "C:\Users\ContainerAdministrator\AppData\Local\Temp\InstallActions2024-02-06_10-55-17AM\CVU
_19.0.0.0.0_ContainerAdministrator\\exectask.exe" konnte nicht auf Knoten "93e1bbb9fbe4" ausgeführt werden.Failed during connecting to service
因此打开与命名管道的连接似乎存在问题。但我不知道如何解决这个问题。
我的工作环境也相当有限,所以切换到 Linux 不是一个选择。 我是否忽略了需要配置的任何内容?有什么办法可以解决这个问题吗? 如果需要,我很乐意提供更详细的信息。
我尝试以不同用户(本地管理员/本地用户)身份运行安装程序,但没有成功。 我在这里有点不知所措,因为我对 docker 和 Oracle 数据库还很陌生,如果我搜索帮助,我只能同时找到有关 Windows、Oracle DB、Docker 三个主题中的两个的信息。
感谢您的帮助!
自己解决了问题。
愚蠢的我无意中没有将安装选项更改为:
oracle.install.option=INSTALL_DB_SWONLY
在数据库设置的响应文件中。
正确设置后,安装顺利完成,然后必须手动完成配置。
这个存储库帮助我做到了很多:
https://github.com/orest-gulman/Oracle-Database-on-Windows-Container