我正在尝试通过Ansible在Windows Server 2016上安装Oracle Client 12c。
我尝试了各种选项来安装客户端:
选项1
- name: "Install Oracle Client"
win_command: "C:\\Temp\\Software\\Oracle-Client\\client\\setup.exe -ignoreSysPrereqs -ignorePrereq -waitforcompletion -showProgress -silent -responseFile C:\\Temp\\Software\\Oracle-Client\\client\\response\\client.rsp"
我得到的错误代码是:
fatal: [windoze]: FAILED! => {
"changed": true,
"cmd": "C:\\Temp\\Software\\Oracle-Client\\client\\setup.exe -ignoreSysPrereqs -ignorePrereq -waitforcompletion -showProgress -silent -responseFile C:\\Temp\\Software\\Oracle-Client\\client\\response\\client.rsp",
"delta": "0:00:10.592896",
"end": "2018-11-22 12:34:33.774009",
"msg": "non-zero return code",
"rc": 1,
"start": "2018-11-22 12:34:23.181113",
"stderr": "",
"stderr_lines": [],
"stdout": "\r\n Exit code of OUI process 1=",
"stdout_lines": [
"",
" Exit code of OUI process 1="
]
}
选项2
- name: "Install Oracle Client"
win_package:
path: C:\Temp\Software\Oracle-Client\client\setup.exe
creates_path: C:\app\client_1
arguments:
- "-silent -noconsole -waitforcompletion -responseFile C:\\Temp\\Software\\Oracle-Client\\client\\response\\client.rsp"
state: present
我得到的错误是:
fatal: [windoze]: FAILED! => {
"changed": false,
"exit_code": 1,
"msg": "unexpected rc from install C:\\Temp\\Software\\Oracle-Client\\client\\setup.exe: see rc, stdout and stderr for more details",
"rc": 1,
"reboot_required": false,
"restart_required": false,
"stderr": "",
"stderr_lines": [],
"stdout": "\r\n Exit code of OUI process 1=",
"stdout_lines": [
"",
" Exit code of OUI process 1="
]
}
选项3
- name: "Install Oracle Client"
win_shell: "C:\\Temp\\Software\\Oracle-Client\\client\\setup.exe -silent -waitforcompletion -nowelcome -noconfig -debug -force -responseFile C:\\Temp\\Software\\Oracle-Client\\client\\response\\client.rsp"
这次的结果是不同的,其中RC为1,但是实际上并没有在服务器上安装任何东西
changed: [windoze] => {
"changed": true,
"cmd": "C:\\Temp\\Software\\Oracle-Client\\client\\setup.exe -silent -waitforcompletion -nowelcome -noconfig -debug -force -responseFile C:\\Temp\\Software\\Oracle-Client\\client\\response\\client.rsp",
"delta": "0:00:09.554881",
"end": "2018-11-22 12:51:00.633519",
"rc": 0,
"start": "2018-11-22 12:50:51.078638",
"stderr": "",
"stderr_lines": [],
"stdout": "\r\n Exit code of OUI process 1=",
"stdout_lines": [
"",
" Exit code of OUI process 1="
]
}
上面的每个命令都可以在服务器上手动运行,因此我知道这与命令本身无关。看来运行安装程序时会启动Java进程,这会在通过Ansible调用时导致此问题。 有谁知道我如何通过Ansible成功安装它?
答案 0 :(得分:0)
我在Red Hat上安装12c客户端时遇到了类似的问题。 如Matthew所述,安装已完成,但由于先决条件失败,退出代码为1。就我而言,这是一个可选的依赖项。 我不太喜欢这种解决方案,但是如果安装成功,可以尝试在命令中添加以下参数:
-ignoreSysPrereqs
用于忽略系统先决条件检查的结果。
答案 1 :(得分:0)
这里甚至遇到同样的问题。请帮帮我。
错误: “已更改”:错误, “退出代码”:259, “ rc”:259, “ reboot_required”:否, “ restart_required”:false }
STDOUT:
OUI进程259的退出代码=
味精:
从安装C:\ Oracle \ client \ setup.exe中出现意外的rc:有关更多详细信息,请参见rc,stdout和stderr
在Windows Server 2016中手动为我工作很好
答案 2 :(得分:0)
在安装Oracle Databse 12c R2引擎(12.2.0.1.0)时遇到相同的问题。 将命令打包为批处理文件解决了我的问题。这是我的install.bat.j2 jinja模板的内容:
setup.exe -silent "ORACLE_HOME={{ oracle_home }}" "ORACLE_BASE={{ oracle_base }}" -showProgress -noconfig -waitforcompletion -responseFile "{{ ansible_env.TEMP }}\oracle_winx64_12201_database\db_install.rsp"
Ansible剧本中的用法:
- name: Install Oracle Database 12c Release 2 engine
win_command: "install.bat"
args:
chdir: "{{ ansible_env.TEMP }}\\installation_package"
我还注意到下面一行描述了官方Oracle document中的 -waitforcompletion 参数:
注意:仅当从脚本调用命令时,此选项才有效;例如,如果.bat文件包含带有-waitforcompletion选项的setup.exe文件。如果直接从命令行提示符下调用,则此选项将不起作用。
希望有帮助。
答案 3 :(得分:0)
您需要使用-waitforcompletion选项,以获取错误0。此选项仅支持本地执行(例如bat)。工作正常:
我的情况是:
- name: Execute bat file
script: files/run.bat
args:
creates: C:\app\oracle
run.bat
C:\OracleClient\client32\setup.exe -silent -nowait -noconsole -waitforcompletion -responseFile "C:\OracleClient\client.rsp"
答案 4 :(得分:0)
似乎在Windows Server上安装Oracle 19c Client时无需单独的批处理脚本(未经早期版本测试):
- name: Install Oracle 19c Client
win_command: setup.exe -silent -nowait -waitforcompletion -responseFile C:\Provisioning\Oracle\client.rsp
args:
chdir: C:\Provisioning\Oracle\client\
在我第一次尝试时,我省略了参数-waitforcompletion
,该参数导致退出代码为259
。