Datastage 排程相關 dsjob

2022-03-26 10:51:54 字數 3066 閱讀 5007

datastage有他自己的排程,不過個人總覺得修改起來不怎麼方便。於是偏向於在linux下用shell排程。最近專案需要,總結了一些,備忘。有什麼不對的地方,歡迎指正。

command syntax:

dsjob [-authfile | -file | -domain -user -password -server ] | -domain [-user ] -server

valid primary command options are:

-run

-stop

-lprojects

-ljobs

-linvocations

-lstages

-llinks

-projectinfo

-jobinfo

-stageinfo

-linkinfo

-lparams

-paraminfo

-log

-logsum

-logdetail

-lognewest

-report

-jobid

-import

status code = -9999 dsje_dsjob_error

dsjob所在的目錄為(據實況而定):/mistel/ibm/informationserver/server/dsengine/bin/dsjob

2.1 執行job

執行job,並把日誌寫在/ds/dslogs/目錄下,每天乙個新的檔案。

dsjob -run -mode normal -jobstatus dstage1 dd_test >> /ds/dslogs/job_run_` date +%y%m%d`.log

2.2 重置job

當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

3.1 dsjob:command not found

執行指令碼時,可能出現dsjob命令未找到的錯誤提示,解決辦法有幾種。

3.1.1 解決一

即每次呼叫dsjob命令前,都把dsenv中的變數讀取一次。命令如下:

source /mistel/ibm/informationserver/server/dsengine/dsenv

3.1.2 解決二

讓linux每次登入時自動執行3.1.1中提到的指令碼。即在/etc/profile.d/custom.sh中新增這段指令碼。

3.2 較完整的指令碼

/test/runjob.sh

#!/bin/bash

# runjob.sh 2012-08-19

# run a job with parameters

# if the number of input parameters is less than 2,then output the help document and exit

if [ $# -lt 2 ] ; then

cat << help

runjob --run a job uasge: runjob projectname jobname jobparameters

example: runjob dsstage1 dd_test -param startdt=20120819 -param enddt=20120819

help

exit 0

fiprojectname="$1"

jobname="$2"

jobparameters="$3"

#echo $projectname

#echo $jobname

#echo $jobparameters

logdir=/ds/dslogs #directory to store logs

workdate=`date +%y%m%d`

#logdir processing.if log folder not exists,create folder.

if [ -d $logdir ]; then

echo "$logdir is exist,continue..."

else

echo "$logdir is not exist,creating $logdir..."

mkdir -p $logdir

fi#job state processing.if job state is not finished ok,then reset the job

jobsta=$($dshome/bin/dsjob -jobinfo $projectname $jobname 2>&1 | awk -f: '/^job status/')

echo $jobsta

if [ "$jobsta" == " run failed (3)" -o "$jobsta" == " stopped (97)" ];then

echo "reset before run job $jobname"

$dshome/bin/dsjob -run -mode reset $projectname $jobname >>$/job_init_` date +%y%m%d`.log

sleep 5

fi#run a job

dsjob -run -mode normal $jobparameters -jobstatus $projectname $jobname >> /ds/dslogs/job_run_` date +%y%m%d`.log

DS 順序表的相關操作

所以順序表分為 靜態順序表和動態順序表 首先我們先來看看兩種順序表的結構 define max size 10 typedef int datatype int的別名,如此定義方便後期資料型別修改 初始化 void seqlistinit seqlist ps,int capacity 銷毀 voi...

生產排程相關知識(二)

有限產能排程延伸 最初的有限產能僅能受機台的制約。隨著時間的推移,有限產能已經發展成為功能更全面的。例如,在車間作業排程環境中,往往有比人更多的機器。有時多個操作都需要用同一臺機器,但有時,多個操作也可在其他可同時執行多個不同的機器上進行,但沒有足夠的人力。在這些環境中,機器的制約和勞動約束需要通過...

Linux IO排程器相關演算法介紹

io排程器 io scheduler 是作業系統用來決定塊裝置上io操作提交順序的方法。存在的目的有兩個,一是提高io吞吐量,二是降低io響應時間。然而io吞吐量和io響應時間往往是矛盾的,為了盡量平衡這兩者,io排程器提供了多種排程演算法來適應不同的io請求場景。其中,對資料庫這種隨機讀寫的場景最...