最新消息:

解决OCI LOB值的ORA-01405错误

error admin 4110浏览 0评论

基于OCI写的DataCopy(数据拷贝)与DataSync(数据同步)软件, 处理Lob类型的NULL值时一直都有问题, 会报ORA-01405错误, 导致去年丢失可以在正式场合(用于实时备份某地交通局的图片数据)使用的机会, 很是可惜. 最近关注这两个工具的人变多了, 再次向我报告了这个问题, 于是花了点时间去修改原来的代码, 终于搞定, 希望能找到一个正式使用的场景.

ORA-01405: fetched column value is NULL
Cause:The INTO clause of a FETCH operation contained a NULL value, and no indicator was used. The column buffer in the program remained unchanged, and the cursor return code was +2. This is an error unless you are running Oracle with DBMS=6, emulating version 6, in which case it is only a warning.

另外还修改了连接数据库的方式, 在Instant Client和Full Client的情况下及任何数据库版下, 都可以用以下格式连接数据库, 尽量为大家提供方便.

sqluldr2 scott/tiger@localhost:1521:db10g …
datacopy user=scott/tiger@localhost:1521:db10g …
datasync user=scott/tiger@localhost:1521:db10g …

再次简单地讲解一下这两个工具, DataCopy是一个不落地的Oracle之间数据对拷工具, 支持Long/Lob等数据类型(单值100MB以内), 并且速度上不比Exp/Imp工具差, 是一个很理想的Oracle数据迁移工具. DataSync是一个利用物化视图日志或触发器捕获增量变化数据, 进行准实时的数据同步/复制工具, 我们用这种机制在半小时内迁移过500GB的数据, 支持每秒钟上千次的变更压力, 并且同样支持Long/Lob等数据类型(单值100MB以内). 更重要的是, 这两个工具自2011年起, 完全免费使用.

Relative Posts:

转载请注明:爱开源 » 解决OCI LOB值的ORA-01405错误

您必须 登录 才能发表评论!