原文地址:http://blog.csdn.net/outget1/archive/2010/02/03/5284427.aspx
有用过ORCLE 物化视图的朋友,请帮个忙,我想每天刷新两次,比如中午十二点,晚上七点,不知道怎么写,急用!
你这个需要,可以这样实现
建一个表,再写个存储过程
再用个SCHEDULE JOB来实现
用普通JOB,或者物化视图,对于时间间隔都需要有规律
或者写个储存过程来手工刷新物化视图,然后用SCHEDULE JOB来实现每天12点,19点刷新
对于oracle10g简单方法:
1. 先建立一个物化视图,不用指明刷新参数,只要create materialized view,如
CREATE MATERIALIZED VIEW mv_emp
AS SELECT * FROM scott.emp;
2. 建立一个用来刷新物化视图的存储过程,如
CREATE OR REPLACE PROCEDURE auto_refresh_mview_job_proc
AS
BEGIN
dbms_mview.REFRESH('mv_emp');
END;
/
3. 用ORACLE 10g的scheduler每天12:00和19:00定期刷新物化视图
BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'auot_refresh_mview_job',
job_type => 'STORED_PROCEDURE',
job_action => 'scott.auto_refresh_mview_job_proc',
start_date => SYSDATE,
repeat_interval => 'FREQ=DAILY; BYHOUR=12,19',
enabled => TRUE,
comments => 'Refresh materialized view mv_emp'
);
END;
/
4. 删除scheduler对象的方法
BEGIN
DBMS_SCHEDULER.DROP_JOB(
job_name => 'auot_refresh_mview_job'
);
END;
/
dbms_mview.REFRESH('mv_emp'); 这个是我想要的,谢谢了,还有,如果我之前用alter materialized view '|| a.table_name||' refresh complete start with sysdate next sysdate+100/(24*60*60)'||';' 建的刷新,怎么取消啊。
把刷新物化视图的JOB 删除了就可以了,下面是查询物化视图及对应的jobno的语句:
SELECT job, what from user_jobs;
找到jobno后,用dbms_Job.remove就可以删除job了
exec dbms_job.remove(:jobno);
3. 用ORACLE 10g的scheduler每天12:00和19:00定期刷新物化视图
BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'auot_refresh_mview_job',
job_type => 'STORED_PROCEDURE',
job_action => 'scott.auto_refresh_mview_job_proc',
start_date => SYSDATE,
repeat_interval => 'FREQ=DAILY; BYHOUR=12,19',
enabled => TRUE,
comments => 'Refresh materialized view mv_emp'
);
上面这种方式我不怎么明白。
物化视图的定时刷新其实是用Oracle的任务实现的,就是按照刷新的时间间隔定期的执行DBMS_MVIEW.REFRESH('mv_emp')的.由于Oracle10g增加了功能更为强大的scheduler功能,可以更加灵活的定义执行任务的时间,因此这里我给出的方法就是用10g的SCHEDULER,用scheduler要用到Oracle的内部包DBMS_SCHEDULER,其中DBMS_SCHEDULER.CREATE_JOB就是来创建一个实时执行的任务,下面是一个例子
BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'auto_refresh_mview_job',
job_type => 'STORED_PROCEDURE',
job_action => 'scott.auto_refresh_mview_job_proc',
start_date => SYSDATE,
repeat_interval => 'FREQ=DAILY; BYHOUR=12,19',
enabled => TRUE,
comments => 'Refresh materialized view mv_emp'
);
job_name对应的参数是任务名,这个任务的名字就是'auto_refresh_mview_job'
job_type是任务的类型,这里是存储过程类型
job_action是任务的名称,这里就是存储过程'scott.auto_refresh_mview_job_proc',存储过程的功能就是执行dbms_mviw.refresh('mv_emp')
start_date是开始执行的时间,这里是从任务创建时就开始执行
repeat_interval是执行的时间间隔,FREQ表示执行频率,DAILY表示每天执行,BYHOUR定义了具体的执行时间为每天的12时和19时
enabled表示任务为启用状态,如果不加这个参数,为缺省的不启用
comments为任务的一个说明,这里面的内容可以根据实际情况自行填写。
定义了上面的任务后,可以从字典表dba_scheduler_jobs查询出这个任务来。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/outget1/archive/2010/02/03/5284427.aspx
分享到:
相关推荐
物化视图的快速刷新 物化视图是 Oracle 中的一种性能优化技术,它可以将复杂的查询结果存储在一个物化视图中,以便快速地检索数据。物化视图有三种刷新方式:COMPLETE、FAST 和 FORCE。 COMPLETE 刷新方式会删除表...
PostgreSQL 物化视图的刷新机制 PostgreSQL 物化视图是一种特殊的视图,它可以存储数据,如同一个表一样,但它的数据可以根据原表的变化而变化。物化视图可以分为四种类型:快照物化视图、积极物化视图、消极物化...
"Oracle 物化视图增量刷新的应用研究" Oracle 物化视图是 Oracle 公司提供的一种新技术,可以解决很多普通逻辑视图无法完成的功能。物化视图操作简单,支持增量刷新及全量刷新,可以支持复杂的表连接、聚合函数等...
- `REFRESH` 选项定义了刷新策略,如 `FORCE` 在每次查询时强制刷新,`FAST` 利用物化视图日志进行快速刷新,`COMPLETE` 是完全刷新,`NEVER` 表示不自动刷新。 - `ON COMMIT` 或 `ON DEMAND` 定义了刷新时机,`ON ...
这将使得物化视图每天刷新一次。 物化视图也可以设置日志,以便追踪数据的变化。例如: ```sql CREATE MATERIALIZED VIEW LOG ON TABLE_NAME WITH SEQUENCE,ROWID(NUM1,NUM2,NUM3,NUM4,NUM5,NUM6,NUM7) ...
你可以根据业务需求设置不同的刷新频率,比如每天一次、每小时一次或者在业务低峰期自动刷新。同时,这种方式也可以避免在数据量大时对数据库造成过多压力,因为更新操作可以在非高峰时段进行。 在使用物化视图时,...
物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建
在Oracle 10g中,DBMS_ADVISOR程序包的TUNE_MVIEW过程简化了物化视图的优化过程,帮助自动创建必要的支持结构。 例如,创建一个物化视图如以下所示: ```sql create materialized view mv_hotel_resv refresh fast...
- **自动刷新**:Oracle会定期自动刷新物化视图,可以通过调度程序(如`DBMS_SCHEDULER`)来控制刷新频率。 #### 五、物化视图的存储和管理 1. **存储属性**:物化视图作为一种特殊的表,具有自己的物理存储属性,...
- **刷新物化视图**:定期或按需刷新物化视图以保持数据的最新状态。 - **查询物化视图**:通过简单的SELECT语句直接查询物化视图。 - **维护物化视图**:包括监控物化视图的状态、执行维护任务等。 #### 四、物化...
2. **Rowid物化视图** - **定义**:如果表没有定义主键,可以使用ROWID来创建物化视图。ROWID提供了一种快速定位表中行的方法。 - **示例**: ```sql CREATE MATERIALIZED VIEW mv_emp_rowid REFRESH WITH ...
在本例中,创建了一个名为`stu_view`的物化视图,其数据源为`stu`表,并设置了自动刷新策略,即每天刷新一次。 5. **插入数据**:在创建物化视图后,可以向基础表中插入数据。由于物化视图日志的存在,即使基础表中...
当查询被执行时,Oracle会自动检查是否可以通过物化视图来获取结果,如果可以,就会自动选择物化视图,而无需修改原始查询,对应用程序完全透明。物化视图可以像普通表一样被查询,并且可以基于分区表,自身也可进行...
通过本教程的学习,我们不仅掌握了物化视图和查询重写的基本原理及其在Oracle数据库中的实现方法,而且还深入了解了如何通过一系列的具体操作来优化数据仓库系统的查询性能。这些技术的应用可以显著提高大型数据仓库...
上述命令表示物化视图初次刷新时间为系统当前时间,之后每隔两天自动刷新一次。 总之,物化视图在ORACLE数据库中扮演着提升查询性能、简化远程数据访问及加速数据仓库查询的重要角色。正确地创建和管理物化视图,...
- **ON COMMIT刷新**:每当事务提交时自动刷新,适用于对实时性要求较高的场景。 #### 五、物化视图的应用场景 物化视图最适合用于以下几种情况: - 需要频繁执行的复杂查询,尤其是那些包含JOIN操作的查询。 - ...
2. 物化视图的查询重写(QUERY REWRITE)功能允许Oracle自动将对物化视图的查询转换为对物化视图本身的访问,从而提高查询性能。例如,上述创建的物化视图`mv1`,在查询时可以被重写,从而直接访问物化视图,而不...
2. 使用`CREATE MATERIALIZED VIEW`语句创建物化视图,可以指定是否启用查询重写。查询重写是指当对基表进行查询时,Oracle会自动判断是否可以通过物化视图来获取结果。默认情况下,物化视图支持查询重写。 物化...