drop 很慢 物化视图_物化视图日志表被DROP后建立物化视图报错

物化视图尤其是快速刷新的物化视图,依赖于物化视图日志表,所以物化视图日志表被删除后报错是很正常的,不过如果物化视图日志表是直接被DROP,则错误信息比较有意思。

直接看例子:

SQL> create table t (id number primary key, name varchar2(30));

表已创建。

SQL> create materialized view log on t;

实体化视图日志已创建。

SQL> create materialized view mv_t refresh fast as select * from t;

实体化视图已创建。

SQL> drop materialized view mv_t;

实体化视图已删除。

SQL> drop table mlog$_t;

表已删除。

SQL> create materialized view mv_t refresh fast as select * from t;

create materialized view mv_t refresh fast as select * from t

*第1行出现错误:

ORA-23412:主表的主键列已更改

SQL> create materialized view mv_t as select * from t;

create materialized view mv_t as select * from t

*第1行出现错误:

ORA-00942:表或视图不存在

SQL> drop materialized view log on t;

实体化视图日志已删除。

SQL> create materialized view mv_t refresh fast as select * from t;

create materialized view mv_t refresh fast as select * from t

*第1行出现错误:

ORA-23413:表"TEST"."T"不带实体化视图日志

SQL> create materialized view mv_t as select * from t;

实体化视图已创建。

SQL> drop materialized view mv_t;

实体化视图已删除。

SQL> create materialized view log on t;

实体化视图日志已创建。

SQL> drop table mlog$_t purge;

表已删除。

SQL> create materialized view mv_t refresh fast as select * from t;

create materialized view mv_t refresh fast as select * from t

*第1行出现错误:

ORA-23412:主表的主键列已更改

SQL> create materialized view mv_t as select * from t;

create materialized view mv_t as select * from t

*第1行出现错误:

ORA-00942:表或视图不存在

SQL> drop materialized view log on t;

实体化视图日志已删除。

物化视图日志的清除必须使用DROP MATERIALIZED VIEW LOG ON的语法,如果直接删除了物化视图日志对应的表,就会导致上面的错误信息。有趣的是,建立快速刷新的物化视图错误是ORA-23412,而建立完全刷新或FORCE刷新的物化视图会报错ORA-942。

而对于没有建立物化视图日志的基表,则快速刷新的物化视图会报错ORA-23413,而完全刷新或FORCE刷新的物化视图则不会报错。

如果Oracle可以禁止直接删除物化视图日志表,就不会带来这种令人迷惑的错误信息了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值