Skip to content
pg_dbms_job

pg_dbms_job

pg_dbms_job : Extension to add Oracle DBMS_JOB full compatibility to PostgreSQL

Overview

IDExtensionPackageVersionCategoryLicenseLanguage
9260
pg_dbms_job
pg_dbms_job
2.0
SIM
PostgreSQL
C
AttributeHas BinaryHas LibraryNeed LoadHas DDLRelocatableTrusted
--sLd--
No
Yes
Yes
Yes
no
no
Relationships
Schemasdbms_job
See Also
pg_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.

Packages

TypeRepoVersionPG Major CompatibilityPackage PatternDependencies
EXT
MIXED
2.0
18
17
16
15
14
pg_dbms_job-
RPM
PGDG
2.0
18
17
16
15
14
pg_dbms_job_$v-
DEB
PIGSTY
2.0
18
17
16
15
14
postgresql-$v-pg-dbms-joblibpq5
Linux / PGPG18PG17PG16PG15PG14
el8.x86_64
PGDG 2.0
PGDG 2.0
PGDG 2.0
PGDG 2.0
PGDG 2.0
el8.aarch64
PGDG 2.0
PGDG 2.0
PGDG 2.0
PGDG 2.0
PGDG 2.0
el9.x86_64
PGDG 2.0
PGDG 2.0
PGDG 2.0
PGDG 2.0
PGDG 2.0
el9.aarch64
PGDG 2.0
PGDG 2.0
PGDG 2.0
PGDG 2.0
PGDG 2.0
el10.x86_64
PGDG 2.0
PGDG 2.0
PGDG 2.0
PGDG 2.0
PGDG 2.0
el10.aarch64
PGDG 2.0
PGDG 2.0
PGDG 2.0
PGDG 2.0
PGDG 2.0
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
PackageVersionOSORGSIZEFile URL
pg_dbms_job_182.0el8.x86_64pgdg31.3 KiBpg_dbms_job_18-2.0-1PGDG.rhel8.10.x86_64.rpm
pg_dbms_job_181.5el8.x86_64pgdg26.8 KiBpg_dbms_job_18-1.5-5PGDG.rhel8.x86_64.rpm
pg_dbms_job_182.0el8.aarch64pgdg30.7 KiBpg_dbms_job_18-2.0-1PGDG.rhel8.10.aarch64.rpm
pg_dbms_job_181.5el8.aarch64pgdg26.7 KiBpg_dbms_job_18-1.5-5PGDG.rhel8.aarch64.rpm
pg_dbms_job_182.0el9.x86_64pgdg31.0 KiBpg_dbms_job_18-2.0-1PGDG.rhel9.8.x86_64.rpm
pg_dbms_job_182.0el9.x86_64pgdg30.9 KiBpg_dbms_job_18-2.0-1PGDG.rhel9.7.x86_64.rpm
pg_dbms_job_182.0el9.x86_64pgdg31.1 KiBpg_dbms_job_18-2.0-1PGDG.rhel9.6.x86_64.rpm
pg_dbms_job_181.5el9.x86_64pgdg26.0 KiBpg_dbms_job_18-1.5-5PGDG.rhel9.x86_64.rpm
pg_dbms_job_182.0el9.aarch64pgdg30.2 KiBpg_dbms_job_18-2.0-1PGDG.rhel9.8.aarch64.rpm
pg_dbms_job_182.0el9.aarch64pgdg30.2 KiBpg_dbms_job_18-2.0-1PGDG.rhel9.7.aarch64.rpm
pg_dbms_job_182.0el9.aarch64pgdg30.4 KiBpg_dbms_job_18-2.0-1PGDG.rhel9.6.aarch64.rpm
pg_dbms_job_181.5el9.aarch64pgdg26.0 KiBpg_dbms_job_18-1.5-5PGDG.rhel9.aarch64.rpm
pg_dbms_job_182.0el10.x86_64pgdg31.2 KiBpg_dbms_job_18-2.0-1PGDG.rhel10.2.x86_64.rpm
pg_dbms_job_182.0el10.x86_64pgdg31.2 KiBpg_dbms_job_18-2.0-1PGDG.rhel10.1.x86_64.rpm
pg_dbms_job_182.0el10.x86_64pgdg31.6 KiBpg_dbms_job_18-2.0-1PGDG.rhel10.0.x86_64.rpm
pg_dbms_job_181.5el10.x86_64pgdg26.6 KiBpg_dbms_job_18-1.5-5PGDG.rhel10.x86_64.rpm
pg_dbms_job_182.0el10.aarch64pgdg30.6 KiBpg_dbms_job_18-2.0-1PGDG.rhel10.2.aarch64.rpm
pg_dbms_job_182.0el10.aarch64pgdg30.6 KiBpg_dbms_job_18-2.0-1PGDG.rhel10.1.aarch64.rpm
pg_dbms_job_182.0el10.aarch64pgdg30.6 KiBpg_dbms_job_18-2.0-1PGDG.rhel10.0.aarch64.rpm
pg_dbms_job_181.5el10.aarch64pgdg26.6 KiBpg_dbms_job_18-1.5-5PGDG.rhel10.aarch64.rpm
postgresql-18-pg-dbms-job2.0d12.x86_64pigsty46.6 KiBpostgresql-18-pg-dbms-job_2.0-1PIGSTY~bookworm_amd64.deb
postgresql-18-pg-dbms-job2.0d12.aarch64pigsty45.7 KiBpostgresql-18-pg-dbms-job_2.0-1PIGSTY~bookworm_arm64.deb
postgresql-18-pg-dbms-job2.0d13.x86_64pigsty46.4 KiBpostgresql-18-pg-dbms-job_2.0-1PIGSTY~trixie_amd64.deb
postgresql-18-pg-dbms-job2.0d13.aarch64pigsty45.6 KiBpostgresql-18-pg-dbms-job_2.0-1PIGSTY~trixie_arm64.deb
postgresql-18-pg-dbms-job2.0u22.x86_64pigsty49.2 KiBpostgresql-18-pg-dbms-job_2.0-1PIGSTY~jammy_amd64.deb
postgresql-18-pg-dbms-job2.0u22.aarch64pigsty48.2 KiBpostgresql-18-pg-dbms-job_2.0-1PIGSTY~jammy_arm64.deb
postgresql-18-pg-dbms-job2.0u24.x86_64pigsty48.2 KiBpostgresql-18-pg-dbms-job_2.0-1PIGSTY~noble_amd64.deb
postgresql-18-pg-dbms-job2.0u24.aarch64pigsty47.2 KiBpostgresql-18-pg-dbms-job_2.0-1PIGSTY~noble_arm64.deb
postgresql-18-pg-dbms-job2.0u26.x86_64pigsty48.1 KiBpostgresql-18-pg-dbms-job_2.0-1PIGSTY~resolute_amd64.deb
postgresql-18-pg-dbms-job2.0u26.aarch64pigsty47.4 KiBpostgresql-18-pg-dbms-job_2.0-1PIGSTY~resolute_arm64.deb

Source

pig build pkg pg_dbms_job;		# build deb

Install

Make sure PGDG and PIGSTY repo available:

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

Install this extension with pig:

pig install pg_dbms_job;		# install via package name, for the active PG version

pig install pg_dbms_job -v 18;   # install for PG 18
pig install pg_dbms_job -v 17;   # install for PG 17
pig install pg_dbms_job -v 16;   # install for PG 16
pig install pg_dbms_job -v 15;   # install for PG 15
pig install pg_dbms_job -v 14;   # install for PG 14

Config this extension to shared_preload_libraries:

shared_preload_libraries = 'pg_dbms_job';

Create this extension with:

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 updated on