学习ORACLE物化视图

时间:2022-11-02 19:48:19

学习ORACLE物化视图-备忘:

在创建简单的物化视图时:

start with next子句前面需要跟随refresh子句,例如:

create materialized view testmv
refresh force
start with sysdate
next sysdate+1/1440
as
select * from hff.t
/

如果不加refresh 子句,则会报错ora 00905:missing keyword

注意:如果在一个数据库中,该语句使用scott用户创建,则scott用户需要有对hff用户t表的select权限,否则不能正常定时刷新,手工刷新没有问题,

如果单独执行job会报如下错误:ORA-12011,ORA-06512,并且如果查看警告日志文件中的内容会报如下错误:ORA-12012,ORA-12008

ORA-00942:table or view does not exist,ORA-06512等错误,当时处理该问题时,真没注意ORA-00942这个错误,后来授予select权限后物化视图正常定时刷新,所以权限还真是问题啊。

不过,如果在两个数据库中,使用数据库链路来创建的物化视图,则不需要拥有此表的select权限。

--当用refresh 使用FAST选项创建物化视图,必须创建基于主表的视图日志,并且主表必须有主键,如下:

CREATE MATERIALIZED VIEW LOG ON t;

CREATE MATERIALIZED VIEW f_mv
REFRESH FAST
START WITH SYSDATE
NEXT SYSDATE + 1/1440
WITH PRIMARY KEY
AS
SELECT * FROM t@dbl;

查看物化视图DDL定义:

set long 999999

set pagesize 1000

select dbms_metadata.get_ddl('MATERIALIZED_VIEW','F_MV') from dual;

还有相关的视图可以查看物化视图的信息:user_mviews,all_mviews,dba_mviews。