dsjob解释一
dsjob解释二
安装DataStage 的目录下 例如C:/Ascential/DataStage/Engine/bin>
dsjob的的语法如下:
Command Syntax:
dsjob [-file <file> <server> | [-server <server>][-user <user>][-passwod <password>]]
<primary command> [<arguments>]
Valid primary command options are:
-run 运行job
-stop 停止运行中的job
-lprojects 列出server中所有的工程
-ljobs 列出指定project中的所有的job
-linvocations列出指定job中的所有的invocation
-lstages 列出指定job中的所有的stage
-llinks 列出指定job中的所有的link
-projectinfo 列出指定project的信息
-jobinfo 列出指定job的信息
-stageinfo 列出指定stage的信息
-linkinfo 列出指定link的信息
-lparams 列出指定job的所有的parameter
-paraminfo 列出指定parameter的信息
-log 获得job的所有的日志
-logsum 获得job的所有的日志
-logdetail 获得job的所的详细日志
-lognewest
-report 获得job的所的详细日志
-jobid
Invalid arguments: dsjob -run
[-mode <NORMAL | RESET | VALIDATE>]
NORMAL 正常运行
RESET 重置
VALIDATE 验证job是否可行
[-param <name>=<value>]
设置变量值
[-warn <n>]
warn 警告多少条记录以后job停止运行
[-rows <n>]
rows 运行过多少记录以后job停止运行
[-wait]
wait 等待多长时间停止运行
[-opmetadata <TRUE | FALSE>]
[-disableprjhandler]
[-disablejobhandler]
[-jobstatus]
Jobstatus 运行的状态
[-userstatus]
[-useid]
<project> <job|jobid>
1 dsjob -server 10.240.12.67 -user peace.zhao -password Yanzhang0717 -run -mode NORMAL sysup1_MPHASIS_1 Sequential
最简单的运行
2 C:/Ascential/DataStage/Engine/bin>dsjob -server 10.240.12.67 -user peace.zhao -password Yanzhang0717 -run -mode NORMAL -jobstatus sysup1_MPHASIS_1 Sequential
Waiting for job...
Finished waiting for job
Job Status : (1)
Status code = 1
obstatus sysup1_MPHASIS_1 Sequential
Waiting for job...
Finished waiting for job
Job Status : (1)
Status code = 1
-stop
Invalid arguments: dsjob -stop [-useid] <project> <job|jobid>
停止正在运行的job
-lprojects
列出所有的server中的job
C:/Ascential/DataStage/Engine/bin>dsjob -server 10.240.12.67 -user peace.zhao -password Yanzhang0717 -lprojects
Empty
Study
sysup1_MPHASIS
sysup1_MPHASIS_1
sysup1_MPHASIS_2
sysup1_MPHASIS_3
tttt
up_20090204
yes
Status code = 0
-ljobs
-linvocations
-lstages
-llinks
-lparams
功能和用法与-lprojects相似
-projectinfo 获得project的信息
C:/Ascential/DataStage/Engine/bin>dsjob -projectinfo sysup1_MPHASIS_1
Host Name : 10.240.12.67
Project Name : sysup1_MPHASIS_1
Status code = 0
++++
-jobinfo
C:/Ascential/DataStage/Engine/bin>dsjob -jobinfo sysup1_MPHASIS_1 Sequential
Job Status : RUN OK (1)
Job Controller : not available
Job Start Time : Mon Jul 06 15:04:33 2009
Job Wave Number : 3
User Status : not available
Job Control : 0
Interim Status : NOT RUNNING (99)
Invocation ID : not available
Last Run Time : Mon Jul 06 15:04:42 2009
Job Process ID : 0
Invocation List : Sequential
Status code = 0
++++
-linkinfo
-paraminfo
与获得project 和job信息相同
-report
获得job运行的报告
C:/Ascential/DataStage/Engine/bin>dsjob –report
Invalid arguments: dsjob -report [-useid] <project> <job|jobid> [report type>]
report type = BASIC | DETAIL | XML
C:/Ascential/DataStage/Engine/bin>dsjob -report sysup1_MPHASIS_1 Sequential BASIC
C:/Ascential/DataStage/Engine/bin>dsjob -report sysup1_MPHASIS_1 Sequential XML
-log 向指定的job中写日志
C:/Ascential/DataStage/Engine/bin>dsjob -log
Invalid arguments: dsjob -log
[-info | -warn]
<project> <job>
Log message is read from stdin.
-logsum
Invalid arguments: dsjob -logsum
[-type <INFO | WARNING | FATAL | REJECT | STARTED | RESET | BATCH>]
[-max <n>]
[-useid]
<project> <job|jobid>
获得运行时job的信息
Max 获得最近的 条记录
C:/Ascential/DataStage/Engine/bin>dsjob -logsum -type INFO -max 10 sysup1_MPHAS
IS_1 Sequential
我在运行dsjob -ljobs lscrm的时候没有列出所有的job。有些还是错误的job也列出来了,有些貌似还是文件夹名字!???????????
dsjob遇到问题总结
问题1:执行dsjob的时候遇到"error while loading shared libraries: xxx.so.x"问题
tmux: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory
原因一般有两个, 一个是操作系统里确实没有包含该共享库(lib*.so.*文件)或者共享库版本不对, 遇到这种情况那就去网上下载并安装上即可.
另外一个原因就是已经安装了该共享库, 但执行需要调用该共享库的程序的时候, 程序按照默认共享库路径找不到该共享库文件.
所以安装共享库后要注意共享库路径设置问题, 如下:
1) 如果共享库文件安装到了/lib或/usr/lib目录下, 那么需执行一下ldconfig命令
ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表.
2) 如果共享库文件安装到了/usr/local/lib(很多开源的共享库都会安装到该目录下)或其它"非/lib或/usr/lib"目录下, 那么在执行ldconfig命令前, 还要把新共享库目录加入到共享库配置文件/etc/ld.so.conf中, 如下:
# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
# echo "/usr/local/lib" >> /etc/ld.so.conf ---- 一定注意是‘>>’而不是‘>’
# ldconfig
3) 如果共享库文件安装到了其它"非/lib或/usr/lib" 目录下, 但是又不想在/etc/ld.so.conf中加路径(或者是没有权限加路径). 那可以export一个全局变量LD_LIBRARY_PATH, 然后运行程序的时候就会去这个目录中找共享库.
LD_LIBRARY_PATH的意思是告诉loader在哪些目录中可以找到共享库. 可以设置多个搜索目录, 这些目录之间用冒号分隔开. 比如安装了一个mysql到/usr/local/mysql目录下, 其中有一大堆库文件在/usr/local/mysql/lib下面, 则可以在.bashrc或.bash_profile或shell里加入以下语句即可:
export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH
一般来讲这只是一种临时的解决方案, 在没有权限或临时需要的时候使用.
问题2:code -2 (DSJE_BADSTATE)之类的返回错误。
解决办法:
通常是因为上一次的dsjob运行失败,导致它当前处于:RUNFAILED, CRASHED的状态而无法再次运行。
使用下边的命令,查看一下dsjob的当前状态。
./dsjob -jobinfo ANALYZERPROJECT Untitled1
如果发现其状态错误,可以使用下列命令进行状态重置,然后再运行。./dsjob -run -mode RESET ANALYZERPROJECT Untitled1
问题3:以Excel作为数据源文件进行数据提取。
解决办法:
datastage9及以上版本可以直接读取Excel文件。
如果项目确实需要在低版本datastage进行这种操作,我的建议是使用catdoc(开源免费小工具,可以到国外网站进行下载)中的xls2csv工具,进行提取前转化。
在下边的IBM的网站里,我们可以找到大量相关的技术支持文章,希望有所帮助:
http://www-01.ibm.com/support/docview.wss?uid=swg21595194
问题4:编译问题
当job的状态为“为编译”,“终止”等时,需要重新编译才可以运行。
dsjob -run -mode RESET -wait dstage1 DD_Test >> /DS/DSLogs/job_init_` date +%Y%m%d`.log
更多例子(dstage1项目下的 DD_Test job):
dsjob -run -mode NORMAL -jobstatus dstage1 DD_Test >> /DS/DSLogs/job_run_` date +%Y%m%d`.log
dsjob -report dstage1 DD_Test >> /DS/DSLogs/job_run_` date +%Y%m%d`.log
但是我看到
重置是编译嘛?
问题五:dsjob:command not found
执行脚本时,可能出现dsjob命令未找到的错误提示,解决办法有几种。
3.1.1 解决一
即每次调用dsjob命令前,都把dsenv中的变量读取一次。命令如下:
source /mistel/IBM/InformationServer/Server/DSEngine/dsenv
shell调用dsjob的注意事项
在现实项目中,有时我们不会在Designer Client或者Director Client直接运行datastage job, 而是通过shell调用,下面简单介绍一下可能遇到的问题及解决办法。
本机调用命令(命令中的参数:SourceFile是区分大小写的,需要多加注意)
./dsjob -run -mode NORMAL -param SourceFile=DAD_DDDC_Multi-Date_Oct_2013_v1.csv ANALYZERPROJECT Untitled1
远程调用命令(下面的ip地址也可以使用[server name]代替)
dsjob -server 192.168.12.** -user stmttest -password 123456 -run -mode NORMAL -param SourceFile=DAD_DDDC_Multi-Date_Oct_2013_v1.csv ANALYZERPROJECT Untitled1