test,测试基于rowid物化视图日志的坑

1. 总结

  • 基于主键的mvlog , 不受move tablespace影响

  • 基于rowid的mvlog, move tablespace 之后,清空物化视图日志。

2. 基于rowid的物化视图日志不能move

如图所示,T1表是基于主键的物化视图日志,对应的物化视图T1。T2表是基于rowid的物化视图日志,对应的物化视图T2。

当T1表 和 T2表发生move时,物化视图T1正常刷新,物化视图T2刷新失败。

(1) 创建原表

Create Table EMP_SOURCE As select * from EMP; 
ALTER TABLE EMP_SOURCE ADD CONSTRAINT pk_empsource_empno PRIMARY KEY (empno); 


(2) 创建基于rowid的物化视图日志

DROP MATERIALIZED VIEW LOG ON emp_source ; 
CREATE MATERIALIZED VIEW LOG ON emp_source WITH ROWID ; 

(3) 创建物化视图

CREATE MATERIALIZED VIEW mv_emp_source
BUILD IMMEDIATE
REFRESH FAST
WITH ROWID
AS
select * from emp_source@To_Scott;

(4) move表

ALTER TABLE emp_source MOVE TABLESPACE USERS;

(5) 刷新物化视图

刷新物化视图会报错

BEGIN
  dbms_mview.refresh(list => 'mv_emp_source');
END;
/
posted on 2021-01-09 22:19  我是一只胖子  阅读(212)  评论(0编辑  收藏  举报