Rem drv:
Rem
Rem $Header: jobs_data_upgrade.sql 18-jun-2007.05:05:59 lsatyapr Exp $
Rem
Rem jobs_data_upgrade.sql
Rem
Rem Copyright (c) 2006, 2007, Oracle. All rights reserved.
Rem
Rem NAME
Rem jobs_data_upgrade.sql -
Rem
Rem DESCRIPTION
Rem
Rem
Rem NOTES
Rem
Rem
Rem MODIFIED (MM/DD/YY)
Rem lsatyapr 06/18/07 - Backport lsatyapr_bug-6122107 from main
Rem lsatyapr 10/24/06 - Backport lsatyapr_bug-5597503 from main
Rem lsatyapr 06/14/07 - Bug6122107 Performance of schedule upgrade
Rem lsatyapr 10/12/06 - Add delete_target exception (Bug 5597503)
Rem kmanicka 05/23/06 - Created
Rem
-- convert interval schedule to daily schedule bug 5126621
DECLARE
l_schedule MGMT_JOB_SCHEDULE_RECORD;
l_targets MGMT_JOB_TARGET_LIST := NULL;
l_count INTEGER := 0;
l_commit_freq INTEGER;
FUNCTION get_commit_frequency RETURN INTEGER IS
l_freq INTEGER := 50000;
BEGIN
SELECT parameter_value INTO l_freq
FROM MGMT_PARAMETERS
WHERE parameter_name = 'job_schedule_upgrade_batchsize' ;
RETURN l_freq;
EXCEPTION
WHEN OTHERS THEN
RETURN l_freq;
END;
BEGIN
l_commit_freq := get_commit_frequency;
-- The below query is fairly sub-optimal because of full table scans. Hence
-- we try to filter out as much as possible. Luckily, edit_job does not
-- allow schedule to be edited for CAs or expired jobs.
FOR c IN (SELECT /*+ USE_MERGE(MGMT_JOB_SCHEDULE MGMT_JOB) */
s.start_time, s.end_time, s.start_grace_period,
s.execution_hours, s.execution_minutes,
s.interval, s.months, s.days,
s.timezone_info, s.timezone_target_index,
s.timezone_offset, s.timezone_region, j.job_id
FROM MGMT_JOB_SCHEDULE s, MGMT_JOB j
WHERE s.schedule_id = j.schedule_id
AND j.expired = 0
AND j.nested = 0
AND j.is_corrective_action = 0
AND j.job_status != MGMT_JOB_ENGINE.JOB_STATUS_STOPPED
AND s.frequency_code = MGMT_JOB_ENGINE.INTERVAL_FREQUENCY_CODE
AND MOD(s.interval, 24*60) = 0)
LOOP
l_schedule := MGMT_JOB_SCHEDULE_RECORD(
MGMT_JOB_ENGINE.DAILY_FREQUENCY_CODE,
c.start_time, c.end_time, c.start_grace_period,
c.execution_hours, c.execution_minutes,
TRUNC(c.interval/(24*60)), c.months, c.days,
c.timezone_info, c.timezone_target_index,
c.timezone_offset, c.timezone_region);
MGMT_JOB_ENGINE.edit_job(c.job_id, null, null, l_targets, l_schedule);
l_count := l_count + 1;
-- commit every l_commit_freq entries
IF l_count = l_commit_freq THEN
COMMIT;
l_count := 0;
END IF;
END LOOP;
IF l_count != l_commit_freq THEN
COMMIT;
END IF;
END;
/
DECLARE
dummy INTEGER;
BEGIN
SELECT count(1) INTO dummy
FROM MGMT_TARGET_DELETE_EXCEPTIONS
WHERE table_name='MGMT_JOB_EXEC_SUMMARY';
IF dummy = 0 THEN
INSERT INTO MGMT_TARGET_DELETE_EXCEPTIONS (table_name)
VALUES ('MGMT_JOB_EXEC_SUMMARY');
COMMIT;
END IF;
END;
/