我在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,但它仍然不能工作。有人有类似的问题吗?
1条答案
按热度按时间z9smfwbn1#
检查从 db2inst1 用户的
.bashrc
加载了什么。例如,它是否 source$HOME/sqllib/db2profile
?因此,您必须执行相同的操作,才能从Ansible运行db2命令。您可能希望将此命令 Package 在shell脚本中,并从Ansible启动该脚本,它会执行以下操作:字符串
(And在它启动db2命令之前。
如果您想要在Ansible中运行更多的db2命令,我会创建一个通用的运行脚本(例如:
rundb2cmd.sh
),它加载DB2环境等。并接受参数并执行它们。在Ansible中,你可以这样运行它:型