日期:2014-05-16  浏览次数:20571 次

[每日一题] 11gOCP 1z0-053 :2013-10-1 persistent lightweight jobs...........................11

转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/12224335



正确答案:BCE

 

轻量级作业

创建和启动一个作业涉及数据字典中一定量的活动。这不可能在短时间(几秒钟)内创建大量作业(可能是数百个)。为了解决这个问题,可以创建轻量级作业。轻量级作业是个比标准作业更简单的构造。它必须基于程序,只能有有限的一系列特性:例如:AUTO_DROP总是TURE。可以单独创建轻量级作业,但没有意义。真正的价值是在创建一组作业定义(可能是数百个),并同时提交它们。

 

注意:不能用DatabaseControl创建轻量级作业,在任何窗口中都没有这一项。因此,必须使用DBMS_SCHEDULER API。

 

 要创建轻量级作业,使用CREATE_JOB过程调用的一个版本,指定程序并将JOB_STYLE参数设为LIGHTWEIGHT,例如:

BEGIN
 DBMS_SCHEDULER.CREATE_JOB (
   job_name   =>'guoyJoe',
   program_name =>'gyj_proc_lw',
   start_date =>sysdate,
   end_date   =>to_timestamp(sysdate+1),
   enabled   =>true,
   job_style =>'lightweight');
END;
/

 这将创建一个将在下一个24小时内每隔一小时运行ocm_prog1程序的轻量级作业。

 下面我们来创建一个有着100个轻量级作业的数组。

 declare
    lw_job sys.job;
    lw_job_array sys.job_arrary;
  begin
   lw_job_array :=sys.job_array();
   lw_job_arrary.extend(100);
   for I in 1 .. 100 loop
    lw_job :=sys.job(job_name='lw_job'||to_char(i),
    job_style=>'lightweight',
    job_template=>'ocm_prog1',
    enable=>'true');
    lw_job_arrary(i) := lw_job;
    end loop;
   dbms_scheduler.create_jobs(lw_job_arrary,'transactional');
 end;
/

注:何时使用轻量级作业?可能是为了并行化由许多不同任务组成的业务操作。例如,在改变web销售价格表后,需要刷新缓存在应用服务器上的大量网页。由于每个网页不同的URL标识,因此必须发送许多不同的消息。你肯定希望在尽可能短的时间内发送它们。



以下转载:http://space.itpub.net/26474945/viewspace-745050

 

轻量级作业:

       也成为持久性轻量级作业,如果当我们的数据库每秒钟需要创建、删除或修改数十个或数百个作业时,使用轻量级作业是降低开销的最佳方法,

 

常规作业:

是由oracle 11g Scheduler 所支持的作业,常规作业需要很多的系统开销,因为他们必须由Scheduler创建且每次执行完由Scheduler删除,常规作业提供了使用诸如其它用户程序的优点,并且提供了对运行此作业的权限细粒度控制

 

轻量级作业有别于常规作业的特征如下:

       1.轻量级作业不是数据库对象,不会产生创建或删除轻量级作业时多引起的开销

       2.与普通作业相比,创建和删除轻量级作业的时间少的很多;

       3.轻量级作业的作业元数据和运行时数据占用的磁盘空间很少;

       4.由于占用的磁盘空间少,可以再RAC环境中平衡轻量级作业的负载;

 

轻量级作业有几个缺点:

       1.无法设置轻量级作业的权限,作业的权限从模板的计划继承而来

       2.由于轻量级作业使用模板,无法创建完全独立的轻量级作业,我们必须使用PL/SQL命令创建轻量级作业,而无法用过EM创建

 

创建轻量级作业:

我们可以使用DBMS_SCHEDULER.CREATE_PROGRAM创建于轻量级作业一起使用的模板,供轻量级作业的模板存储为PLSQL_BLOCK或STORED_PROCEDURE类型的计划,创建轻量级作业时,指定LIGHEWERGHT的JOB_STYLE。JOB_STYLE的默认值是REGULAR

A选项,对于普通的作业而言,Oracle为作业创建包含相应元数据的数据库对象,修改几个数据库表,然后生成redo log。轻量级作业的作业元数据和运行时数据的要求极低