هنگام ساخت پایگاه داده با استفاده از ابزار DBCA و انتخاب Template های از پیش ساخته شده ، منطقه زمانی Scheduler به صورت پیش فرض بر روی UTC -07:00 قرار میگیرد که منجر به اجرا شدن تمامی Maintenance Windows با منظقه زمانی Los Angeles میشود . همچنین در تقویم میلادی روز های شنبه و یکشنبه تعطیل میباشد لذا به طور پیش فرض در این دو روز Task های مربوط به Maintenance Windows منابع و زمان بیشتری را مورد استفاده قرار میدهند .
دستورات زیر شامل : تغییر منطقه زمانی به Asia/Tehran ، تغییر زمان شروع به ساعت 2 بامداد ، تغییر مدت زمان اجرا هر Task به 1 ساعت در Container(CDB$ROOT) میشود .
ALTER SESSION SET CONTAINER=CDB$ROOT;
BEGIN
--DISABLE WEEKEND AND WEEKNIGHT SCHEDULER
DBMS_SCHEDULER.DISABLE('WEEKNIGHT_WINDOW');
DBMS_SCHEDULER.DISABLE('WEEKEND_WINDOW');
--DISABLE SCHEDULER BEFORE CHANGING ATTRIBUTE
DBMS_SCHEDULER.DISABLE('SATURDAY_WINDOW');
DBMS_SCHEDULER.DISABLE('SUNDAY_WINDOW');
DBMS_SCHEDULER.DISABLE('MONDAY_WINDOW');
DBMS_SCHEDULER.DISABLE('TUESDAY_WINDOW');
DBMS_SCHEDULER.DISABLE('WEDNESDAY_WINDOW');
DBMS_SCHEDULER.DISABLE('THURSDAY_WINDOW');
DBMS_SCHEDULER.DISABLE('FRIDAY_WINDOW');
--CHANGE DEFUALT TIME ZONE FOR SCHEDULER
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE('DEFAULT_TIMEZONE', 'ASIA/TEHRAN');
--CHANGE START_TIME AND DURATION ATTRIBUTE
DBMS_SCHEDULER.SET_ATTRIBUTE(NAME => 'SATURDAY_WINDOW', ATTRIBUTE => 'DURATION', VALUE => NUMTODSINTERVAL(1, 'HOUR'));
DBMS_SCHEDULER.SET_ATTRIBUTE('SATURDAY_WINDOW', 'REPEAT_INTERVAL', 'FREQ=WEEKLY;BYDAY=SAT;BYHOUR=02;BYMINUTE=0;BYSECOND=0');
DBMS_SCHEDULER.SET_ATTRIBUTE(NAME => 'SUNDAY_WINDOW', ATTRIBUTE => 'DURATION', VALUE => NUMTODSINTERVAL(1, 'HOUR'));
DBMS_SCHEDULER.SET_ATTRIBUTE('SUNDAY_WINDOW', 'REPEAT_INTERVAL', 'FREQ=WEEKLY;BYDAY=SUN;BYHOUR=02;BYMINUTE=0;BYSECOND=0');
DBMS_SCHEDULER.SET_ATTRIBUTE(NAME => 'MONDAY_WINDOW', ATTRIBUTE => 'DURATION', VALUE => NUMTODSINTERVAL(1, 'HOUR'));
DBMS_SCHEDULER.SET_ATTRIBUTE('MONDAY_WINDOW', 'REPEAT_INTERVAL', 'FREQ=WEEKLY;BYDAY=MON;BYHOUR=02;BYMINUTE=0;BYSECOND=0');
DBMS_SCHEDULER.SET_ATTRIBUTE(NAME => 'TUESDAY_WINDOW', ATTRIBUTE => 'DURATION', VALUE => NUMTODSINTERVAL(1, 'HOUR'));
DBMS_SCHEDULER.SET_ATTRIBUTE('TUESDAY_WINDOW', 'REPEAT_INTERVAL', 'FREQ=WEEKLY;BYDAY=TUE;BYHOUR=02;BYMINUTE=0;BYSECOND=0');
DBMS_SCHEDULER.SET_ATTRIBUTE(NAME => 'WEDNESDAY_WINDOW', ATTRIBUTE => 'DURATION', VALUE => NUMTODSINTERVAL(1, 'HOUR'));
DBMS_SCHEDULER.SET_ATTRIBUTE('WEDNESDAY_WINDOW', 'REPEAT_INTERVAL', 'FREQ=WEEKLY;BYDAY=WED;BYHOUR=02;BYMINUTE=0;BYSECOND=0');
DBMS_SCHEDULER.SET_ATTRIBUTE(NAME => 'THURSDAY_WINDOW', ATTRIBUTE => 'DURATION', VALUE => NUMTODSINTERVAL(1, 'HOUR'));
DBMS_SCHEDULER.SET_ATTRIBUTE('THURSDAY_WINDOW', 'REPEAT_INTERVAL', 'FREQ=WEEKLY;BYDAY=THU;BYHOUR=02;BYMINUTE=0;BYSECOND=0');
DBMS_SCHEDULER.SET_ATTRIBUTE(NAME => 'FRIDAY_WINDOW', ATTRIBUTE => 'DURATION', VALUE => NUMTODSINTERVAL(1, 'HOUR'));
DBMS_SCHEDULER.SET_ATTRIBUTE('FRIDAY_WINDOW', 'REPEAT_INTERVAL', 'FREQ=WEEKLY;BYDAY=FRI;BYHOUR=02;BYMINUTE=0;BYSECOND=0');
--Enable Scheduler
DBMS_SCHEDULER.ENABLE('SATURDAY_WINDOW');
DBMS_SCHEDULER.ENABLE('SUNDAY_WINDOW');
DBMS_SCHEDULER.ENABLE('MONDAY_WINDOW');
DBMS_SCHEDULER.ENABLE('TUESDAY_WINDOW');
DBMS_SCHEDULER.ENABLE('WEDNESDAY_WINDOW');
DBMS_SCHEDULER.ENABLE('THURSDAY_WINDOW');
DBMS_SCHEDULER.ENABLE('FRIDAY_WINDOW');
END;
/