当数据表中数据量很大的时候,我们进行查询速度会很慢,特别是上百万数据
做报表的时候体会就更深了,为此,我们采用定时执行存储过程,提取我们需
要的数据。写到这里的时候大家可能会有些疑问,这样我们的数据不就不能实时最新了吗?
你的疑问是正确的,我们为什么提出这种解决方案呢,原因在于我们的数据是
生产数据,每个月的月底进行导入数据,然后制作报表。因此可以采用这种方法
提高访问数据库的效率。本帖子主要是说怎么定义“执行作业”,然后定时执行,
代码如下:用管理员登陆,进行设置环境
修改可执行作业个数为20个
ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 20
修改取消限制模式
ALTER SYSTEM DISABLE RESTRICTED SESSION;
修改这个文件 C:\oracle\ora90\admin\sample\pfile
initsmpl.ora  
  添加  job_queue_keep_connections = true
--创建测试表
create table  test_job_table
(
   date_test date
);
--创建一个带执行的存储过程,向数据库中插入数据
create  or replace procedure pro_test_job
as
begin
   insert into test_job_table(date_test) values(sysdate);
end;
--创建一个定时执行存储过程的任务job
variable job1 number;
begin
  dbms_job.submit(:job1,'pro_test_job;',sysdate,'sysdate+1/1440');
end;
--运行一个定时器任务
exec dbms_job.run(1);
--查询job执行的存储过程后的数据
select to_char(date_test,'yyyy/mm/dd hh24:mi:ss') from  test_job_table;这样我们每隔几分钟执行查询,就可以看到数据每隔一分钟被插入。到这里我们定义作业,定时查询已经介绍完了,这一步就相当于,我们做
报表的提取数据,希望对大家有些启发,呵呵