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

474 Views Asked by At

I create a step of database script which access to SQL Database Service in Workload Scheduler Service. When I run the process, the step encountered the error below.

error message

AWKDBE018E Cannot access required JDBC Driver folder

message information
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.

This message seems to ask me to grant the proper authority to the job user. But there is no property to specify the job user of Workload Automation Agent. I use a Workload Automation Agent provisioned by Bluemix automatically.

Could you teach me which parameters are needed ?

Database script step information
enter image description here enter image description here

JDBC driver class path info
I checked the path by the following "ls -lR" command step's log.

enter image description here enter image description here

3

There are 3 best solutions below

1
On BEST ANSWER

it seems to have a problem with the agent, I tried to replicate the same job type but it is not working with the same error message (even using different solutions for jdbc driver path). If you are using the Workload Automation Agent that is created for you then you could open a support ticket to have the Workload team look at that agent.


Edit after having support from service team:

in the jar classpath field for a predefined workload scheduler process you have to put only the path to the directory containing jar files, without putting the jar file name to use.

So, according to current Workload Scheduler documentation, you have to use the following value: /home/wauser/utils

By this way the database script works fine. (screenshot added)enter image description here

1
On

It looks like it is having issues referencing the location to the JDBC class path for DB2. Can you please double check the location for the class path for the DB2 driver?

1
On

Even though old, I wanted to make some quick checks. This is tested on a 9.5 FP1 dynamic agent, part of the container delivery. The path values are the standard values for the container.

Try 1 - full path - SUCCESS

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

Try 2 - relative path - FAIL

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

Try3 - variable in path - FAIL

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

Try4 - variable in path - FAIL

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

So put short you need an absolute path into that parameter. BUT, you can set the path in a config file global to the agent

Try5 - variable in agent config -

Inside IWSDATA Home : wadata/JavaExt/cfg/DatabaseJobExecutor.properties, write the following line

jdbcDriversPath=/opt/wa/TWS/jdbcdrivers

then remove the xml element about driver from the job, so no line

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

Note that in this case the jdbcdrivers/db2 is not needed. It will search for subdirectories.