li
  当前位置:主页 > 备份恢复 > 文章内容
li
流配置异常(ORA-01403)的完整解决过程(二)
来源: http://yangtingkun.itpub.net/  作者: yangtingkun    时间:2008-01-26   阅读:16  

流配置异常(ORA-01403)的完整解决过(一):http://yangtingkun.itpub.net/post/468/102138


METALINK上没有什么收获,但是Oracle的官方文档中,记录流应用异常的处理方式。其中就包含了如何处理ORA-01403错误的方法。

Oracle在文档上是这样描述的:

ORA-01403 No Data Found

Typically, this error occurs when an update is attempted on an existing row and the OLD_VALUES in the row LCR do not match the current values at this target site.

To correct this problem, you can update the current values in the row so that the row LCR can be applied successfully. If changes to the row are captured by a capture process at the destination database, then you probably do not want apply this manual change at destination sites.

简单的说,是由于Oracle再更新或删除数据时,WHERE条件中指定的查询条件和数据库中实际的值不匹配。而Oracle给出的解决方法就是手工修改这些值,使得数据库中的数据于LCR中的OLD_VALUE一致。

由于目标数据库没有再设置捕获进程,因此可以省略Oracle给出的设置SET_TAG的步骤,直接UPDATE数据库的值。

虽然Oracle给出了方面,但是Oracle并没有给出具体的实施步骤。要找到数据库中出现错误的数据,以及流应用中LCR中的OLD_VALUE

考虑使用LOGMNR,但是在目的站点使用LOGMNR无法获得更新0行的DML语句。而源数据站点的日志数据量比较大,很难确定具体是那些数据出现的错误。

因此,只能考虑使用流本身的机制来检查错误。

继续查询流的文档,发现Displaying Detailed Information About Apply Errors这章里面Oracle给出了检查LCR具体数值的方法。

Oracle提供了4个过程,通过调用过程可以将DBA_APPLY_ERROR中指定的或所有的错误信息通过DBMS_OUTPUT包打印到屏幕上。

由于篇幅的限制,Oracle本身提供的4个过程就不列出来了,有兴趣的可以参考Oracle的官方文档。

看起来问题解决了,其实问题才刚刚开始。设置输出的最大值SET SERVEROUTPUT ON SIZE 1000000之后,执行了Oracle提供的PIRNT_TRANSACTION包。

EXEC PRINT_TRANSACTION('13.48.47355')

IXDBA.NET社区论坛

我还没有直接打印所有的错误信息,而是仅仅对其中一个事务出现的错误进行了打印,但是输出没有结束就报错了。

ORA-20000: ORU-10027: buffer overflow, limit of 1000000 bytes

ORA-06512: "SYS.DBMS_OUTPUT", line 32

ORA-06512: "SYS.DBMS_OUTPUT", line 97

ORA-06512: "SYS.DBMS_OUTPUT", line 112

SQL> SELECT ERROR_MESSAGE, MESSAGE_COUNT FROM DBA_APPLY_ERROR WHERE ROWNUM = 1;

ERROR_MESSAGE MESSAGE_COUNT
----------------------------------- --------------------------
ORA-01403: no data found 21815

虽然是一条错误信息,但是里面包含了21815条修改。数据量太大没有办法打印到屏幕上。而且,最重要的是,就算是可以完全打印到屏幕上,如此大的数据量,加上凌乱的格式,我也没办法找到想要的东西。

看来还要继续想办法。




  上一篇: 流配置异常(ORA-01403)的完整解决...   下一篇: 流配置异常(ORA-01403)的完整解决...
li
 §相关评论  
 热点文章

·Oracle数据库远程复制与异地容
·Oracle 11g备份恢复功能增强
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·使用Flashback Query 恢复误删
·如何开启/关闭oracle的归档
·Rman的format格式中的%s类似的
·怎么样创建RMAN恢复目录
·ORA-01843:无效的月份,这个是
·ORA-01843:无效的月份
li
 编辑推荐
·Oracle数据库远程复制与异地容
·Oracle 11g备份恢复功能增强
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·使用Flashback Query 恢复误删
·如何开启/关闭oracle的归档
·Rman的format格式中的%s类似的
·怎么样创建RMAN恢复目录
·ORA-01843:无效的月份,这个是
·ORA-01843:无效的月份
li
 相关篇章
·流配置异常(ORA-01403)的完整解决...
·流配置异常(ORA-01403)的完整解决...
·流同步机制优化(二)
·流配置异常(ORA-01403)的完整解决...
·Oracle9i流环境清除(一)
·流故障解决(数据类型冲突)
·流同步机制优化(一)
·ORA-24170错误
·Oracle9i流环境清除(二)
·Oracle9i流环境清除(三)
·流配置异常(ORA-01403)的完整解决...
·ORA-600(kolaslGetLength-1)错误
·srvctl添加数据库信息报错
·利用TAR恢复ORACLE RAC环境的软件...
·RAC环境一个实例删除已被另一个实...
·RAC环境中修改系统时间可能导致S...
·RAC环境的恢复策略
·一次带库备份异常
·RAC环境中的快照控制文件
·RAC环境中的密码文件
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接