Skip to content
pg_dbms_job

pg_dbms_job

pg_dbms_job : Extension to add Oracle DBMS_JOB full compatibility to PostgreSQL

Overview

ID Extension Package Version Category License Language
9260
pg_dbms_job
pg_dbms_job
2.0
SIM
PostgreSQL
C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--sLd--
No
Yes
Yes
Yes
no
no
Relationships
Schemas dbms_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

Type Repo Version PG Major Compatibility Package Pattern Dependencies
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-job libpq5
Linux / PG PG18 PG17 PG16 PG15 PG14
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
Package Version OS ORG SIZE File URL
pg_dbms_job_18 2.0 el8.x86_64 pgdg 31.3 KiB pg_dbms_job_18-2.0-1PGDG.rhel8.10.x86_64.rpm
pg_dbms_job_18 1.5 el8.x86_64 pgdg 26.8 KiB pg_dbms_job_18-1.5-5PGDG.rhel8.x86_64.rpm
pg_dbms_job_18 2.0 el8.aarch64 pgdg 30.7 KiB pg_dbms_job_18-2.0-1PGDG.rhel8.10.aarch64.rpm
pg_dbms_job_18 1.5 el8.aarch64 pgdg 26.7 KiB pg_dbms_job_18-1.5-5PGDG.rhel8.aarch64.rpm
pg_dbms_job_18 2.0 el9.x86_64 pgdg 31.0 KiB pg_dbms_job_18-2.0-1PGDG.rhel9.8.x86_64.rpm
pg_dbms_job_18 2.0 el9.x86_64 pgdg 30.9 KiB pg_dbms_job_18-2.0-1PGDG.rhel9.7.x86_64.rpm
pg_dbms_job_18 2.0 el9.x86_64 pgdg 31.1 KiB pg_dbms_job_18-2.0-1PGDG.rhel9.6.x86_64.rpm
pg_dbms_job_18 1.5 el9.x86_64 pgdg 26.0 KiB pg_dbms_job_18-1.5-5PGDG.rhel9.x86_64.rpm
pg_dbms_job_18 2.0 el9.aarch64 pgdg 30.2 KiB pg_dbms_job_18-2.0-1PGDG.rhel9.8.aarch64.rpm
pg_dbms_job_18 2.0 el9.aarch64 pgdg 30.2 KiB pg_dbms_job_18-2.0-1PGDG.rhel9.7.aarch64.rpm
pg_dbms_job_18 2.0 el9.aarch64 pgdg 30.4 KiB pg_dbms_job_18-2.0-1PGDG.rhel9.6.aarch64.rpm
pg_dbms_job_18 1.5 el9.aarch64 pgdg 26.0 KiB pg_dbms_job_18-1.5-5PGDG.rhel9.aarch64.rpm
pg_dbms_job_18 2.0 el10.x86_64 pgdg 31.2 KiB pg_dbms_job_18-2.0-1PGDG.rhel10.2.x86_64.rpm
pg_dbms_job_18 2.0 el10.x86_64 pgdg 31.2 KiB pg_dbms_job_18-2.0-1PGDG.rhel10.1.x86_64.rpm
pg_dbms_job_18 2.0 el10.x86_64 pgdg 31.6 KiB pg_dbms_job_18-2.0-1PGDG.rhel10.0.x86_64.rpm
pg_dbms_job_18 1.5 el10.x86_64 pgdg 26.6 KiB pg_dbms_job_18-1.5-5PGDG.rhel10.x86_64.rpm
pg_dbms_job_18 2.0 el10.aarch64 pgdg 30.6 KiB pg_dbms_job_18-2.0-1PGDG.rhel10.2.aarch64.rpm
pg_dbms_job_18 2.0 el10.aarch64 pgdg 30.6 KiB pg_dbms_job_18-2.0-1PGDG.rhel10.1.aarch64.rpm
pg_dbms_job_18 2.0 el10.aarch64 pgdg 30.6 KiB pg_dbms_job_18-2.0-1PGDG.rhel10.0.aarch64.rpm
pg_dbms_job_18 1.5 el10.aarch64 pgdg 26.6 KiB pg_dbms_job_18-1.5-5PGDG.rhel10.aarch64.rpm
postgresql-18-pg-dbms-job 2.0 d12.x86_64 pigsty 46.6 KiB postgresql-18-pg-dbms-job_2.0-1PIGSTY~bookworm_amd64.deb
postgresql-18-pg-dbms-job 2.0 d12.aarch64 pigsty 45.7 KiB postgresql-18-pg-dbms-job_2.0-1PIGSTY~bookworm_arm64.deb
postgresql-18-pg-dbms-job 2.0 d13.x86_64 pigsty 46.4 KiB postgresql-18-pg-dbms-job_2.0-1PIGSTY~trixie_amd64.deb
postgresql-18-pg-dbms-job 2.0 d13.aarch64 pigsty 45.6 KiB postgresql-18-pg-dbms-job_2.0-1PIGSTY~trixie_arm64.deb
postgresql-18-pg-dbms-job 2.0 u22.x86_64 pigsty 49.2 KiB postgresql-18-pg-dbms-job_2.0-1PIGSTY~jammy_amd64.deb
postgresql-18-pg-dbms-job 2.0 u22.aarch64 pigsty 48.2 KiB postgresql-18-pg-dbms-job_2.0-1PIGSTY~jammy_arm64.deb
postgresql-18-pg-dbms-job 2.0 u24.x86_64 pigsty 48.2 KiB postgresql-18-pg-dbms-job_2.0-1PIGSTY~noble_amd64.deb
postgresql-18-pg-dbms-job 2.0 u24.aarch64 pigsty 47.2 KiB postgresql-18-pg-dbms-job_2.0-1PIGSTY~noble_arm64.deb
postgresql-18-pg-dbms-job 2.0 u26.x86_64 pigsty 48.1 KiB postgresql-18-pg-dbms-job_2.0-1PIGSTY~resolute_amd64.deb
postgresql-18-pg-dbms-job 2.0 u26.aarch64 pigsty 47.4 KiB postgresql-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