pg_dbms_job
添加 Oracle DBMS_JOB 兼容性支持的扩展
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_dbms_job | 2.0 | SIM | PostgreSQL | SQL |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 9260 | pg_dbms_job | 否 | 是 | 否 | 是 | 否 | 否 | dbms_job |
| 相关扩展 | pg_cron pg_task pg_dbms_metadata pg_dbms_lock pgagent pg_jobmon oracle_fdw orafce |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PGDG | 2.0 | 1817161514 | pg_dbms_job | - |
| RPM | PGDG | 2.0 | 1817161514 | pg_dbms_job_$v | - |
安装
您可以直接安装 pg_dbms_job 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:
pig repo add pgdg -u # 添加 PGDG 仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pg_dbms_job; # 当前活跃 PG 版本安装
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
创建扩展:
CREATE EXTENSION pg_dbms_job;
用法
启用
CREATE EXTENSION pg_dbms_job;
需要为每个数据库运行专用调度守护进程:
pg_dbms_job -c /etc/pg_dbms_job/mydb-dbms_job.conf
SUBMIT - 调度作业
BEGIN;
-- 调度作业:每天运行一个过程
CALL dbms_job.submit(
job => jobid,
what => 'CALL my_procedure();',
next_date => current_timestamp + interval '1 minute',
interval => 'current_timestamp + ''1 day''::interval'
);
COMMIT;
省略 next_date 和 interval 时,作业立即异步执行。
BROKEN - 禁用/启用作业
BEGIN;
CALL dbms_job.broken(12345, true); -- 禁用作业
CALL dbms_job.broken(12345, false); -- 重新启用作业
COMMIT;
CHANGE - 修改作业
BEGIN;
CALL dbms_job.change(12345, null, null, 'current_timestamp + ''3 days''::interval');
COMMIT;
INTERVAL - 更改执行间隔
BEGIN;
CALL dbms_job.interval(12345, 'current_timestamp + ''1 hour''::interval');
COMMIT;
NEXT_DATE - 更改下次执行日期
BEGIN;
CALL dbms_job.next_date(12345, current_timestamp + interval '30 minutes');
COMMIT;
WHAT - 更改作业代码
BEGIN;
CALL dbms_job.what(12345, 'CALL new_procedure();');
COMMIT;
REMOVE - 删除作业
BEGIN;
CALL dbms_job.remove(12345);
COMMIT;
RUN - 立即执行
CALL dbms_job.run(12345);
查看作业
SELECT * FROM dbms_job.all_jobs;
执行历史
SELECT * FROM dbms_job.all_scheduler_job_run_details;