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;
/