Datastage 从操作数据库抽取监控数据

浏览: 2875

前言

关于对博客内容有疑问或者有好的建议,都可以在评论里面讨论。我会第一时间回复。谢谢

版本:IBM InfoSphere DataStage V11.3.1

操作系统:linux redhat 6.4

数据库版本:Oracle 11.2.0.4.0

目的

本文主要参考IBM 官网 从操作数据库抽取监控数据,来通过脚本去进行日常作业维护监控。

简介

在安装 IBM InfoSphere DataStage 时,我们会手动创建或者默认(DB2),创建用户DSODB ,操作数据库 (DSODB):这是存储有关作业运行信息的操作存储库。一旦启用,每此运行作业的时候,有关该运行的数据就会存储在这里。

Clipboard Image.png


登录DSODB用户

该用户下表如下:

Clipboard Image.png

常用脚本

1.此 SQL 查询抽取在特定引擎上运行的所有作业的名称

SELECT H.HostName, --DataStage 引擎或远程系统的名称
J.ProjectName, --工程名称
J.JobName, --作业名称
R.InvocationId, --对于多实例化作业,该字符串用于标识实例
RunMajorStatus --区别已排队、正在运行和已完成的作业运行
FROM DSODB.JobExec J, DSODB.JobRun R, DSODB.Host H
WHERE H.HOSTID = J.HOSTID
AND R.JOBID = J.JOBID
AND H.HostName = 'DWTEST';

其中RunMajorStatus 字段类型编码如下:

Clipboard Image.png

数据展示

Clipboard Image.png


2.此 SQL 查询抽取任何主机上在启动之后的某一特定时间所有作业的完整状态

SELECT H.HostName,
J.ProjectName,
J.JobName,
R.InvocationId,
S.MajorStatusName,
CAST(R.RunStartTimeStamp AS DATE)
FROM DSODB.JobExec J,
DSODB.JobRun R,
DSODB.Host H,
DSODB.RunMajorStatusRef S
WHERE H.HOSTID = J.HOSTID
AND R.JOBID = J.JOBID
AND R.RunMajorStatus = S.MajorStatusCode
AND CAST(R.RunStartTimeStamp AS DATE)>= DATE'2011-09-26'
ORDER BY R.RunStartTimeStamp;

数据展示

Clipboard Image.png


3此 SQL 查询抽取所有运行过的作业的详细信息,并将运行类型显示为可以阅读的字符串

SELECT H.HostName
, J.ProjectName
, J.JobName
, R.InvocationId
, cast(R.RunStartTimeStamp as date)
, T.RunTypeName -- code converted to a readable name --
FROM
DSODB.JobExec J
, DSODB.JobRun R
, DSODB.Host H
, DSODB.RunTypeRef T
WHERE H.HOSTID = J.HOSTID
AND R.JOBID = J.JOBID
AND R.RunType = T.RunTypeCode
ORDER BY R.RunStartTimeStamp;

字段RunTypeName 类型如下

Clipboard Image.png

数据展现

Clipboard Image.png


4抽取某一特定作业运行的作业运行日志

SELECT
CAST(L.LogTimestamp AS DATE)
, T.LogTypeName -- 日志事件的消息类型 --
, L.MessageId --消息的标识字符串。例如,IIS-DSEE-TFSC-00010 或 IIS-DSTAGE-RUN-I-0158。
, L.MessageText --记录的消息的完整文本。
FROM
DSODB.JobExec J
, DSODB.JobRun R
, DSODB.JobRunLog L
, DSODB.LogTypeRef T
WHERE /*J.ProjectName = 'ODS'*/
--AND J.JobName = 'job1name'
-- R.InvocationId = 'id'
R.JOBID = J.JOBID
AND L.RUNID = R.RUNID
AND L.LogType = T.LogTypeCode
AND CAST(R.CreationTimestamp AS DATE)> DATE'2011-09-26'
ORDER BY L.EventId;

数据展现

Clipboard Image.png


5此 SQL 查询抽取项目中最慢的作业(根据其最后运行)。

SELECT J.JOBNAME,
MAX(CAST(R.RUNSTARTTIMESTAMP AS DATE)) AS LATESTRUN,
MAX(R.ELAPSEDRUNSECS) AS MAXTIME
FROM DSODB.JOBRUN R, DSODB.JOBEXEC J, DSODB.HOST H
WHERE R.JOBID = J.JOBID
AND J.HOSTID = H.HOSTID
--AND J.PROJECTNAME = 'projectname'
-- AND H.HOSTNAME = 'HOSTNAME'
GROUP BY J.JOBNAME
ORDER BY MAXTIME DESC;

数据展现

Clipboard Image.png

6查询作业运行时间源端数据和目标数据

SELECT H.HostName,
J.ProjectName,
J.JobName,
r.RUNTYPE,
R.InvocationId,
cast(R.RunStartTimeStamp as date),--该阶段启动的时间。
cast(r.runendtimestamp as date),--该阶段完成的时间。如果该阶段仍在运行,该列将设为空值。
S1.MajorStatusName,
S2.MinorStatusName,
TotalRowsConsumed,--源阶段链接中的所有行数总计
TotalRowsProduced,--目标阶段链接中的所有行数总计
R.ElapsedRunSecs --阶段所运行的时间长度(以秒计)。该时间长度是根据 StageStartTimeStamp 和 StageEndTimeStamp 列计算得出的。
FROM DSODB.JobExec J,
DSODB.JobRun R,
DSODB.Host H,
DSODB.JobRunParamsView P,
DSODB.RunMajorStatusRef S1,
DSODB.RunMinorStatusRef S2
WHERE H.HOSTID = J.HOSTID
AND R.JOBID = J.JOBID
AND R.RUNID = P.RUNID
--AND P.ParamName = 'paramname' AND P.ParamValue = 'paramvalue'
AND R.RunMajorStatus = S1.MajorStatusCode
AND R.RunMinorStatus = S2.MinorStatusCode
and TotalRowsProduced <>0
ORDER BY R.RunStartTimeStamp;

数据展现

Clipboard Image.png


补充:更多资料请看

解读 IBM InfoSphere DataStage and QualityStage Operations Console 的指标

推荐 1
本文由 我是最优雅的杀手,不杀人专杀狗 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册