oracle包写入程序失败_DataStage抽取Oracle数据库的常见问题及解决方法

码农公社  210.net.cn  210是何含义?10月24日是程序员节,1024 =210、210既

210

之意。

遇到作业中止时,请到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.定时查看数据库表空间状况,检查表空间是否将满。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值