ORA-24155 - Why am I getting this error when creating a chain rule When trying to create a new chain rule, I receive ORA-24155 stating that the the rule I'm trying to create is not in the ruleset which doesn't make sense.

I stop and drop all jobs/chains and then attempt to create one.  Are chain rule names shared with all chains?  Should I use a dynamic name instead of "StartChain".  Only guessing.  Any idea?

-- Stop Job
BEGIN
  sys.dbms_scheduler.stop_job(job_name =&gt; l_job_name);
EXCEPTION
  when job_not_running then null; -- dont care, continue
  when job_doesnt_exist then null; -- dont care, continue
END;

-- Drop Job
BEGIN
  sys.dbms_scheduler.drop_job(job_name =&gt; l_job_name);
EXCEPTION when job_doesnt_exist then null; -- dont care, continue
END;

-- Drop Chain
BEGIN
  sys.dbms_scheduler.drop_chain(chain_name =&gt; l_chain_name);
EXCEPTION when chain_doesnt_exist then null; -- dont care, continue
END;

-- Create chain
sys.dbms_scheduler.create_chain(chain_name          =&gt; l_chain_name,
                                rule_set_name       =&gt; NULL,
                                comments            =&gt; '');

sys.dbms_scheduler.define_chain_rule(chain_name =&gt; l_chain_name,
                                     rule_name  =&gt; '"StartChain"',
                                     condition  =&gt; 'True',
                                     action     =&gt; 'START "Step 1 - Build Bio"',
                                     comments   =&gt; '');
I never did find a "proper" way to resolve this, but I was able to fix by:

select * from sys.scheduler$_job for update -- manually remove a running job
-- Delete the job from this table

The job kicked off and then the machine was rebooted in the middle of the job.

Later, the job was deleted, but apparently the old ruleset still existed somewhere in the database even though there wasn't a record of the ruleset existing (EG: data was still there, but the meta saying it was there did not exist).  When I deleted the job object from the appropriate table, it gave me a different ruleset when I passed it "null" to the ruleset parameter.  I guess it was somehow pulling the old rule set and the name was being detected as a duplicate.