Ansible db2 任务执行脚本出现错误

问题描述 投票:0回答:1

我在 Ansible 中有一个任务要从 db2server 执行 sql 脚本

- name: Execute db2 script
    ansible.builtin.shell: '/db2/db2inst1/sqllib/bin/db2 -tvf /db2/db2inst1/db_script.sql'
    become: true
    become_method: su
    become_user: db2inst1
    changed_when: true

我有一个错误:

“CONNECT TO DBNAME SQL1013N 找不到数据库别名或数据库名称“DBNAME”。SQLSTATE=42705”

但是当我直接在通过 db2inst1 记录的服务器上执行

/db2/db2inst1/sqllib/bin/db2 -tvf /db2/db2inst1/db_script.sql
时,它会正确执行并且没有错误。

我搜索了IBM文档并在db2set DB2INSTDEF处设置了默认实例db2inst1,但它仍然不起作用。有人有类似问题吗

linux ansible db2 task
1个回答
0
投票

检查从 db2inst1 用户的

.bashrc
加载的内容。例如,它是来源
$HOME/sqllib/db2profile
吗?因此,您必须执行相同的操作才能从 Ansible 运行 db2 命令。您可能想将此命令包装在 shell 脚本中,并从 Ansible 启动它,它会执行以下操作:

. $HOME/sqllib/db2profile

(无论需要什么)在启动 db2 命令之前。

如果您想在 Ansible 中运行更多 db2 命令,我将创建一个通用运行脚本(例如

rundb2cmd.sh
)来加载 DB2 环境等并获取参数并执行它们。在 Ansible 中你可以像这样运行它:

- name: Execute db2 script
    ansible.builtin.shell: '/db2/db2inst1/db2runcmd.sh db2 -tvf /db2/db2inst1/db_script.sql'
    become: true
    become_method: su
    become_user: db2inst1
    changed_when: true
© www.soinside.com 2019 - 2024. All rights reserved.