提交时快速创建Matview刷新失败,导致ORA-12033

时间:2018-12-11 05:17:05

标签: oracle oracle12c materialized-views

Oracle数据库-标准版-版本12.1.0.2.0,平台Windows 64位

我在尝试创建mview时遇到ora-12033错误,所有必要的列已包含在mview日志中。当我尝试在11g版本上做同样的事情时,它可以工作,但是12c抛出ora错误。

请帮助我解决此问题或提供可能有用的链接。

这是代码:

CREATE MATERIALIZED VIEW LOG ON contract_details
with rowid (count, contract_id) including new values;

CREATE MATERIALIZED VIEW m_contract_sum
refresh fast on commit
as
select d.contract_id as contract_id,
       count(*) as count_grp,
       count(d.count) as cnt_count,
       sum(d.count) as sm_count
  from contract_details d
 group by d.contract_id;

谢谢!

1 个答案:

答案 0 :(得分:0)

扩展统计信息可能会出现问题,扩展统计信息会自动创建以收集列组上的统计信息。 您可以通过执行以下查询来验证它:

SELECT column_name, data_default, virtual_column, hidden_column 
  FROM dba_tab_cols 
 WHERE table_name = 'CONTRACT_DETAILS' AND hidden_column = 'YES';

在这种情况下,您需要在(重新)创建实例化视图之前删除统计信息(使用dbms_stats.drop_extended_stats)。 例如

BEGIN
   dbms_stats.drop_extended_stats('master', 'contract_details', '(x, y)');
END;
/

之后,您可能想通过使用

再次收集统计信息
BEGIN
   dbms_stats.create_extended_stats('master', 'contract_details', '(x, y)')
END;
/