sitemap

RSS地图

收藏本站

设为首页

Oracle研究中心

当前位置:Oracle研究中心 > 故障案例 >

【案例】Oracle物化视图 on prebuilt table故障常见解决办法

时间:2016-07-29 22:07   来源:Oracle研究中心   作者:惜分飞   点击:

天萃荷净 分享一篇关于Oracle物化视图 on prebuilt table故障常见解决办法,包含:ORA-12059,ORA-23413,ORA-12058三种错误的解决方式

1、ORA-12059

执行语句:
CREATE MATERIALIZED VIEW mv_t2
on prebuilt TABLE
AS
SELECT * FROM SCOTT.emp

错误提示:
ORA-12059: prebuilt table “CHF”.”MV_T2″ does not exist

错误原因:
物化视图对应的表不存在(物化视图需要和表同名,结构相同)

解决方法:
CREATE TABLE mv_t2 AS
SELECT * FROM scott.emp WHERE 1=0;

2、ORA-23413

执行语句:
CREATE MATERIALIZED VIEW mv_t2
on prebuilt TABLE
WITH REDUCED PRECISION
refresh FAST on demand
AS
SELECT * FROM SCOTT.emp

错误提示:
ORA-23413: table “SCOTT”.”EMP” does not have a materialized view log

错误原因:
使用fast模式刷新物化视图,需要有物化视图日志

解决方法:
1)创建物化视图日志
CREATE MATERIALIZED VIEW LOG ON scott.emp ;
2)刷新模式改为force,其实实质是采用了complete刷新模式

3、ORA-12058

执行语句(mv log是基于rowid,表无主键)
CREATE MATERIALIZED VIEW mv_t2
on prebuilt TABLE
WITH REDUCED PRECISION
refresh FAST on DEMAND
WITH ROWID
AS
SELECT * FROM SCOTT.emp

错误提示:
ORA-12058: materialized view cannot use prebuilt table

错误原因:
fast刷新模式不能基于rowid进行

解决方法:
1)删除mv log,表添加主键,采用基于主键模式重新建mv log和物化视图
DROP MATERIALIZED VIEW mv_t1;
ALTER TABLE mv_t2 ADD PRIMARY KEY (EMPNO);
CREATE MATERIALIZED VIEW LOG ON scott.emp;
CREATE MATERIALIZED VIEW mv_t2
on prebuilt TABLE
WITH REDUCED PRECISION
refresh FAST on DEMAND
–WITH ROWID
AS
SELECT * FROM SCOTT.emp;

2)刷新模式改为force,其实实质是采用了complete刷新模式

4、总结

1)在执行创建物化视图之前,需要先创建同名、同结构表
2)如果使用fast模式刷新(疑惑在线重定义可以通过rowid实现,为什么直接通过物化视图就不可以),物化视图同表需要主键,需要物化视图日志
3)通过drop mv,发现同名表还存在,和on prebuilt table本质区别


--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之【案例】Oracle物化视图 on prebuilt table故障常见解决办法

本文由大师惜分飞原创分享,网址:http://www.oracleplus.net/arch/909.html

Oracle研究中心

关键词:

ORA-12059

ORA-23413

ORA-12058物化视图故障常见解决办法

物化视图 on prebuilt table