遇到作业中止时,请到director中查看作业日志,需要关注最先出错的地方,以及出错前的警告。
一. 常见ORACLE错误及解决方法
网上有一些材料,可供参考:
http://ssydxa219.iteye.com/blog/1542742/
1.ORA-00904错误,原库某个字段可能已被修改或删除,请在原库确认之后修改job 列中字段,做到跟原库一致。
2.ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS1' 数据库表空间不足,undo
3.错误消息:ORA-00942: 表或视图不存在。注意是否在原库表名前,加上用户名。然后查看原库是否还有该表
4.ORA-----00001 主键不唯一。
5.604 -----表空间不足,分为2种,临时表空间和用户表空间不足,如果同一时间有很多用户在跑数据,临时表空间很容易满,尽量把临时表空间扩大或者让几个大数据用户错开时间跑。
ORA-00604: error occurred at recursive SQL level 1
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS1'。 (CC_OraAdapter::handleTableAction, file CC_OraAdapter.cpp, line 1,312)
6.ORA-01400: cannot insert NULL into ("CCPF_DB"."H_JGGLB"."ID")。ID不能为空
7.读取列 ID 的数据时,连接器接收到 Oracle 错误码 ORA-1405 不能为空
8.增量复制---目标连接器表操作改成追加,写方式改成update and insert
9.ORA-03114: 未连接到 ORALCE。解决方法: 去掉cdc功能。
操作为:
DROP TRIGGER sys.cdc_alter_ctable_before;
DROP TRIGGER sys.cdc_create_ctable_after;
DROP TRIGGER sys.cdc_create_ctable_before ;
DROP TRIGGER sys.cdc_drop_ctable_before;
做以上操作就可以编译了,如果还是不可以编译,就再执行如下的语句
CALL sys.dbms_java.dropjava('-s rdbms/jlib/CDC.jar');
10.ORA-12,571,错误消息:ORA-12571: TNS: 包写入程序失败。通常伴随着其他错误出现,修改原库oracle目录,D:/oracle/ora92/network/admin目录下sqlnet.ora,将”NAMES.DEFAULT_DOMAIN =” 这一行用#注释掉,将“SQLNET.AUTHENTICATION_SERVICES=(NTS)”中的NTS改为NONE
11.ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务。请检查数据抽取时网络是否异常
12.ORA-00923:请检查抽取数据的SQL中是否包含ORACLE自带的关键字。
13.ORA-01555:请确认原库和目标库字段是否有变更(包括长度),根据出错日志中的信息查看对应字段长度是否变更。措施:增加回滚段数量
14.ORA-00955:首先请确认该用户下是否已经存在该表,请检查datastage目标连接器中表操作配置的是替换还是追加;第一步排除之后,请检查表中的字段是否有重名,是否有某字段的数据不能重复的逻辑。
15.ORA-03135 :未查到妥善解决方法,据收集的资料显示可能是job很久没有运行,长时间没有连接oracle数据库,导致连接错误。可尝试重启作业。
16.ORA-1406:oracle10g bug,可查看官方bug列表bug 4546618,需要升级odbc驱动到11.1。目标数据字段长度小于源数据(实际需要存储的数据)的长度,导致字段被截断而引起的错误。这是blob字段经常会遇到的问题,建议去掉blob字段。
17:ORA_12170:数据库连接超时
18.ORA-24381: 造成的原因可能是同一时间对目标库有太多的表操作,造成临时表空间不足,或者
19.ORA-00054:表正在被使用,有可能有lock,在dba权限下查看一下是否有locks,有的话把session干掉,再执行作业。
20.ORA-00018: 一个连接,可能会导致多个session。加大原库process ,session数配置
21.ORA-00022: 无效的会话 ID; 访问被拒绝。造成的原因通常是当前连接数据库的session,权限不足。请查看当前用户是否具备查询等权限。重启之后可解决
22.ORA-12516:一般是由于数据库的当前会话数不满足造成的; 还有可能是listener.log日志太大引发的,listener.log日志记录了通过listener处理的网络请求信息,它包含客户端请求的时间,连接方式(专用或共享),连接程序,网络协议,主机名,网络端口号等信息,listener.log的文件内容没有太大意义,可以不让listener写日志。
操作时:#在listener.ora文件最后加入一行: logging_listener=off
23.ORA-01017:数据库连接时,用户名密码大小写敏感问题,在原库通过sys用户执行alter system set sec_case_sensitive_logon=false
二. 其他错误
1. 在表中遇到字段为LONG类型时,在datastage中无法进行传输,需在datastage中将其转换为number类型。
2. 在传输带blob的字段时,需小心有blob为空的数据,可在PL/SQL中运行selcet * from table_name where dbms_lob.getlength('column')=0查看。
可在datastage中使用transformer Stage,将blob字段做一定转换,
If RawLength(column)=0 then SetNull() else column
3. 当传输时,遇到internal error 记录过大错误,说明传输的单条数据有大于默认128K的,为该job添加一个环境变量,右键job—>propertiesàparametersàAdd environment Variable APT_DEFAULT_TRANSPORT_BLOCK_SIZE,将值改到需要大小即可。
4. 所有带blob/clob字段的表,在传输时都需要将lob字段放在表格的最下方,并在source连接器中启用lob字段,在target连接器中将数组大小设为1.
5. ORA-00904错误,表示表字段有问题,可能是源表字段有变更或者字段名字跟数据库自带参数有冲突,需在连接器中启用引号的标识。
6. 遇到时间格式问题,变量bInvalidDateTime具有值1,该值在当前上下文中无效。在连接器前SQL(节点)语句中添加如下:
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'
7.任务调度之后,如果遇到服务器重启,数据库重启等情况,将会导致Job执行失败,此时需要手动连接到Director,将Job复位。添加监控作业之后,可自动复位
8.定时查看数据库表空间状况,检查表空间是否将满。
原创文章请注明转载自技术小站本文地址:http://www.i5i6.net/post/168.html,标题:DataStage 抽取Oracle数据库常见问题及解决方法