物化视图手动刷新报错:ORA--12008:实物化视图的刷新路径中存在错误,ORA-01706:用户函数的结果值过大

物化视图手动刷新报错:ORA--12008:实物化视图的刷新路径中存在错误,ORA-01706:用户函数的结果值过大_第1张图片
执行语句:

BEGIN
DBMS_MVIEW.REFRESH (
list => 'XXX_MATERIALIZED_VIEW',
Method =>'C',
refresh_after_errors => True);
END;

就报上面的错误,排查问题思路,我先看的是第一个问题,ORA–12008:实物化视图的刷新路径中存在错误,但是我创建物化视图的表结构都没有改变过,我就把重点放在了ORA-01706:用户函数的结果值过大,这个问题产生的原因是因为我创建的视图表字段长度不能大于4000,我查出来的数据中有一条数据因为程序异常其中一个字段的值已经远远超过4000的大小,就会导致这个物化视图怎么也更新不了,我这个表中有二十多万条数据,其中的几条数据的一个字段值有异常,我是怎么排查找到是哪条数据出错的呢。

我从时间节点入手,因为物化视图我设置的是每天的凌晨执行刷新,我看到的是最近几天出现问题的,所以我查最近十天的数据,如果出现用户函数的结果值过大这个异常,那么我就继续缩小范围,最后缩小到了十分钟,十分钟之内有四条数据,我用这四条数据逐个排查,最后可以定位到具体的一条数据有异常,最后改了这个异常数据,就可以正常同步刷星数据了。

你可能感兴趣的:(oracle,物化视图)