DataStage - FAQ

更新时间:2024-01-23 19:27:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1 数据库无法连接

1.1 问题描述

安装完DataStage后,服务可以正常启动,但是无法在Plug_in里面通过CLIENT连接到数据库.

1.2 原因分析

经过检查,发现在/home/dsadm/Ascential/DataStage/DSEngine/下面的dsenv文件中,SHLIB_PATH和LIBPATH这两个变量没有设置好.

1.3 解决方案

重新设置SHLIB_PATH和LIBPATH这两个变量,详细的设置内容请参考相关文档.

2 数据库无法连接 22.1 问题描述

DataStage启动后,在MANAGE里面可以import表结构和数据,但是在designer里面却无法连接上数据库。

2.2 原因分析

出错时,DATASTAGE抛出“Error loading \”这个错误,经过分析,发现是由于某些动态连接库无法连接上。查询相关文档后,查明原来ORACLE_ENTERPRISE这个组件是个插件,需要运行一下install程序,把动态连接库连接上。

2.3 解决方案

运行一下:/home/dsadm/Ascential/DataStage/PXEngine/install/install.liborchoracle这个程序。 出现“Oracle installation is complete.”这句话,代表动态连接库已经准备好了。

3 相同值的记录无法关联上

3.1 问题描述

在数据进行关联的时候,发现有些值相同的记录始终无法关联上。

3.2 原因分析

在DATASTAGE EE版中有partition这个概念,数据会在各个partition中分别执行,各partition之间不能相互关联,我们做关联的的值不是partition的分区键值,所以导致两条数据可能在不同的partition中,所以无法关联上。

3.3 解决方案

在做关联之前,把数据源重新partition一下(比较费资源,如果可以不用的话尽量不要使用)。

4 节点个数问题

4.1 问题描述

在DATASTAGE的服务器上,我们需要一个Configuration的文件,在安装的时候系统会自动设定,通常以2cpu+4G内存为一个节点来配置.但是不是所有的机器环境都适合默认的Configuration的文件.在HP_UX的环境中,默认的Configuration的文件, HP_UX的系统由于对32的应用程序有一个资源使用的限

制,导致在多节点跑数据时会报错.

4.2 原因分析

目前在HP_UX上对32位的应用程序有限制

4.3 解决方案

使用不同的Configuration文件。

5 不同环境的编译问题

5.1 问题描述

在不同的环境中,比如:HP-UX和AIX上的时候,要注意一些系统内置函数,有时候会产生编译错误。

5.2 原因分析

在不同的环境中,内置的函数并不一样,有些可能没有。

5.3 解决方案

尽量减少使用内置函数的几率,一般来说,这种函数多用在类型的默认转换上,如果遇到要转换类型,我们应尽量用DS已有的转换函数来做,尽量不要让系统帮我们转。

6 使用LOAD产生中文乱码

6.1 问题描述

在使用oracle的load功能进行数据加载的时候,会产生中文乱码的错误。

6.2 原因分析

原因是DS自动生成的control文件的字节码不对,DS在生成字节码时要通过

/home/dsadm/Ascential/DataStage/PXEngine/etc目录下的oracle_cs.txt文件中的内容进行映射。

6.3 解决方案

修改oracle_cs.txt文件中的内容,确定映射的关系正确。 7 字符串填充

7.1 问题描述

APT_STRING_PADCHAR,这个环境变量的默认值为‘0x0’。这个值会使字符串在没有添满时,用ASCII的null值来作为这个字符串的结尾。这样,oracle才能接受这个字符串

7.2 原因分析

APT_STRING_PADCHAR,这个环境变量的默认值为‘0x0’。这个值会使字符串在没有添满时,用ASCII的null值来作为这个字符串的结尾。这样,oracle才能接受这个字符串

7.3 解决方案

在做普通的insert操作的时候,这个默认值很重要,不建议修改,但是在使用sqlload的时候,可以忽略这个默认值。 8 orchdb2op装载失败

8.1 问题描述

##I TFCN 000001 15:20:02(000) Ascential DataStage(tm) Enterprise Edition 7.5.2

Copyright (c) 2004, 1997-2004 Ascential Software Corporation.All Rights Reserved

##I TOSH 000002 15:20:02(001) orchgeneral: loaded ##I TOSH 000002 15:20:02(002) orchsort: loaded ##I TOSH 000002 15:20:02(003) orchstats: loaded

##I TFSC 000001 15:20:02(004) APT configuration file: /home/dsadm/Ascential/DataStage/Configurations/ccda_ods.apt

>##E TOSH 000205 15:20:02(005) PATH search failure:

>##E TOSH 000000 15:20:02(006) Error loading \Could not load \ 0509-022不能装入模块。 > 0509-026系统错误:路径名中的文件或目录不存在。.

>##E TOSH 000000 15:20:02(007) Could not locate operator definition, wrapper, or Unix command for \please check that all needed libraries are preloaded, and check the PATH for the wrappers

>##E TCOS 000029 15:20:02(008) Creation of a step finished with status = FAILED.

8.2 原因分析

/home/dsadm/Ascential/DataStage/PXEngine/lib缺少这两个liborchdb2op8aix3.so orchdb2op8.o连接,导致调用orchdb2op时由于缺少连接文件,导致装载失败

8.3 解决方案

在/home/dsadm/Ascential/DataStage/PXEngine/lib目录中建立上述两个连接。

ln -s liborchdb2op8aix3.so liborchdb2opaix3.so ln -s orchdb2op8.o orchdb2op.o

9 dsdb2enu引用失败 9.1 问题描述

FATAL Tue Sep 29 16:17:52 2009

main_program: Fatal Error: Fatal: Shared library (dsdb2enu.so) failed to load: errno = (8), system message = (rtld:0712-001从模块/home/dsadm/Ascential/DataStage/DSEngine/lib/dsdb2enu.so()中

引用了符号DSPIMallocStageName,但找不到该符号的运行时定义。

rtld:0712-001从模块/home/dsadm/Ascential/DataStage/DSEngine/lib/dsdb2enu.so()中

引用了符号DSCRegisterPassive,但找不到该符号的运行时定义。

rtld:0712-001从模块/home/dsadm/Ascential/DataStage/DSEngine/lib/dsdb2enu.so()中

引用了符号ds_writelog,但找不到该符号 的运行时定义。

rtld:0712-001从模块/home/dsadm/Ascential/DataStage/DSEngine/lib/dsdb2enu.so()中

引用了符号DSCLoadResourceEx,但找不到该符号 的运行时定义。

rtld:0712-001从模块/home/dsadm/Ascential/DataStage/DSEngine/lib/dsdb2enu.so()中

引用了符号DSCDeclareProperty,但找不到该符号

的运行时定义。

rtld:0712-001从模块/home/dsadm/Ascential/DataStage/DSEngine/lib/dsdb2enu.so()中

引用了符号DSCUVValueMark,但找不到该符号的运行时定义。

rtld:0712-001从模块/home/dsadm/Ascential/DataStage/DSEngine/lib/dsdb2enu.so()中

引用了符号DSCConcatResources,但找不到该符号的运行时定义。 0509-021发生了其它错误但没有报告。)

9.2 原因分析

9.3 解决方案

/home/dsadm/Ascential/DataStage/PXEngine/etc 修改该文件夹下的:operator.apt文件 修改内容:

dscapiop dscapiop 1 修改为:

dscapiop @dscapiop 1

10文件分发失败 10.1 问题描述

Failed to Distribute ********

10.2 原因分析

由于执行该DS作业的用户没有读写Projects文件夹下该工程的权限导致的。

10.3 解决方案

需要赋予相应的权限即可(数据库机器和ETL机器下的均要)

11 dscapiop.o缺失 11.1 问题描述

报找不到dscapiop.o文件的错误

11.2 原因分析

由于在DataStage Server机器中缺少了: DSCAPIOp/dscapiop.o导致的,该文件存在于:

DataStage安装目录下

11.3 解决方案

拷贝一份DSCAPIOp/dscapiop.o到DataStage的安装目录即可。

12 Failed to opening .fifo文件这一类的错误 12.1 问题描述

执行DataStage连接DB2,利用DB2 EE组件入库操作时,报:Failed to opening .fifo文件这一类的错误

12.2 原因分析

造成这类错误的原因有很多很多,例如:没有对表进行Load数的权限,没有对该表,连接不上数据库等等,都会造成该类错误。

12.3 解决方案

遇到该类错误,建议解决方法:

直接看错误日志是看不出什么错误原因导致的。可以考虑把Load的方式修改为Upsert,此时报错的信息会很容易查出是什么问题,基本上Upsert方式时没有错误,用Load的方式就不会有问题。

Load方式加载数据时,常遇到的错误:

1)数据库用户没有对数据库Load的权限,赋予Load on database的权限即可 2)用户没有对该表操作的权限,赋予该用户对该表有操作的权限即可

3)数据库表空间异常,例如:处于Backup Pending状态备份该表空间即可。 4)表不存在

13 DB2实例转换出错 13.1 问题描述

DataStage对DB2数据库进行跨实例Load数操作时,如果在DB2 EE组件中,没有填写DB2目标库的实例名,就会报上述错误。

13.2 原因分析

13.3 解决方案

设置该DS作业中,DB2 EE组件入库时的服务器端的实例名为目标数据库的实例名即可。

14 同一机器,不同实例加载DB2数据时报数据库名不存在,用户名密码的错误。 14.1 问题描述

同一台DB2数据库机器有2个或者多个不同的数据库实例,当要从A实例加载数据到B实例时,要不就报数据库名不存在,要不就报用户名,密码错误,但是,确定数据库名肯定存在,并且用户名,密码也是正确的,但是执行DataStage作业就是报用户名,密码错误或者数据库名不存在的错误

14.2 原因分析

怀疑是DataStage的一个bug

14.3 解决方案

把B实例和B实例的数据库利用本地编目的方式编目到A实例下就可解决此问题。

本文来源:https://www.bwwdw.com/article/tc3o.html

Top