LINUX定时执行含有DB2存储过程的SHELL脚本.docx

LINUX定时执行含有DB2存储过程的SHELL脚本.docx

ID:59301692

大小:150.68 KB

页数:6页

时间:2020-09-06

LINUX定时执行含有DB2存储过程的SHELL脚本.docx_第1页
LINUX定时执行含有DB2存储过程的SHELL脚本.docx_第2页
LINUX定时执行含有DB2存储过程的SHELL脚本.docx_第3页
LINUX定时执行含有DB2存储过程的SHELL脚本.docx_第4页
LINUX定时执行含有DB2存储过程的SHELL脚本.docx_第5页
资源描述:

《LINUX定时执行含有DB2存储过程的SHELL脚本.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、LINUX下定时执行含有DB2存储过程的SHELL脚本最近项目要求将某些表中的数据转移到历史数据表中,并将成功转移后的数据在生产系统中删除,并且要求每天凌晨1:00定时执行脚本。这是我第一次写这样的脚本程序,现将整个编写过程或步骤记录如下,希望能对有类似需求的人所有帮助,由于本人也是刚接触DB2数据库和shell脚本,错误之处还请见谅。测试服务器的操作系统是Redhat,数据库产品:DB2(10.1版本),转移数据是在DB2存储过程中实现的,下面分几个步骤进行叙述。一、编写DB2存储过程1》编写存储过程具体代码见表格1,将其中的代码形成一个sql文件,文件

2、名为dataHandle.sqlCREATEORREPLACEPROCEDUREtest_schema.dataHandle(int_IdINT)--in表示输入参数RESULTSETS1--返回结果为1个LANGUAGESQLP1:BEGINATOMIC--ATOMIC为了使P1和ENDP1之间形成一个事务,要么同时成功,要么同时失败declaretIdINT;--声明变量settId=t_Id;--赋值变量IFtId>0THEN--判断insertintoTEST_SCHEMA.TEST_HISTORY(t_Id,t_name)selectt_Id,t

3、_namefromTEST_SCHEMA.TM_ASM_FLTSCHwherewheret_Id=tId;--转移数据deletefromTEST_SCHEMA.TM_ASM_FLTSCHwheret_Id=tId;--删除数据ENDIF;ENDP1@--@这里是必须的表12》部署存储过程到指定数据库a)连接数据库切换到数据库用户下执行命令:db2connecttoDbname或者不切换用户执行命令:db2connecttoDbnameuserUsernameusing******b)部署1》中写好的存储过程执行命令:db2-td@-vfdataHandl

4、e.sql或者使用datastudio进行部署,具体流程如下:最后点击Finish即可。一、编写SHELL脚本该脚本的代码见表2,主要功能是:将表test中90天之前的数据转移到test_history表中,并将表test中已被转移的数据删除掉,并对表test,test_history进行重组,使表中的索引及时生效。脚本文件名为cronTransData.sh,其中获取主键值时,是将符合查询条件的所有主键都输出到文件re.txt中,之后逐行读取该文件中的主键值,并在循环中逐个处理(循环调用存储过程)。#!/bin/sh#loaddb2environment

5、variables./home/db2inst1/.profile#加载DB2数据的环境变量startTime=`date+%s`#获取当前时间戳#transferdata(90daysbefore)tohistorytableoutDate=`date-d-90day+%Y-%m-%d`#获取当前日期90天之前的日期db2connecttoDbname#连接数据库#fetchtheprimarykeyvaluesoftransfereddataintore.txtfile.db2"selectt_Idfromtest_schema.testwhereto

6、_date<='$outDate'">re.txt;#将90天之前的数据的主键值输出到文件re.txt中db2terminate#终止数据库连接,释放链接资源#readre.txtfiletofetchfltschId'svaluecatre.txt

7、grep'[s0-9s]$'

8、whilereadtId#从上面的输出文件中提取只含数字和空格的行(只读取主键值)do#循环执行db2connecttoseat#callstoreprocefuretocompletedatatransferdb2"calltest_schema.dataHandle('$

9、tId')"#调用上面部署成功的存储过程db2terminate;donerunstatsontabletest_schema.testandindexall;#整理一下表runstatsontabletest_schema.test_historyandindexall;endTime=`date+%s`#运行结束时间spendTime=$((endTime-startTime))#整个过程消耗的时间echo'Spenttotaltime:'$spendTime's'#打印总消耗,时间单位为秒表2一、编写crontab定时脚本编写定时脚本,脚本名为db2

10、inst1,脚本中的内容为:*1***./opt/yourdir/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。