pg_dbms_job

Extension to add Oracle DBMS_JOB full compatibility to PostgreSQL

Overview

PackageVersionCategoryLicenseLanguage
pg_dbms_job2.0SIMPostgreSQLC
IDExtensionBinLibLoadCreateTrustRelocSchema
9260pg_dbms_jobNoYesYesYesNoNodbms_job
Relatedpg_cron pg_task pg_dbms_metadata pg_dbms_lock pgagent pg_jobmon oracle_fdw orafce

Background worker; requires shared_preload_libraries=pg_dbms_job and restart. Worker connections also require valid database, user, and authentication settings.

Version

TypeRepoVersionPG VerPackageDeps
EXTMIXED2.01817161514pg_dbms_job-
RPMPGDG2.01817161514pg_dbms_job_$v-
DEBPIGSTY2.01817161514postgresql-$v-pg-dbms-joblibpq5
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
d12.aarch64
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
d13.x86_64
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
d13.aarch64
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
u22.x86_64
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
u22.aarch64
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
u24.x86_64
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
u24.aarch64
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
u26.x86_64
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
u26.aarch64
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0
PIGSTY 2.0

Build

You can build the DEB packages for pg_dbms_job using pig build:

pig build pkg pg_dbms_job         # build DEB packages

Install

You can install pg_dbms_job directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:

pig repo add pgsql -u          # Add repo and update cache

Install the extension using pig or apt/yum/dnf:

pig install pg_dbms_job;          # Install for current active PG version
pig ext install -y pg_dbms_job -v 18  # PG 18
pig ext install -y pg_dbms_job -v 17  # PG 17
pig ext install -y pg_dbms_job -v 16  # PG 16
pig ext install -y pg_dbms_job -v 15  # PG 15
pig ext install -y pg_dbms_job -v 14  # PG 14
dnf install -y pg_dbms_job_18       # PG 18
dnf install -y pg_dbms_job_17       # PG 17
dnf install -y pg_dbms_job_16       # PG 16
dnf install -y pg_dbms_job_15       # PG 15
dnf install -y pg_dbms_job_14       # PG 14
apt install -y postgresql-18-pg-dbms-job   # PG 18
apt install -y postgresql-17-pg-dbms-job   # PG 17
apt install -y postgresql-16-pg-dbms-job   # PG 16
apt install -y postgresql-15-pg-dbms-job   # PG 15
apt install -y postgresql-14-pg-dbms-job   # PG 14

Preload:

shared_preload_libraries = 'pg_dbms_job';

Create Extension:

CREATE EXTENSION pg_dbms_job;

Usage

pg_dbms_job: Extension to add Oracle DBMS_JOB full compatibility to PostgreSQL

Enabling

CREATE EXTENSION pg_dbms_job;

A dedicated scheduler daemon must be running per database:

pg_dbms_job -c /etc/pg_dbms_job/mydb-dbms_job.conf

SUBMIT - Schedule a Job

BEGIN;
-- Scheduled job: run a procedure every day
CALL dbms_job.submit(
    job       => jobid,
    what      => 'CALL my_procedure();',
    next_date => current_timestamp + interval '1 minute',
    interval  => 'current_timestamp + ''1 day''::interval'
);
COMMIT;

When next_date and interval are omitted, the job executes immediately and asynchronously.

BROKEN - Disable/Enable a Job

BEGIN;
CALL dbms_job.broken(12345, true);   -- disable job
CALL dbms_job.broken(12345, false);  -- re-enable job
COMMIT;

CHANGE - Modify a Job

BEGIN;
CALL dbms_job.change(12345, null, null, 'current_timestamp + ''3 days''::interval');
COMMIT;

INTERVAL - Change Execution Interval

BEGIN;
CALL dbms_job.interval(12345, 'current_timestamp + ''1 hour''::interval');
COMMIT;

NEXT_DATE - Change Next Execution Date

BEGIN;
CALL dbms_job.next_date(12345, current_timestamp + interval '30 minutes');
COMMIT;

WHAT - Change Job Code

BEGIN;
CALL dbms_job.what(12345, 'CALL new_procedure();');
COMMIT;

REMOVE - Delete a Job

BEGIN;
CALL dbms_job.remove(12345);
COMMIT;

RUN - Execute Immediately

CALL dbms_job.run(12345);

Viewing Jobs

SELECT * FROM dbms_job.all_jobs;

Execution History

SELECT * FROM dbms_job.all_scheduler_job_run_details;

Last Modified 2026-07-23: update extension list to 555 (d81fc56)