2016-12-27 104 views
3

查看Ansible documentation中的核心数据库模块显示没有Oracle模块的迹象。通过Ansible for Oracle数据库处理SQL/PLSQL部署的最佳方式是什么?使用Ansible运行手册运行Oracle SQL脚本

我们是否期望使用Ansible Galaxy中的角色来处理这个问题?很少有人似乎已经下载了Galaxy for Oracle上列出的角色。

+1

“SQL脚本” 你的意思是大型SQL * Plus脚本,或者只是随机的SQL和PL/SQL命令?如果你正在寻找一种方法来自动化简单的SQL和PL/SQL命令,你可能想看看我的开源程序[Method5](https://method5.github.io/)。这是一个无代理的并行远程执行程序;有点像Ansible,但它是专门为Oracle数据库设计的。 –

+0

谢谢乔恩。我特意在这里寻找Ansible。 –

回答

0

我已经创建了安装apex 5(我首先卸载apex 4)的角色。我使用'script'和'shell'等模块。我对环境初始化并不满意,但我仍然在学习。对于任何SQL/PLSQL任务,sqlplus都是正确的工具。当你说(也许SQLcl可以做的更好..?)

- name: Determine apex version 
    become: yes 
    become_user: oracle 
    shell: source /etc/profile && sqlplus -S/as sysdba @"{{ temp_dir }}/apexver.sql" 
    register: apexver 
    args: 
    executable: /bin/bash 
    changed_when: "'APEX_040000' in apexver.stdout" 

- name: oracle apex remove 
    become: yes 
    become_user: oracle 
    script: apex_remove.sh {{ item }} 
    with_items: 
    - 'XE' 
    ignore_errors: yes 
    register: result 
    when: "'APEX_040000' in apexver.stdout" 

22:18 $ cat apex_remove.sh 
#!/bin/sh 

# set oracle environment 
. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh 
ORACLE_SID=$1 

sqlplus -s /nolog <<EOF 
connect/as sysdba 
@?/apex/apxremov.sql 
exit 
EOF 
+0

我想知道为什么Ansible不能为Oracle DB提供一个模块 –