botang 发表于 2017-11-7 10:58:48

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

selectusername , sid , s.RESOURCE_CONSUMER_GROUP
from v_$sessionswhere terminal in ('pts/4','pts/8');

alter user sh identified by oracle_4U account unlock;

select   u.username,u.initial_rsrc_consumer_group
from dba_users u
where u.username in ('HR','SH');

BEGIN
sys.dbms_scheduler.create_job_class(
logging_level => DBMS_SCHEDULER.LOGGING_RUNS,
resource_consumer_group => 'GROUP2',
comments => 'jobclass1',
job_class_name => '"JOBCLASS1"');
END;



   
   select* from dba_tab_privs tp where tp.grantee='HR';
   
   BEGIN
sys.dbms_scheduler.create_job(
job_name => '"HR"."JOB7"',
program_name => '"HR"."PROGRAM7"',
start_date => systimestamp at time zone 'PRC',
job_class => '"JOBCLASS1"',
comments => 'job7',
auto_drop => FALSE,
enabled => TRUE);
END;

      

   
   
   grant execute on jobclass1to hr;
   
      
   select* from dba_tab_privs tp where tp.grantee='HR';
   
   selectj.job_name , j.resource_consumer_group
   from dba_scheduler_running_jobs j
   where j.job_name='JOB7';


begin
dbms_resource_manager.clear_pending_area;
dbms_resource_manager.create_pending_area;
DBMS_RESOURCE_MANAGER.update_PLAN_DIRECTIVE(
   'plan1',
    group_or_subplan      => 'group2',
   new_max_utilization_limit => 30);
   dbms_resource_manager.submit_pending_area;
end;   

selects.RESOURCE_CONSUMER_GROUP
from v_$session s
where s.TERMINAL='pts/8';

select   d.max_utilization_limit   
from dba_rsrc_plan_directives   d where plan='PLAN1';
   


作业类要授权

作业类的删除问题
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

selectjob_name ,j.elapsed_time ,j.resource_consumer_group
from dba_scheduler_running_jobsj ;

BEGIN
DBMS_SCHEDULER.CREATE_WINDOW_GROUP(
group_name=>'"WINGROUP1"',
window_list=>'"WIN1"');
END;

selectj.job_name, j.stop_on_window_closefrom dba_scheduler_jobsj
where j.job_name='JOB71';
BEGIN
DBMS_SCHEDULER.CREATE_WINDOW(
window_name=>'"WIN2"',
resource_plan=>'INTERNAL_PLAN',
schedule_name=>'"SYS"."DAILY_PURGE_SCHEDULE"',
duration=>numtodsinterval(60, 'minute'),
window_priority=>'LOW',
comments=>'');
END;

页: [1]
查看完整版本: 第30次活动:2017-11-06(星期一晚上7:00-9:30)