CONN / AS SYSDBA
ALTER SESSION SET CONTAINER = pdb1;
GRANT EXECUTE ON DBMS_LOCK TO test;
CONN test/test@pdb1
BEGIN
DBMS_SCHEDULER.create_program(
program_name => 'my_program_1',
program_type => 'PLSQL_BLOCK',
program_action => 'BEGIN DBMS_LOCK.sleep(600); END;',
enabled => TRUE);
END;
/
BEGIN
DBMS_SCHEDULER.create_job (
job_name => 'my_job_1',
program_name => 'my_program_1',
start_date => SYSTIMESTAMP,
repeat_interval => 'freq=hourly; byminute=0; bysecond=0;',
enabled => TRUE);
END;
/
BEGIN
DBMS_SCHEDULER.create_program(
program_name => 'my_program_2',
program_type => 'PLSQL_BLOCK',
program_action => 'BEGIN DBMS_LOCK.sleep(600); END;',
enabled => TRUE);
END;
/
BEGIN
DBMS_SCHEDULER.create_job (
job_name => 'my_job_2',
program_name => 'my_program_2',
start_date => SYSTIMESTAMP,
repeat_interval => 'freq=hourly; byminute=5; bysecond=0;',
enabled => TRUE);
END;
/
BEGIN
DBMS_SCHEDULER.create_program(
program_name => 'my_program_3',
program_type => 'PLSQL_BLOCK',
program_action => 'BEGIN DBMS_LOCK.sleep(600); END;',
enabled => TRUE);
END;
/
BEGIN
DBMS_SCHEDULER.create_job (
job_name => 'my_job_3',
program_name => 'my_program_3',
start_date => SYSTIMESTAMP,
repeat_interval => 'freq=hourly; byminute=10; bysecond=0;',
enabled => TRUE);
END;
/
BEGIN
DBMS_SCHEDULER.create_incompatibility(
incompatibility_name => 'my_prog_incomp_def',
object_name => 'my_program_1,my_program_2',
constraint_level => 'PROGRAM_LEVEL',
enabled => true);
END;
/
BEGIN
DBMS_SCHEDULER.create_incompatibility(
incompatibility_name => 'my_job_incomp_def',
object_name => 'my_job_1,my_job_2',
constraint_level => 'JOB_LEVEL', -- Default
enabled => true);
END;
/
-- Program-level.
BEGIN
DBMS_SCHEDULER.add_to_incompatibility(
incompatibility_name => 'my_prog_incomp_def',
object_name => 'my_program_2,my_program_3');
END;
/
BEGIN
DBMS_SCHEDULER.remove_from_incompatibility(
incompatibility_name => 'my_prog_incomp_def',
object_name => 'my_program_3');
END;
/
-- Job-level.
BEGIN
DBMS_SCHEDULER.add_to_incompatibility(
incompatibility_name => 'my_job_incomp_def',
object_name => 'my_job_2,my_job_3');
END;
/
BEGIN
DBMS_SCHEDULER.remove_from_incompatibility(
incompatibility_name => 'my_job_incomp_def',
object_name => 'my_job_3');
END;
/
COLUMN incompatibility_name FORMAT A30
SELECT incompatibility_name,
constraint_level,
enabled,
jobs_running_count
FROM user_scheduler_incompats
ORDER BY 1;
INCOMPATIBILITY_NAME CONSTRAINT_LE ENABL JOBS_RUNNING_COUNT
------------------------------ ------------- ----- ------------------
MY_JOB_INCOMP_DEF JOB_LEVEL YES 0
MY_PROG_INCOMP_DEF PROGRAM_LEVEL YES 0
SQL>
SET LINESIZE 100
COLUMN incompatibility_owner FORMAT A20
COLUMN incompatibility_name FORMAT A20
COLUMN object_owner FORMAT A20
COLUMN object_name FORMAT A20
SELECT incompatibility_owner,
incompatibility_name,
object_owner,
object_name
FROM user_scheduler_incompat_member
ORDER BY 1,2,3,4;
INCOMPATIBILITY_OWNE INCOMPATIBILITY_NAME OBJECT_OWNER OBJECT_NAME
-------------------- -------------------- -------------------- --------------------
TEST MY_JOB_INCOMP_DEF TEST MY_JOB_1
TEST MY_JOB_INCOMP_DEF TEST MY_JOB_2
TEST MY_PROG_INCOMP_DEF TEST MY_PROGRAM_1
TEST MY_PROG_INCOMP_DEF TEST MY_PROGRAM_2
SQL>
BEGIN
DBMS_SCHEDULER.drop_incompatibility(
incompatibility_name => 'my_prog_incomp_def');
END;
/
BEGIN
DBMS_SCHEDULER.drop_incompatibility(
incompatibility_name => 'my_job_incomp_def');
END;
/
EXEC DBMS_SCHEDULER.drop_job('my_job_1', force => TRUE);
EXEC DBMS_SCHEDULER.drop_job('my_job_2', force => TRUE);
EXEC DBMS_SCHEDULER.drop_job('my_job_3', force => TRUE);
EXEC DBMS_SCHEDULER.drop_program('my_program_1');
EXEC DBMS_SCHEDULER.drop_program('my_program_2');
EXEC DBMS_SCHEDULER.drop_program('my_program_3');