最近 在做物化视图。。遇到一些问题 不知道如何解决。。。希望在这里可以得到各位大虾的指教 。。 先感谢了 。呵呵
1.在做物化视图时 因为SQL里有很多库 到ORACLE时 要创建很多物化视图过程
- SQL code
declare sqls varchar(1000); cursor tb1 is select t."name" as name from sysdatabases@master t where t."name" like 'USER%' order by t."name"; begin for i in tb1 loop sqls:='CREATE MATERIALIZED VIEW '||i.name||'.test1 nologging '|| 'TABLESPACE USER2009 '|| 'BUILD DEFERRED '|| 'as select * from test1@'||i.name|| ' where rownum=rownum '; execute immediate sqls; end loop; end; create or replace procedure USER2009 as begin declare sqls varchar(1000); cursor tb1 is select t."name" as name from sysdatabases@master t where t."name" like 'USER%' order by t."name"; begin for i in tb1 loop sqls:='begin dbms_mview.refresh('''||trim(i.name)||'.test1''); end;'; execute immediate sqls; end loop; end; end;
因为物化视图有近200个 所以用了循环 可是 现在有个问题是 每次创建 我的电脑都会有一个进程产生 一直到电脑卡死为止。。有什么方法可以让它物化视图完毕后 把进程断掉么?
2.同样是上面的代码 执行到一半的时候 会出现一个错误 说提取违反顺序 。。然后断开了。。 请问这是什么原因造成的 如何解决 ?
再次感谢。。期待回答。。~
------解决方案--------------------
1、单步调试一下,确认卡在什么地方。
2、或者直接通过SQL语句生成建立物化视图的脚本(和你存储过程差不多),然后执行脚本,确认问题出现在哪儿。
------解决方案--------------------
查查在哪里卡死,你这样写,很容易挂起;