datastage dsjob命令

dsjob解释一

ETL调度中不乏要用shell脚本来运行DATASTAGE中的JOB,现测试一下DSJOB的用法然后总结一下(边测试边总结)
dsjob -run [-mode <NORMAL | RESET | VALIDATE>] PROJECT_NAME JOB_NAME
-mode为选择运行模式,
NORMAL表示正常运行,此时和不写-mode是一样的;
RESET表示重置,当job在中止状态时要先RESET,之后才能再正常运行;
VALIDATE表示验证,即验证job的可运行性。
例子:dsjob -run -mode NORMAL sn_dev test_job
注:新开发的job一定要先编译,否则,三种mode都不可行。

dsjob -run [-mode <NORMAL | RESET | VALIDATE>] -param <name>=<value> -jobstatus PROJECT_NAME JOB_NAME
-param运行带参数的job
name:参数名字
value:参数值
例子:dsjob -run  -param YR_MON_DAY='20111020'  sn_dev test_job
-jobstatus运行结束展示job的状态
-warn表示job中有多少条警告时中止job,设置为0表示无限制
例子:dsjob -run -mode NORMAL -warn 0 -jobstatus  sn_dev test_ldf_2
      正在等待作业...
      已完成对作业的等待
      作业状态 :(2)
      状态码为 2

dsjob -stop PROJECT_NAME JOB_NAME
-stop 停止正在运行的job
例子:dsjob -stop sn_dev test_job


dsjob -lprojects 列出所有的工程
例子:dsjob -lprojects
      bpm_dev
      sn_dev
      test_dev
      状态码为 0 
如果要列出其他服务器上的工程:
dsjob -server sn130127 -user username -password password -lprojects
此时-server后面用IP的话未成功,报错:Status code = 80011,求高手解答


dsjob -ljobs 项目名:列出项目中所有的job名字
例子:[bpm_etl@sn130127 BPM_ETL]$ dsjob -ljobs sn_dev |more
状态码为 0 
ACCOUNT_PROFIT_CURRENCY_P
Auto_Exe
Auto_Run
BANKCARD
BCP_DETAIL_TF
BCP_DETAIL_TF_01_10
BCP_DETAIL_TF_11_20
BCP_DETAIL_TF_21_31
BCP_DETAIL_TF_PATCH



dsjob -jobinfo 项目名 job名:列出指定job的详细信息
例子:[bpm_etl@sn130127 BPM_ETL]$ dsjob -jobinfo sn_dev test_ldf_2
作业状态 :已运行,但带有警告(2)
作业控制器 :test_ldf_3
作业开始时间 :Thu Dec 15 16:22:30 2011
作业 Wave 号 :5
用户状态 :不可获得
作业控制 :0
中间状态 :未在运行(99)
调用标识 :不可获得
最后运行时间 :Thu Dec 15 16:22:40 2011
作业进程标识 :0
调用列表 :test_ldf_2
可重新启动的作业 :0
状态码为 0 
【-lstages】列出指定job所用的stage
例子:[bpm_etl@sn130127 BPM_ETL]$ dsjob -lstages sn_dev test_ldf_2
Sequential_File_10
Sequential_File_1
状态码为 0

--转自:http://www.cognoschina.net/?action-blogdetail-uid-21894-id-4165

dsjob解释二

Datastage 的job可以通过dsjob命令来调用job或者获得job的信息,以及运行的报告和日志。
安装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

-run
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

3 C:/Ascential/DataStage/Engine/bin>dsjob -server 10.240.12.67 -user peace.zhao -password Yanzhang0717 -run -mode NORMAL -param input=7.txt -param output=8.txt -j
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

-lprojects
-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

转自:http://blog.csdn.net/zhaofmyan/article/details/4325492


我在运行dsjob -ljobs lscrm的时候没有列出所有的job。有些还是错误的job也列出来了,有些貌似还是文件夹名字!???????????


dsjob遇到问题总结

问题1:执行dsjob的时候遇到"error while loading shared libraries: xxx.so.x"问题


一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如:


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




但是我看到

编译指定名称的JOB
dscc /h ip /u dsadm /p dsadm prjname /j jobname
编译全部JOB
dscc /h ip /u dsadm /p dsadm prjname /j *


重置是编译嘛?


问题五: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



转自;http://blog.csdn.net/jsfzdd/article/details/17785135


相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页