Bo's Oracle Station

查看: 2709|回复: 0

第30次活动:2017-11-06(星期一晚上7:00-9:30)

[复制链接]

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2017-11-7 10:58:48 | 显示全部楼层 |阅读模式
  1. select  username , sid , s.RESOURCE_CONSUMER_GROUP
  2. from v_$session  s  where terminal in ('pts/4','pts/8');

  3. alter user sh identified by oracle_4U account unlock;

  4. select   u.username,u.initial_rsrc_consumer_group
  5.   from dba_users u
  6.   where u.username in ('HR','SH');
  7.   
  8. BEGIN
  9. sys.dbms_scheduler.create_job_class(
  10. logging_level => DBMS_SCHEDULER.LOGGING_RUNS,
  11. resource_consumer_group => 'GROUP2',
  12. comments => 'jobclass1',
  13. job_class_name => '"JOBCLASS1"');
  14. END;
  15.   
  16.   

  17.    
  18.    select  * from dba_tab_privs tp where tp.grantee='HR';
  19.    
  20.    BEGIN
  21. sys.dbms_scheduler.create_job(
  22. job_name => '"HR"."JOB7"',
  23. program_name => '"HR"."PROGRAM7"',
  24. start_date => systimestamp at time zone 'PRC',
  25. job_class => '"JOBCLASS1"',
  26. comments => 'job7',
  27. auto_drop => FALSE,
  28. enabled => TRUE);
  29. END;

  30.         

  31.    
  32.    
  33.    grant execute on jobclass1  to hr;
  34.    
  35.       
  36.    select  * from dba_tab_privs tp where tp.grantee='HR';
  37.    
  38.      select  j.job_name , j.resource_consumer_group
  39.    from dba_scheduler_running_jobs j
  40.    where j.job_name='JOB7';


  41. begin
  42.   dbms_resource_manager.clear_pending_area;
  43.   dbms_resource_manager.create_pending_area;
  44.   DBMS_RESOURCE_MANAGER.update_PLAN_DIRECTIVE(
  45.      'plan1',
  46.     group_or_subplan      => 'group2',
  47.      new_max_utilization_limit => 30);
  48.    dbms_resource_manager.submit_pending_area;
  49.   end;   
  50.   
  51. select  s.RESOURCE_CONSUMER_GROUP
  52. from v_$session s
  53.   where s.TERMINAL='pts/8';

  54. select   d.max_utilization_limit   
  55. from dba_rsrc_plan_directives   d where plan='PLAN1';
  56.    
复制代码



作业类要授权

作业类的删除问题
If you want to drop a job class with jobs in it, you must specify the FORCE=TRUE option in your DROP_JOB_CLASS procedure. When you do this, the jobs in the dropped job class are disabled and moved to the default job class in your database. If the job is already running when you drop its job class, the job will run to completion anyway.

You can modify the retention period (the default is 30days) of the logs for a job class:
DBMS_SCHEDULER.SET_ATTRIBUTE( 'TEST_JOB_CLASS', 'log_history', '7')

window
   通常job启动后,用户只能被动地等待其执行,一直到其执行地任务完成(或DBA手动kill对应进程),在此期间,
执行的job将与其它活动的进程共同竞争当前系统中的资源。在9i之前就是这样。在Job Classes中也可以控制job能够
使用的资源,不过单单使用Job Classes并不能灵活的控制job在合适的时间使用适当的资源。进入10g之后,采用
dbms_scheduler的WINDOW可以缓解该问题。WINDOW 可以指定一个时间窗口,在此期间,通过与Job Classes的搭配组合,
能够有效控制job执行时支配(使用)的资源。比如说job通常是在凌晨服务器负载较低时执行,那么就可以通过WINDOW
设置在此期间,允许jobs使用更多的系统资源,而到了工作时间后,如果job仍未执行完成,为其分配另一个有限的
资源,以尽可能降低job执行占用的资源对其它业务的影响。

create_window
参数:
resource_plan——资源计划,即通过 dbms_resource_manager.create_plan来创建。
schedule_name——调度名称,基于已经创建好的调度创建window。
duration——时间窗口打开后持续的时间,创建时必须设置该值,因为没有默认值,设置范围从1分钟到99天。
window_priority——window优先级,如果同一时间出现多个window时则根据优先级决定执行哪个。
--创建一个基于调度的window
BEGIN
   dbms_scheduler.create_window(window_name     =>,
                                resource_plan   =>,
                                schedule_name   =>,
                                duration        =>,
                                window_priority =>,
                                comments        =>);
END;

--不基于时间调度创建window
DBMS_SCHEDULER.CREATE_WINDOW (
   window_name             IN VARCHAR2,
   resource_plan           IN VARCHAR2,
   start_date              IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
   repeat_interval         IN VARCHAR2,
   end_date                IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
   duration                IN INTERVAL DAY TO SECOND,
   window_priority         IN VARCHAR2                 DEFAULT 'LOW',
   comments                IN VARCHAR2                 DEFAULT NULL);



windowgroup
    一个WINDOW GROUP可能包含多个WINDOW。使用WINDOW GROUP的本意是这样的,假如说某个job执行的时间比较长,
甚至全天24小时都在执行,对于这类job,单个WINDOW很难有效调整其资源占用,因此就可以通过设置一个
WINDOW GROUP,该WINDOW GROUP中包含了多个WINDOW,每个WINDOW分别负责不同时间点时的资源使用计划。然后在
创建JOB时,指定schedule_name参数为WINDOW GROUP的名称,当然也可以直接指定window名称
(window已经包含了调度信息了)。

create_window_group
BEGIN
   dbms_scheduler.create_window_group(group_name  =>,
                                      window_list =>,
                                      comments    =>);
END;

add_window_group_member
增加一个window
BEGIN
   dbms_scheduler.add_window_group_member(group_name => ,window_list => );
END;

remove_window_group_member
移除一个window

drop_window_group
删除一个window

  1. select  job_name ,j.elapsed_time ,j.resource_consumer_group
  2. from dba_scheduler_running_jobs  j ;

  3.   BEGIN
  4. DBMS_SCHEDULER.CREATE_WINDOW_GROUP(
  5. group_name=>'"WINGROUP1"',
  6. window_list=>'"WIN1"');
  7. END;

  8. select  j.job_name  , j.stop_on_window_close  from dba_scheduler_jobs  j
  9. where j.job_name='JOB71';
复制代码
  1. BEGIN
  2. DBMS_SCHEDULER.CREATE_WINDOW(
  3. window_name=>'"WIN2"',
  4. resource_plan=>'INTERNAL_PLAN',
  5. schedule_name=>'"SYS"."DAILY_PURGE_SCHEDULE"',
  6. duration=>numtodsinterval(60, 'minute'),
  7. window_priority=>'LOW',
  8. comments=>'');
  9. END;
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Bo's Oracle Station   

GMT+8, 2024-3-29 20:39 , Processed in 0.032499 second(s), 24 queries .

快速回复 返回顶部 返回列表