本地postgresql的pgAgent定时远程服务器的执行脚本

**目的:**由于正式环境服务是由dba运维部署在liunx服务器,现场实施人员无法进行调整,一旦进行调整会影响业务正常运转,需要DBA人员参与进来进行调整,如果想要自己解决,可参考次操作方案。
**步骤一:**先在本地服务器(windows)上安装pgsql,安装时会默认部署pgadmin。可通过pgadmin客户端访问本地和远程数据。
**步骤二:**安装完毕之后可在windows开始里面找到次软件,
在这里插入图片描述
选择安装要安装的定时组件,进行下一步直到安装成功
在这里插入图片描述
在这里插入图片描述
在pgadmin工具中就能看到pgAgent的定时组件
在这里插入图片描述

步骤三在远程数据库有个存储需要定时执行,存储名为 t_test(),存储内容就是往表里插入数据,代码如下

CREATE OR REPLACE PROCEDURE  p_test()
 AS $BODY$
declare  --声明
begin
insert into t_test (a,b) VALUES('123','234');
insert into t_test (a,b) VALUES('123','234');
  ----异常处理
exception
    when others then
		RAISE EXCEPTION '%',SQLERRM;	
		end 
$BODY$
  LANGUAGE plpgsql

需要将此语法在本地数据库进行定时运行,此时就要创一个dblink来实现了,语法为

CREATE VIEW people_nikename_view AS 
select * from dblink('hostaddr=远程数据库IP port=端口 dbname=数据库名 user=用户名password=密码','call p_test()') AS testTable ("a" VARCHAR);

此时在本地数据可就可以看到创建的dblink
在这里插入图片描述
在本地数据select *from people_nikename_view视图,就能实现远程桌面的t_test()存储执行实现数据插入,远程数据库结果,可以看到数据已经写入到远程数据库里,那么就差配置调度,实现实时调度了。
在这里插入图片描述
步骤四:使用agAgent实现本地调度dblink执行远程存储过程,
1.创建新的调度名称
在这里插入图片描述
2.配置调度脚本,选择要执行sql的用户,并配置执行脚本
在这里插入图片描述
在这里插入图片描述
3.设置调度时间,可具体到几点几分,执行范围和循环执行时间
在这里插入图片描述
在这里插入图片描述
这里配置的下午2点45分,可以看到执行日志
在这里插入图片描述
或者查询
select * from pg_extension;--查询日志在这里插入图片描述
这是在查看远程数据库也是可以正常写入数据的。

注:
Dblink常用语法

--常规使用
select * from dblink('hostaddr=192.168.0.105 port=5432 dbname=yjtBackstagePermissions user=postgres password=123456','select "NikeName" from "People"') AS testTable ("NikeName" VARCHAR);
--如果不只是查询数据,而是需要修改数据库数据的情况下怎么弄呢?
 - 先执行dblink_connect保持连接
 SELECT dblink_connect('mycoon','hostaddr=192.168.0.105 port=5432 dbname=yjtBackstagePermissions user=postgres password=123456');
 - 执行BEGIN命令
 SELECT dblink_exec('mycoon', 'BEGIN');
 - 执行数据操作(update,insert,create等命令)
 SELECT dblink_exec('mycoon', 'insert into tb1 select generate_series(10,20),''hello''');
 SELECT dblink_exec('mycoon', 'insert into people(username,nikename) values ("张三","小三") ');
 - 执行事务提交
 SELECT dblink_exec('mycoon', 'COMMIT');
 - 解除连接
 SELECT dblink_disconnect('mycoon');

=查询定时器执行日志=

pgAgent的相关表都位于postgresql/pgAgent下。
pga_exception : 记录作业执行异常信息
pga_job: 作业定义的基本信息,作业起止时间,最后运行时间等
pga_jobagent:pgAgent的配置信息,服务器上pgAgent的地址和启动时间
pga_jobclass: pgAgent的配置信息,定义作业类型
pga_joblog:每个作业的运行日志,包含启动时间、执行时长。
pga_jobstep:每个job步骤的定义在这个表里。
pga_jobsteplog:每个job步骤的执行日志,包含步骤的开始时间,执行时长。
pga_schedule:job调度的定义在这个表里。
一般执行:select * from pga_jobsteplog即可
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值