我正在尝试通过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成功安装这个?
我遇到了在Red Hat上安装12c客户端的类似问题。正如Matthew所描述的那样,安装完成,但由于先决条件失败,退出代码为1。就我而言,它是一个可选的依赖项。我不是特别喜欢这个解决方案,但是如果安装肯定成功,你可以尝试在命令中添加以下参数:
-ignoreSysPrereqs
用于忽略系统先决条件检查的结果。
即使我在这里面临同样的问题。请帮助我。
错误:“已更改”:false,“exit_code”:259,“rc”:259,“reboot_required”:false,“restart_required”:false}
STDOUT:
OUI进程的退出代码259 =
味精:
来自安装C:\ Oracle \ client \ setup.exe的意外rc:有关更多详细信息,请参阅rc,stdout和stderr
在Windows Server 2016中手动为我工作
我在安装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文件。如果直接从命令行提示符调用此选项将不起作用。
希望有所帮助。
您需要使用-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"