Pao*_*ino 7 sql oracle materialized-views
我在Oracle 10.2.0.50数据库中有一个物化视图,如下所示:
CREATE MATERIALIZED VIEW mv_cis
NOCACHE
NOLOGGING
NOCOMPRESS
NOPARALLEL
BUILD IMMEDIATE
REFRESH FORCE
ON DEMAND
WITH PRIMARY KEY AS
SELECT component_id, ctn, visible_tag, facility,
SYSTEM, elev, parent, room_number,
remarks, safety_class, seismic, quality_level
FROM v_cis;
Run Code Online (Sandbox Code Playgroud)
相当直接的东西.创建此物化视图后,它将生效并填充我期望的数据.然后我在其表中添加一个约束,如下所示:
ALTER TABLE mv_cis
MODIFY ctn CONSTRAINT chk_cis_ctn_null NOT NULL ENABLE VALIDATE;
Run Code Online (Sandbox Code Playgroud)
这按预期工作,表得到一个新的约束,并且在世界上一切都很好.
但是,我回顾一下物化视图和(使用Toad for Oracle 12)它显示无效.展望该user_mviews表显示,COMPILE_STATE它是NEED_COMPILE和STALENESS是UNDEFINED.所以我跑:
ALTER MATERIALIZED VIEW mv_cis COMPILE;
Run Code Online (Sandbox Code Playgroud)
没变.奇怪的是,刷新视图仍然有效,但它让我发疯,它显示无效,并使我的测试计划失败,即使一切看起来都井然有序.那么,我错过了什么?
我要说的是 bug,您应该检查 Metalink 和/或提交 SR。
这是11.2场景。当然,这很简单。如果您愿意,我可以使用您的实际 DDL 进行尝试。
SQL> create table base(id integer primary key, name varchar2(100) not null,
2 description varchar2(400));
Table created.
SQL> desc base
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER(38)
NAME NOT NULL VARCHAR2(100)
DESCRIPTION VARCHAR2(400)
SQL> create materialized view mv_base build immediate refresh force on demand
2 with primary key as
3 select id, name, description from base
4 ;
Materialized view created.
SQL> desc mv_base
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER(38)
NAME NOT NULL VARCHAR2(100)
DESCRIPTION VARCHAR2(400)
SQL> alter table mv_base modify description constraint chk_not_null not null
2 enable validate;
Table altered.
SQL> desc mv_base
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER(38)
NAME NOT NULL VARCHAR2(100)
DESCRIPTION NOT NULL VARCHAR2(400)
Run Code Online (Sandbox Code Playgroud)
现在检查是否需要编译。
SQL> select mview_name, compile_state, staleness from user_mviews;
MVIEW_NAME COMPILE_STATE STALENESS
------------------------------ ------------------- -------------------
MV_BASE NEEDS_COMPILE NEEDS_COMPILE
SQL> alter materialized view mv_base compile;
Materialized view altered.
SQL> select mview_name, compile_state, staleness from user_mviews;
MVIEW_NAME COMPILE_STATE STALENESS
------------------------------ ------------------- -------------------
MV_BASE VALID FRESH
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1134 次 |
| 最近记录: |