学习ORACLE物化视图

来源:互联网 发布:道教有什么软件 编辑:程序博客网 时间:2024/06/08 11:16

学习ORACLE物化视图-备忘:

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

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

create materialized view testmvrefresh forcestart with sysdatenext sysdate+1/1440asselect * 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_mvREFRESH FASTSTART WITH SYSDATENEXT  SYSDATE + 1/1440WITH PRIMARY KEYASSELECT * 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。