在 Workload Scheduler 中遇到数据库脚本 "AWKDBE018E Cannot access required JDBC Driver folder"

Database script encounterd "AWKDBE018E Cannot access required JDBC Driver folder" in Workload Scheduler

我创建了一个数据库脚本步骤,用于访问工作负载调度程序服务中的 SQL 数据库服务。当我运行过程中,步骤遇到下面的错误。

错误信息

AWKDBE018E Cannot access required JDBC Driver folder

留言信息
http://www-01.ibm.com/support/knowledgecenter/SSGSPN_9.2.0/com.ibm.tivoli.itws.doc_9.2/common/src_ms/awsmsawkdbe.htm?lang=en

AWKDBE018E Cannot access required JDBC Driver folder

Explanation
The job was not able to access a JDBC Driver folder, you might not have enough permissions. System action
The operation is not performed.
Operator response
Verify that you have enough permissions.

此消息似乎要求我将适当的权限授予作业用户。但是没有属性指定Workload Automation Agent的job user。我使用由 Bluemix 自动配置的工作负载自动化代理。

你能告诉我需要哪些参数吗?

数据库脚本步骤信息

JDBC 驱动程序 class 路径信息
我通过以下 "ls -lR" 命令步骤的日志检查了路径。

它似乎在将位置引用到 DB2 的 JDBC class 路径时遇到问题。您能否仔细检查 DB2 驱动程序 class 路径的位置?

代理似乎有问题,我尝试复制相同的作业类型,但它没有使用相同的错误消息(甚至对 jdbc 驱动程序路径使用不同的解决方案)。 如果您使用的是为您创建的 Workload Automation Agent,则可以打开支持票证让 Workload 团队查看该代理。


得到服务团队支持后编辑:

在预定义工作负载调度程序进程的 jar 类路径字段中,您只需输入包含 jar 文件的目录的路径,而无需输入要使用的 jar 文件名。

因此,根据当前的 Workload Scheduler 文档,您必须使用以下值: /home/wauser/utils

通过这种方式,数据库脚本可以正常工作。 (已添加截图)

虽然年纪大了,但我想快速检查一下。 这是在容器交付的一部分 9.5 FP1 动态代理上测试的。路径值是容器的标准值。

尝试 1 - 完整路径 - 成功

<jsdldatabase:driverPath>/opt/wa/TWS/jdbcdrivers/db2/</jsdldatabase:driverPath>
= Status Message:  Success
= Exit Status           : 0

尝试 2 - 相对路径 - 失败

<jsdldatabase:driverPath>./jdbcdrivers/db2/</jsdldatabase:driverPath>
Job status : FAIL
===============================================================
AWKDBE018E Cannot access required JDBC Driver folder
===============================================================

Try3 - 路径中的变量 - 失败

<jsdldatabase:driverPath>${UNISONHOME}/jdbcdrivers/db2/</jsdldatabase:driverPath>
===============================================================
AWKDBE018E Cannot access required JDBC Driver folder
===============================================================

Try4 - 路径中的变量 - 失败

<jsdldatabase:driverPath>$UNISONHOME/jdbcdrivers/db2/</jsdldatabase:driverPath>
===============================================================
AWKDBE018E Cannot access required JDBC Driver folder
===============================================================

简而言之,您需要该参数的绝对路径。 但是,您可以在全局配置文件中将路径设置为代理

Try5 - 代理配置中的变量 -

在 IWSDATA Home 内:wadata/JavaExt/cfg/DatabaseJobExecutor.properties,写入以下行

jdbcDriversPath=/opt/wa/TWS/jdbcdrivers

然后从作业中删除关于 driver 的 xml 元素,因此没有行

<jsdldatabase:driverPath>/opt/wa/TWS/jdbcdrivers/db2/</jsdldatabase:driverPath>
===============================================================
= Exit Status           : 0

请注意,在这种情况下不需要 jdbcdrivers/db2。它将搜索子目录。