linux Ansible db2任务执行脚本获取错误

9ceoxa92  于 2023-08-03  发布在  Linux
关注(0)|答案(1)|浏览(139)

我在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,但它仍然不能工作。有人有类似的问题吗?

z9smfwbn

z9smfwbn1#

检查从 db2inst1 用户的.bashrc加载了什么。例如,它是否 source$HOME/sqllib/db2profile?因此,您必须执行相同的操作,才能从Ansible运行db2命令。您可能希望将此命令 Package 在shell脚本中,并从Ansible启动该脚本,它会执行以下操作:

. $HOME/sqllib/db2profile

字符串
(And在它启动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

相关问题