七、使用Windows
1、创建Window
--基于SCHEDULE
DBMS_SCHEDULER.CREATE_WINDOW (
window_name IN VARCHAR2,
resource_plan IN VARCHAR2,
schedule_name IN VARCHAR2,
duration IN INTERVAL DAY TO SECOND,
window_priority IN VARCHAR2 DEFAULT 'LOW',
comments IN VARCHAR2 DEFAULT NULL);
--基于定义的调度
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);
下列几个参数可能需要关注:
(1) Resource_plan:这一参数用来指定要使用的资源使用计划,当打开WINDOW 时,就会自动按照指定的资源使用计划中的设置分配资源,当WINDOW 关闭时,系统会自动切换回适当资源计划。这个参数在执行过程时甚至可以指定为NULL 或空值'',当设置为NULL 时,就表示使用默认的资源计划,当设置为空值''时,表示禁用资源使用计划。
(2) Duration:指定WINDOW 的有效期,比如说指定为interval '5' hour 就表示5 个小时,该参数在执行过程时必须指定参数值,否则创建会报错。
(3) Window_priority:该参数用来指定WINDOW 的优先级。因为在相同时间只有一个WINDOW 有效,因此如果在创建WINDOW 时发现重叠的情况,ORACLE 就需要根据这一参数指定的规则,来确定优先级,说白了就是先把资源给谁用,这一参数有两个可选值:HIGH 或LOW,默认值为LOW。
SQL> begin
dbms_scheduler.create_window(
window_name => 'my_first_wd1',
resource_plan => null,
start_date => sysdate,
repeat_interval => 'FREQ=DAILY; INTERVAL=5',
duration => interval '1' hour);
end;
/
PL/SQL procedure successfully completed.
查询当前拥有的WINDOW,可以通过*_SCHEDULER_WINDOWS视图(注意只有DBA 和ALL,没有USER,因为所有定义的WINDOW 都属于SYS 用户)。除了*_SCHEDULER_WINDOWS 视图显示当前所有WINDOW外,还有:
(1) *_SCHEDULER_WINDOW_DETAILS 视图:显示WINDOW 的详细信息;
(2) *_SCHEDULER_WINDOW_LOG 视图:显示WINDOW 的日志,比如打开和关闭;
2、管理Window
修改对象属性,使用SET_ATTRIBUTE 过程;
SQL> exec dbms_scheduler.set_attribute('sys.my_first_wd1','start_date',sysdate 1);
PL/SQL procedure successfully completed.
ENABLE 对象,使用ENABLE 过程;
SQL> exec dbms_scheduler.enable('sys.my_first_wd1');
PL/SQL procedure successfully completed.
DISABLE 对象,使用DISABLE 过程;
SQL> exec dbms_scheduler.disable('sys.my_first_wd1');
PL/SQL procedure successfully completed.
删除对象,使用DROP_WINDOW 过程;
SQL> exec dbms_scheduler.drop_window('sys.my_first_wd1');
PL/SQL procedure successfully completed.
SQL> exec dbms_scheduler.open_window('sys.my_first_wd1',interval '1' hour);;
PL/SQL procedure successfully completed.
手动关闭WINDOW,使用CLOSE_WINDOW 过程;
SQL> exec dbms_scheduler.close_window('sys.my_first_wd1');
PL/SQL procedure successfully completed.
3、关于WINDOWGROUP
WINDOW GROUP 的创建和管理与前面介绍的方式极其相似:
(1)创建,使用CREATE_WINDOW_GROUP 过程;
(2) 删除,使用DROP_WINDOW_GROUP 过程;
(3) 添加WINDOW 成员,使用ADD_WINDOW_GROUP_MEMBER 过程;
(4) 删除WINDOW 成员,使用REMOVE_WINDOW_GROUP_MEMBER 过程;
(5) 启用,使用ENABLE 过程;
(6) 禁用,使用DISABLE 过程;
转自:http://blog.csdn.net/tianlesoftware/article/details/4715218