oracle--job以及物化视图
项目需要,用到了物化视图以及job,以前没接触过,就写两个简单例子记录一下。
job的作用是在一定的时间内进行一些操作,执行过程或者是刷新物化视图。
例子:
declare job number;
begin
sys.dbms_job.submit(job=>job,
what=>'InsertTable1;',
next_date => sysdate,
interval => 'sysdate+1/24*60');
commit;
end;
InsertTable1为过程名字,job需要声明,不然就会报错。job=>job,这里不能加冒号:,也会报错,但是如果在plsql里查看这个job的话,不会显示declare那一行,内容也变成了job=>:job,
如果这么创建的话就会报'并非所有变量都已绑定',有点坑;
物化视图的作用主要是可以在视图所查询的表进行更新的时候,刷新该物化视图,可以同步刷新,也可以定时刷新。
例子:
CREATE MATERIALIZED VIEW TABLE1_VIEW
REFRESH FORCE ON DEMAND
START WITH TO_DATE('25-03-2016 16:36:05', 'DD-MM-YYYY HH24:MI:SS')
NEXT SYSDATE+1/(24*60)
AS
SELECT "TABLE1"."A" "A","TABLE1"."B" "B","TABLE1"."C" "C" FROM "TABLE1" "TABLE1" WHERE "TABLE1"."C">'30';
当然下面的查询语句字段都有冒号,在写的时候不用加,ON DEMAND可以在我们需要的时候进行刷新,on commit是在表进行commit的时候就刷新视图,因此是实时的,on demand可以在一定时间内刷新,例子就是从25-03-2016 16:36:05开始,没隔1分钟进行刷新,1/(24*60) 表示1分钟,1/24表示1小时,1/(24*60*60)表示1秒,应该懂这个时间的算法了吧。
简单的记录了一下。