OBIEE 立方刷新的问题

1.通过JOB SCHEDULER 进行 ORACLE CUBE 中的物化视图进行刷新时,出现的LOG如下:

SQL> exec dbms_mview.refresh('DW.CB$DSS_TFAC_DEVICE_CUBE');
BEGIN dbms_mview.refresh('DW.CB$DSS_TFAC_DEVICE_CUBE'); END;

*
第 1 行出现错误:
ORA-37162: OLAP 错误
XOQ-00703: 执行 OLAP DML 命令
"(SYS.AWXML!R11_AGGREGATE_CONSISTENT('DSS_TFAC_DEVICE_CUBE.CUBE'
'DSS_TFAC_DEVICE_CUBE.SOLVE.AGGREGATIONDEFINITION'
'DSS_TFAC_DEVICE_CUBE.QUANTITY.MEASURE' NA) : ORA-00600: 内部错误代码, 参数:
[xscbTest], [18446744073709551615], [], [], [], [], [], [], [], [], [], []
)" 时出错
ORA-06512: 在 "SYS.DBMS_SNAPSHOT", line 2558
ORA-06512: 在 "SYS.DBMS_SNAPSHOT", line 2771
ORA-06512: 在 "SYS.DBMS_SNAPSHOT", line 2740
ORA-06512: 在 line 1
 
问题很奇怪,其他的物化视图正常,唯独该视图无法刷新,查了一下ORA-00600的报错,大部分人
给出的方案是重启数据库,或者ORACLE BUG 无法修复。这些等于没有说,肯定不是问题的所在。
 
2.尝试通过AWM对CUBE 进行刷新,幸运的是得到了更详细的LOG ,贴在下面。
 
   1:  <ERROR   TEXT="XOQ-01600: 执行 DML &quot;SYS.AWXML!R11_LOAD_MEASURES('DSS_TFAC_DEVICE_CUBE.CUBE'  SYS.AWXML!___R11_LONG_ARG_VALUE(SYS.AWXML!___R11_LONG_ARG_DIM 1)  SYS.AWXML!___R11_LONG_ARG_VALUE(SYS.AWXML!___R11_LONG_ARG_DIM 2) 'DSS_TFAC_DEVICE_CUBE.QUANTITY.MEASURE' 'NO')&quot; 时发生 OLAP DML 错误 &quot;ORA-35571: 已达到最大加载错误数。&quot;"/>
   1:   
   2:   
   3:  <ERROR   TEXT="XOQ-01600: 执行 DML &quot;SYS.AWXML!R11_LOAD_MEASURES('DSS_TFAC_DEVICE_CUBE.CUBE'  SYS.AWXML!___R11_LONG_ARG_VALUE(SYS.AWXML!___R11_LONG_ARG_DIM 1)  SYS.AWXML!___R11_LONG_ARG_VALUE(SYS.AWXML!___R11_LONG_ARG_DIM 2) 'DSS_TFAC_DEVICE_CUBE.QUANTITY.MEASURE' 'NO')&quot; 时发生 OLAP DML 错误 &quot;ORA-35571: 已达到最大加载错误数。&quot;"/>

出现以上问题时,执行的SQL是:

   1:  <SQL>   <![CDATA[ SELECT /*+  bypass_recursive_check  cursor_sharing_exact  no_expand  no_rewrite */    T36_DLLX ALIAS_145,    T33_XZQH ALIAS_146,    T30_DEVTYPEID ALIAS_147,    T27_MONTH_ID ALIAS_148,    SUM(T39_COUNTFLAG)  ALIAS_149  FROM    (   SELECT /*+  no_rewrite */      T1."DEVTYPEID" T39_DEVTYPEID,      T1."XZQH" T39_XZQH,      T1."DLLX" T39_DLLX,      T1."AZRQ" T39_AZRQ,      T1."COUNTFLAG" T39_COUNTFLAG    FROM      DW."ITMS_DW_FACT_DEVICE" T1   )    T39,    (   SELECT /*+  no_rewrite */      T1."DLLX" T36_DLLX    FROM      DW."ITMS_DW_DIM_DLLX" T1   )    T36,    (   SELECT /*+  no_rewrite */      T1."XZQH" T33_XZQH    FROM      DW."ITMS_DW_DIM_DISTRICT" T1   )    T33,    (   SELECT /*+  no_rewrite */      T1."DEVTYPEID" T30_DEVTYPEID    FROM      DW."ITMS_DW_DIM_DEVTYPE" T1   )    T30,    (   SELECT /*+  no_rewrite */      T1."DATE_KEY" T27_DATE_KEY,      T1."MONTH_ID" T27_MONTH_ID    FROM      DW."ITMS_DW_DIM_TIME" T1   )    T27  WHERE    ((T36_DLLX = T39_DLLX)      AND (T33_XZQH = T39_XZQH)      AND (T30_DEVTYPEID = T39_DEVTYPEID)      AND (T27_DATE_KEY = T39_AZRQ) )   GROUP BY    (T27_MONTH_ID, T30_DEVTYPEID, T33_XZQH, T36_DLLX)   ORDER BY    T27_MONTH_ID ASC NULLS LAST ,    T30_DEVTYPEID ASC NULLS LAST ,    T33_XZQH ASC NULLS LAST ,    T36_DLLX ASC NULLS LAST ]]>/> </SQL>

 

再仔细查看刷新的日志,MV 拒绝了1170条 数据,原因可能就在这里,问题定位到由于外键引用,事实表的存在的数据,在维中没有相关值。

仔细排查后得到正确的数据。

 
 
原文地址:https://www.cnblogs.com/jerryxing/p/3062793.html