EM13c: Is It Possible to Delete a Job Run with EMCLI?

Enterprise Manager Cloud Control provides a centralized job scheduling system and it’s possible to control it through both web interface and EMCLI. On the other hand, it seems web interface provides more control over the past jobs, for example it’s not possible to delete a job run with EMCLI, while it’s possible to do it on web interface:


EMCLI verb “get_jobs” reports all runs of the jobs, and “delete job” can delete job and its all runs but it’s not possible to delete a specific run of a job. For example, if you want to delete hundreds of “failed” (or “skipped”) runs of a job, EMCLI won’t help you and doing it through the web interface will be very time consuming.

So what is the solution? We need to make our hands dirty and call EM_JOB_OPS.delete_job_run procedure directly on the repository database.

Here’s a simple PL/SQL script to clean up failed jobs of a user:

Login to the Enterprise Manager repository database as SYSMAN, enter “job_owner” and “job_id” as bind variables. It will delete all failed runs of the job. You can query MGMT$JOB_EXECUTION_HISTORY view or use “emcli get_jobs” to learn the job owner and job ID information.

Please share

AWS Big Data Specialist. Oracle Certified Professional (OCP) for EBS R12, Oracle 10g and 11g. Co-author of "Expert Oracle Enterprise Manager 12c" book published by Apress. Awarded as Oracle ACE (in 2011) and Oracle ACE Director (in 2016) for the continuous contributions to the Oracle users community. Founding member, and vice president of Turkish Oracle User Group (TROUG). Presented at various international conferences including Oracle Open World.


  1. Paul

    I use it often now, but sometimes I get:
    ERROR at line 1:
    ORA-20403: The specified job does not exist or is not viewable
    ORA-06512: at “SYSMAN.EM_JOB_OPS”, line 2107
    ORA-06512: at line 9

    would you have any ideas on how to investigate this?

  2. Giuseppe

    Hi , try to add “distinct”
    FOR c IN
    (SELECT distinct job_id,scheduled_time
    WHERE 1=1
    and status=’Failed’
    and job_name like ‘%_ABC_%’
    and scheduled_time<sysdate-10
    EM_JOB_OPS.delete_job_run( c.job_id, c.scheduled_time );

Leave Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.