使用Postgresql自带的pgAgent,可以很方便地创建定时执行任务。现在网上的资料都比较旧,Postgresql版本更新得比较快,导致网上的一些教程都不合用了,现在我写分享一下自己的经验。
Postgresql的版本是 9.X
1.安装pgAgent。pgAgent在以前旧的版本是pgAdmin自带的,但新版本的pgAgent是需要通过Postgresql自带的Application Stack Builder这个软件来安装的。具体流程如下:
[![](http://static.oschina.net/uploads/space/2013/0503/172202_LlTL_94610.png)](http://static.oschina.net/uploads/space/2013/0503/172202_LlTL_94610.png)
[![](http://static.oschina.net/uploads/space/2013/0503/172233_ceXM_94610.png)](http://static.oschina.net/uploads/space/2013/0503/172233_ceXM_94610.png)
[![](http://static.oschina.net/uploads/space/2013/0503/172248_eekN_94610.png)](http://static.oschina.net/uploads/space/2013/0503/172248_eekN_94610.png)
[![](http://static.oschina.net/uploads/space/2013/0503/172304_bGxr_94610.png)](http://static.oschina.net/uploads/space/2013/0503/172304_bGxr_94610.png)
[![](http://static.oschina.net/uploads/space/2013/0503/172318_uRxU_94610.png)](http://static.oschina.net/uploads/space/2013/0503/172318_uRxU_94610.png)[![](http://static.oschina.net/uploads/space/2013/0503/172337_iJqX_94610.png)](http://static.oschina.net/uploads/space/2013/0503/172337_iJqX_94610.png)
[![](http://static.oschina.net/uploads/space/2013/0503/172352_SDSo_94610.png)](http://static.oschina.net/uploads/space/2013/0503/172352_SDSo_94610.png)
[![](http://static.oschina.net/uploads/space/2013/0503/172427_Vuth_94610.png)](http://static.oschina.net/uploads/space/2013/0503/172427_Vuth_94610.png)
[![](http://static.oschina.net/uploads/space/2013/0503/172444_l9bS_94610.png)](http://static.oschina.net/uploads/space/2013/0503/172444_l9bS_94610.png)
*在这里要填写Postgresql的postgres的用户名密码,或者具有操作postgres这个数据库权限的用户账号。因为pgAgent需要在postgres这个数据库里面创建相应的表,所以这里填写的用户必须需要有操作postgres这个数据库的权限,在这里就用最大权限的postgres用户。
[![](http://static.oschina.net/uploads/space/2013/0503/173100_qMCL_94610.png)](http://static.oschina.net/uploads/space/2013/0503/173100_qMCL_94610.png)
*在这里是埴写执行pgAgent的windows用户账号,如果是域用户,请填写完整的域用户名和密码。因为pgAgent会在windows的服务里面添加一个叫“PostgreSQL Scheduling Agent - pgAgent”的服务,而这个服务需要登录后才能运行,所以这里填写的账号必须是当前widnows可以登录的账号。
[![](http://static.oschina.net/uploads/space/2013/0503/173442_ODAv_94610.png)](http://static.oschina.net/uploads/space/2013/0503/173442_ODAv_94610.png)
[![](http://static.oschina.net/uploads/space/2013/0503/173500_Yzuj_94610.png)](http://static.oschina.net/uploads/space/2013/0503/173500_Yzuj_94610.png)[![](http://static.oschina.net/uploads/space/2013/0503/173520_aRKS_94610.png)](http://static.oschina.net/uploads/space/2013/0503/173520_aRKS_94610.png)
[![](http://static.oschina.net/uploads/space/2013/0503/173532_Z3ef_94610.png)](http://static.oschina.net/uploads/space/2013/0503/173532_Z3ef_94610.png)
来到这里,就表示pgAgent已经成功安装了。可以到windows的服务里面看一下pgAgent的服务添加没有,是否在运行:
[![](http://static.oschina.net/uploads/space/2013/0503/173619_GBna_94610.png)](http://static.oschina.net/uploads/space/2013/0503/173619_GBna_94610.png)
2.创建Job. 当成功安装pgAgent,并且pgAgent已经在正常运行后,接下来的任务就是创建定时执行任务。Postgresql的定时任务的概念分为两个部分:Schedule和Step。 Schedule是定时器,配置这个Job什么时候执行。而Step是执行任务的内容。通过这两部分结合,就可以配置这个Job什么时候做什么。一个Job可以有多个Schedule和多个Step,他们是叠加的作用。
具体操作如下:
新建一个Job,命名为Job1,设置Job Class为Routine Maintenance,并且勾选前面的Enabled。
[![](http://static.oschina.net/uploads/space/2013/0503/174022_quzc_94610.png)](http://static.oschina.net/uploads/space/2013/0503/174022_quzc_94610.png)
[![](http://static.oschina.net/uploads/space/2013/0503/174037_RaSw_94610.png)](http://static.oschina.net/uploads/space/2013/0503/174037_RaSw_94610.png)
为job1添加Schedule,命名为schedule1,勾选Enabled,然后设置开始和结束时间。如果结束时间不填,就表示这个Job会无止境地运行下去。然后在Times这个Tab的Minutes部分,勾选 00 和 30 ,这里表示这个job1会在每个小时的整点(00),和半点(30)执行。也就是每隔30分钟执行一次。如果只勾选 30, 就表示每个小时的30分钟执行,例如 4:30,5:30,这就是每隔一个小时执行一次了。其它的Hours,Week Days,Month Days,Months的概念是相同的。
[![](http://static.oschina.net/uploads/space/2013/0503/174312_uF5y_94610.png)](http://static.oschina.net/uploads/space/2013/0503/174312_uF5y_94610.png)[![](http://static.oschina.net/uploads/space/2013/0503/174434_PXWN_94610.png)](http://static.oschina.net/uploads/space/2013/0503/174434_PXWN_94610.png)
另外Exceptions Tab是例外的情况,就是当这种情况的时候就不会执行这个Job。
然后就是为job1添加执行的内容。现在添加一个Step,命名为step1。勾选Enabled。然后选择需要执行这个job的数据库。另外还需要注意Kind部分和On Error部分。Kind部分是指明执行这个job是SQL还是batch类型。job除了可以运行SQL,还可以运行windows的batch命令。在这个例子中我们选用SQL。在On Error部分,表示当执行这个job出现错误的时候,是停止(Fail),是正常(Succeed),还是忽略(Ignore)。现在这个例子选用Fail,就表示当执行的内容一出错,就停止运行,退出。
[![](http://static.oschina.net/uploads/space/2013/0503/175138_fFeZ_94610.png)](http://static.oschina.net/uploads/space/2013/0503/175138_fFeZ_94610.png)
现在就是定义job1需要执行的SQL,一般建议把这些SQL写在一个事务中,这样就算job1运行失败,都不会影响到数据。
[![](http://static.oschina.net/uploads/space/2013/0503/175743_u5HW_94610.png)](http://static.oschina.net/uploads/space/2013/0503/175743_u5HW_94610.png)
到这一步,job1就基本创建完成了。
现在要监视job1的运行状态,可以通过pgAdmin,在job1的Properties Tab,可以看到job1下次运行的时间,上次运行的时间,结果,当前是否在运行。还可以通过 Statistics Tab,查看job1运行的次数。
[![](http://static.oschina.net/uploads/space/2013/0503/180025_KCsX_94610.png)](http://static.oschina.net/uploads/space/2013/0503/180025_KCsX_94610.png)
[![](http://static.oschina.net/uploads/space/2013/0503/180155_St61_94610.png)](http://static.oschina.net/uploads/space/2013/0503/180155_St61_94610.png)
好了,到这里,如何用pgAgent创建定时任务的介绍就完了。以后再有更深入的探讨,再给大家介绍。
谢谢
- 数据表
- 模式Schema
- 表的继承和分区
- 常用数据类型
- 函数和操作符-一
- 函数和操作符-二
- 函数和操作符-三
- 索引
- 事物隔离
- 性能提升技巧
- 服务器配置
- 角色和权限
- 数据库管理
- 数据库维护
- 系统表
- 系统视图
- SQL语言函数
- PL-pgSQL过程语言
- PostgreSQL 序列(SEQUENCE)
- PostgreSQL的时间-日期函数使用
- PostgreSQL 查看数据库,索引,表,表空间大小
- 用以查询某表的详细 包含表字段的注释信息
- PostgreSQL 系统表查看系统信息
- postgre存储过程简单实用方法
- PostgreSQL实用日常维护SQL
- PostgreSQL的时间函数使用整理
- 命令
- pg_ctl控制服务器
- initdb 初始化数据库簇
- createdb创建数据库
- dropdb 删除数据库
- createuser创建用户
- dropuser 删除用户
- psql交互式工具
- psql命令手册
- pg_dump 数据库转储
- pg_restore恢复数据库
- vacuumdb 清理优化数据库
- reindexdb 数据库重创索引
- createlang 安装过程语言
- droplang 删除过程语言
- pg_upgrade 升级数据库簇
- 调试存储过程
- 客户端命令-一
- 客户端命令-二
- 使用技巧
- PostgreSQL删除重复数据
- postgresql 小技巧
- PostgreSQL的10进制与16进制互转
- PostgreSQL的汉字转拼音
- Postgres重复数据的更新一例
- PostgreSQL使用with一例
- PostgreSQL在函数内返回returning
- PostgreSQL中的group_concat使用
- PostgreSQL数据库切割和组合字段函数
- postgresql重复数据的删除
- PostgreSQL的递归查询(with recursive)
- PostgreSQL函数如何返回数据集
- PostgreSQL分区表(Table Partitioning)应用 - David_Tang - 博客园
- PostgreSQL: function 返回结果集多列和单列的例子
- 利用pgAgent创建定时任务
- 浅谈 PostgreSQL 类型转换类似Oracle
- postgresql在windows(包括win7)下的安装配置
- PostgreSQL简介、安装、用户管理、启动关闭、创建删除数据库 (2010-11-08 12-52-51)转载▼标签: 杂谈分类: PostgreSQL
- PostgreSQL的generate_series函数应用
- PostgreSQL 8.3.1 全文检索(Full Text Search)
- postgresql record 使用
- 备份恢复
- PostgreSQL基于时间点恢复(PITR)
- Postgresql基于时间点恢复PITR案例(二)
- Postgres逻辑备份脚本
- Postgres invalid command \N数据恢复处理