我创建了一些实例视图,但是有些会莫名其妙的失效。于是就写了一个定时程序,每次到all_mviews中去检索失效的实例视图,然后将这些实例视图重建。
主要语句如下:
procedure rebuild_mv(mv_name varchar2) is
command varchar2(500);
interv varchar2(100);
begin
select trim(interval) into interv from all_jobs where what like '%'||mv_name||'%';
command:='drop materialized view '||mv_name;
execute immediate command;
command:='create materialized view '||mv_name;
command:=command||' tablespace dbre refresh with rowid ';
command:=command||' start with sysdate next ';
command:=command||interv;
command:=command||' as select * from '||mv_name||'@dbre.world';
execute immediate command;
end;
其中mv_name是要重建的实例视图的名字,运行drop视图时没问题。但是到最后一句,创建视图时就会报错“权限不足”。把command的内容在sql窗口中单独运行时就没有问题,就是说当前用户有创建实例视图的权限。为什么会权限不足呢?
主要语句如下:
procedure rebuild_mv(mv_name varchar2) is
command varchar2(500);
interv varchar2(100);
begin
select trim(interval) into interv from all_jobs where what like '%'||mv_name||'%';
command:='drop materialized view '||mv_name;
execute immediate command;
command:='create materialized view '||mv_name;
command:=command||' tablespace dbre refresh with rowid ';
command:=command||' start with sysdate next ';
command:=command||interv;
command:=command||' as select * from '||mv_name||'@dbre.world';
execute immediate command;
end;
其中mv_name是要重建的实例视图的名字,运行drop视图时没问题。但是到最后一句,创建视图时就会报错“权限不足”。把command的内容在sql窗口中单独运行时就没有问题,就是说当前用户有创建实例视图的权限。为什么会权限不足呢?
你可以用别的动态SQL执行方式试试,不过这个我也没遇到过,不很肯定