[Oracle维护工程师手记]两表结合的MVIEW的告诉刷新
2018-05-21 19:57
309 查看
对两表结合查询建立MVIEW,进行MVIEW的的高速刷新失败,如何处理?
例如:
SQL> drop user u1 cascade;
User dropped.
SQL> grant dba to u1 identified by u1;
Grant succeeded.
SQL> conn u1/u1
Connected.
SQL> create table TAB001 (col1 integer primary key, col2 integer, val3 integer);
Table created.
SQL> create materialized view log on tab001;
Materialized view log created.
SQL> create table TAB002 (col1 integer primary key, col2 integer, val3 integer);
Table created.
SQL>
SQL> create materialized view log on tab002;
SQL> create materialized view mv001
as
SELECT t1.col1 as t1c0l1, t1.col2 as t1col2, t2.col1 as t2col1, t2.col2 as t2col2 , t1.val3 as t1val3,t2.val3 as t2val3
FROM TAB001 t1 LEFT OUTER JOIN TAB001 t2
ON t1.col2 = t2.col2;
Materialized view created.
SQL> exec dbms_mview.refresh('MV001','F');
BEGIN dbms_mview.refresh('MV001','F'); END;
*
ERROR at line 1:
ORA-12004: REFRESH FAST cannot be used for materialized view "U1"."MV001"
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2809
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 3025
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2994
ORA-06512: at line 1
SQL>
此时,可以考虑换用 ROWID 类型的 MVIEW LOG,重新来执行一次:
create table TAB001 (col1 integer primary key, col2 integer, val3 integer);
alter table tab001 add constraint con_t1_col2 unique(col2);
CREATE MATERIALIZED VIEW LOG ON tab001 WITH ROWID;
create table TAB002 (col1 integer primary key, col2 integer, val3 integer);
CREATE MATERIALIZED VIEW LOG ON tab002 WITH ROWID;
CREATE MATERIALIZED VIEW MV055
BUILD IMMEDIATE
REFRESH FAST
AS select /*+ use_hash(a,b) */
a.rowid aid, b.rowid bid, a.col1, b.val3
from tab001 a, tab002 b
where a.col2 = b.col2(+);
exec dbms_mview.refresh('MV055','F');
SQL> exec dbms_mview.refresh('MV055','F');
PL/SQL procedure successfully completed.
SQL>
可以看到,已经成功。
相关文章推荐
- [Oracle维护工程师手记]为什么flashback 的时候既需要 flashback log ,又需要 archive log?
- [Oracle维护工程师手记]Data Guard Broker中改属性是否需要两侧分别执行?
- [Oracle维护工程师手记]一次升级后运行变慢的分析
- Oracle 10G RAC管理维护学习手记
- ORACLE物化视图--循序渐进MView(二) MView Log的结构与快速刷新
- 基于Linux的Oracle 10g RAC 管理维护手记
- 基于LINUX的Oracle 10G RAC管理维护学习手记
- ORACLE物化视图-循序渐进MView(五) 利用刷新组控制MView刷新
- 解析OracleOLAP使用MView刷新Cube
- Oracle 10g dataguard维护,配置自动fast_start switchover
- oracle 11g 学习笔记 10_31(2)_维护数据的完整性
- Oracle物化视图定时全量刷新导致归档日志骤增
- Oracle 10g 物理Dataguard日常操作维护(二)
- 创建Oracle 的Data Guard 以及简单维护过程
- Iframe和jquery结合实现不刷新上传
- Oracle Data Guard配置手记
- AIX系统Oracle 10g RAC 维护之--OCR和 VOTE disk 管理
- Oracle 索引的维护
- Oracle ERP 11i 应用技巧与维护经验
- 从实例看oracle的索引监控与无效索引维护