Você pode implementá-lo da seguinte maneira: O programa de job do planejador é implementado como loop infinito - sem falha. Esse loop retira mensagens do AQ e as processa. O trabalho do agendador é submetido apenas uma vez - do sistema de eventos até mesmo aciona AFTER STARTUP ON DATABASE
.
Ele não usa nenhuma cadeia do agendador nem nenhuma outra opção avançada do agendador. Simplesmente o trabalho do agendador é disparado pelo gatilho quando o banco de dados é exibido, o trabalho "nunca termina" .
Mas acho que o dbms_scheduler é muito poderoso hoje em dia e existem maneiras de limitar execuções paralelas para um cronograma.
PS: ORA-20000 é um código de erro definido pelo usuário. O banco de dados nunca retorna esse erro por conta própria.