搜档网
当前位置:搜档网 › FAQ

FAQ

FAQ
FAQ

数据集成平台V3.0

FAQ

编制人员:熊广

编制部门:软件工程研发中心模版文件版本:V1.3.0

适用项目范围:研发项目

文件修改记录表

目录

1引言 (3)

1.1编写目的 (3)

1.2术语定义 (3)

1.3参考资料 (3)

2ODI使用过程常见问题记载 (4)

2.1O RACLE SID改写问题 (4)

2.2N V A VIGATOR的配置、使用问题 (5)

2.3M YSQL远程访问授权问题 (6)

2.4BLOB同步问题 (7)

2.5数据类型转换错误 (7)

2.6目标表某字段的长度小于实际长度 (8)

2.7A GENT配置问题 (8)

3ODI对中文命名支持情况 (14)

4常见数据库系统连接URL示例 (15)

1引言

1.1编写目的

本文档记录了ODI数据集成过程中的常见问题、错误原因及其解决办法,通过整理此FAQ可以为其他开发人员总结相关开发经验,为其他开发人员所用。,

1.2术语定义

1.3参考资料

版权所有?江苏金智科技股份有限公司,保留所有权利。第 3 页,共13 页

2ODI使用过程常见问题记载

2.1Oracle SID改写问题

?错误描述:在Topology Manager插入类型为Oracle数据服务器时,在添写实例

/dblink时直接填写为Oracle的SID(如下图),执行时会抱错:

?错误原因:实例/dblink的取名不能和SID相同

?解决方法:为Oracle增加一个service name。修改oracle目录oracle\

product\10.1.0\Db_1\NETWORK\ADMIN下的tnsnames.ora文件,增加一个service name,如以下修改增加了一个名为orcl_server的服务名

orcl_server=

(DESCRIPTION =

版权所有?江苏金智科技股份有限公司,保留所有权利。第 4 页,共13 页

版权所有?

江苏金智科技股份有限公司,保留所有权利。第 5 页,共13 页

(ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.13.178)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICA TED)

(SERVICE_NAME =tsolaris)

)

)

2.2Nvavigator的配置、使用问题

在安装、配置好TOMCAT、Navigator后,进入服务器页面,如http://localhost:8080/*****,浏览器不是进入Nvavigator的起始页,而是显示:

请位于的XDB输入用户名和密码用户名

?错误原因:安装Nvavigator的服务器上也同时安装了Oracle数据库,Oracle占用

了TOMCA T默认的8080端口作为http服务端口,导致TOMCAT与Oracle的http

服务端口冲突

?解决办法:更改TOMCAT的端口号,打开TOMCAT安装目录/ conf下的server.xml

文件,如以下代码修改端口为8090

port="8090" maxHttpHeaderSize="8192"

maxThreads="150"minSpareThreads="25" maxSpareThreads="75"

enableLookups="false" redirectPort="8443" acceptCount="100"

connectionTimeout="20000" d isableUploadTimeout="true" />

2.3Mysql远程访问授权问题

?错误描述:在对MYsql数据源远程集成时,若未对操作节点进行授权,集成时会抱错

j ava.sql.SQLException: Access denied for user: 'root@172.18.14.20' (Using password: YES)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:798)

at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1256)

at com.mysql.jdbc.Connection.createNewIO(Connection.java:2572)

at com.mysql.jdbc.Connection.(Connection.java:1485)

……………….

………………

?错误原因:Mysql网络授权问题,ODI所在的用户结点不具有远程操作Mysql结点的权

?解决办法:为ODI服务器所在结点赋予权限

格式:grant 权限on 数据库名.表名用户@登录主机identified by "用户密码";

grant select,update,insert,delete on *.* to xuys@192.168.88.234 identified by "xuys1234";

将host字段的值改为%就表示在任何客户端机器上能以xuys用户登录到mysql服务器,建议在开发时设为%

版权所有?江苏金智科技股份有限公司,保留所有权利。第 6 页,共13 页

2.4BLOB同步问题

?错误描述:同步的过程中存在BLOB字段,若直接调用系统KM,会抱错

932 : 42000 : java.sql.SQLException: ORA-00932: inconsistent datatypes: expected - got BLOB

java.sql.SQLException: ORA-00932: inconsistent datatypes: expected - got BLOB

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:316)

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:282)

at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:639)

at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:185)

at oracle.jdbc.driver.T4CPreparedStatement.execute_for_describe(T4CPreparedStatement.java:503)

?错误原因:ODI无法直接对BLOB字段进行同步处理(源与目标同为Oralce情况除外),

需要改写相关KM,同步过程才能正确运行

?解决办法:参见《BLOB字段同步解决方法说明书.doc》,内有详细说明

2.5数据类型转换错误

?错误描述:ORA-1722 : java.sql.SQLException: ORA-01722: 无效数字

java.sql.SQLException: ORA-01722: 无效数字

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:316)

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:282)

at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:639)

at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:185)

…………………

…………………

………………….

版权所有?江苏金智科技股份有限公司,保留所有权利。第7 页,共13 页

?错误原因:视图将字符串类型的值填入数字型而造成的,在sql语句中,字符数字类型

转换错误,无法将字符串转化成有效数字

2.6目标表某字段的长度小于实际长度

?错误描述:目标表某字段的长度小于实际长度,抱错

12899 : 72000 : java.sql.BatchUpdateException:

ORA-12899: 列"SNPM"."C$_0stuuuuuuu"."C2_SNAME" 的值太大(实际值: 6, 最大值: 4)

12899 : 72000 : java.sql.SQLException: ORA-12899:

列"SNPM"."C$_0stuuuuuuu"."C2_SNAME" 的值太大(实际值: 6, 最大值: 4)

java.sql.BatchUpdateException: ORA-12899:

列"SNPM"."C$_0stuuuuuuu"."C2_SNAME" 的值太大(实际值: 6, 最大值: 4)

at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:367)

at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:9119)

at com.sunopsis.sql.SnpsQuery.executeBatch(SnpsQuery.java)

at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execCollOrders(SnpSessTaskSql.java)

?错误原因:目标表中字段SNAME长度设置太小,源中SNAME的实际长度大于目标中

映射字段的长度,因此抱错

?解决办法:修改目标表结构,增大该字段的长度

2.7Agent配置问题

?错误描述:Agent未正确配置时运行时抱错

com.sunopsis.sql.c:

at com.sunopsis.sql.SnpsConnection.a(SnpsConnection.java)

at com.sunopsis.sql.SnpsConnection.connect(SnpsConnection.java)

at com.sunopsis.dwg.cmd.e.h(e.java)

at com.sunopsis.dwg.cmd.e.g(e.java)

版权所有?江苏金智科技股份有限公司,保留所有权利。第8 页,共13 页

版权所有 ? 江苏金智科技股份有限公司,保留所有权利。 第

9 页,共 13 页

at com.sunopsis.dwg.cmd.e.y(e.java)

at com.sunopsis.dwg.DwgJv.treatCmd(DwgJv.java) at com.sunopsis.dwg.DwgJv.main(DwgJv.java)

? 错误原因:Agent 还未正确配置。Agent 的配置需要改动以下三点:JDBC 驱动、创建

工资资料库时填写实例DB/LINK 的填写、 ODIPARAMS 的参数设置 ? 解决办法:针对以上三点依次解决

2.8 临时对象无法创建问题

?

错误描述:创建接口时先使用了Oracle to Oracle (DBLINK )的KM ,接口执行过后换用KM ,重新执行时报错:

错误代码:

955 : 42000 : java.sql.SQLException: ORA-00955: name is already used by an existing object java.sql.SQLException: ORA-00955: name is already used by an existing object

……

?错误原因:先前使用的Oracle to Oracle(DBLINK)的KM,在数据库中保留了同义词,

换用KM 之后导致命名冲突。

?解决方法:检索数据库,查找synonyms文件下同义词文件,手动删除。

2.9SQL server 2005 JDBC 问题

?错误描述:在SQL server 2005上做CDC时,用的是原来SQL server 2000的JDBC驱动,执行时出错:

版权所有?江苏金智科技股份有限公司,保留所有权利。第10 页,共13 页

版权所有 ? 江苏金智科技股份有限公司,保留所有权利。 第 11 页,共 13 页

? sql server 2005 报错代码:

8009 : HY000 : java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 1 (\\\"\\\"): 数据类型 0x38 未知。 ? 错误原因:

SQL server 2000的JDBC 驱动在SQL server 2005上不能用,需要下载更新SQL server 2005的JDBC 驱动。 ? 解决方法:

(1) 首先,到ODI 安装目录\drivers 目录下删除原来的SQL Server 2000 JDBC 驱动,一共四个:

版权所有 ? 江苏金智科技股份有限公司,保留所有权利。 第 12 页,共 13 页

(2) 下载Microsoft SQL Server 2005 JDBC Driver ,解压缩,将驱动复制到刚才的\drivers

目录下。

(3) 在ODI 的Toplogy 定义数据服务器中修改JDBC 驱动程序和URL 。

2.10Linux下代理无法发布的问题

?错误描述:在Linux上将代理发布为服务不成功,代理没有自动启动。一切步骤正常,在etc/rc.d下也可以看服务应经启动,但是代理仍然没有启动。

?错误原因:自己在etc/init.d下写的脚本没有执行权限。

?解决办法:到etc/init.d下把自己写的代理脚本授予执行权限。

版权所有?江苏金智科技股份有限公司,保留所有权利。第13 页,共13 页

3ODI对中文命名支持情况

版权所有?江苏金智科技股份有限公司,保留所有权利。第14 页,共13 页

4常见数据库系统连接URL示例

?Oracle数据库

oracle.jdbc.driver.OracleDriver

url:jdbc:oracle:thin:@[IP]:[端口]:[SID]

例如:jdbc:oracle:thin:@172.168.18.20:1521:orcl

?SQL Server数据库

com.microsoft.jdbc.sqlserver.SQLServerDriver

url:jdbc:microsoft:sqlserver://[IP]:[端口];DatabaseName=[库名]

例如:jdbc:microsoft:sqlserver://172.18.14.20:1433;DatabaseName=pubs

?MySQL数据库

com.mysql.jdbc.Driver

jdbc:mysql://172.18.14.50:3306/student?user=root$password=wiscom

?DB2数据库

com.ibm.db2.jcc.DB2Driver

dbc:db2://localhost:50000/sample

?Sybase数据库

com.sybase.jdbc2.jdbc.SybDriver

jdbc:sybase:Tds:localhost:5007/myDB

版权所有?江苏金智科技股份有限公司,保留所有权利。第15 页,共13 页

相关主题