**目的:**由于正式环境服务是由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即可