linux使用shell脚本处理oracle、db2数据库

本文介绍了一种用于Oracle和DB2数据库的维护脚本,包括数据查询、删除和迁移操作。针对Oracle,脚本能够根据用户输入的时间戳进行文件备份与删除,并查询与删除指定日期的数据。对于DB2,脚本自动获取100天前的日期,执行数据导出、导入和删除任务。这些脚本可定制并添加到crontab中实现自动化执行。

处理oracle数据库

手动输入时间(yyyymmdd),判断是否存在文件名为yyyymmdd,若存在则先备份再删除echo "请输入时间(yyyymmdd)",连接oracle查询数据并删除

read date
cd /home/ap/ssp/filedir/infiledir/makecard/jinbangda/
if [ ! -d "$date" ]
then
        echo "file $date not exist"
		exit 0
else
    echo "jinbangda file $date is exist,gameover"
	cp -rf $date $date.bak
	echo "jinbangda file $date is copy,filename is $date.bak ok"
	rm -rf $date
	echo "jinbangda delete file $date ok"
fi
#sq是存放在当前用户下的连接数据库脚本 sq <<EOF set linesize 1000; select * from batstat where command='dealmakecard' and inputstr like '$date%'; delete file_mon where filedate='$date'; EOF

 

处理db2数据库

获取当前系统时间的前一百天日期,然后连接数据进行数据迁移,及数据删除

echo "start $(date +%Y-%m-%d-%X)"
time=$(date -d '100 days' +%Y-%m-%d)
echo "start $time"
su - db2inst1 <<EOF
time db2 connect to cmbcepay user epay using epay
echo "连接数据成功"
echo "开始导出日期为$time的bt_clear_trans_bak数据文件为:bt_clear_trans$time.del"
time db2 "select count(1) from bt_clear_trans_bak where trans_cleardate=date('$time')"
echo "执行语句:'time db2 export to bt_clear_trans$time.del of del select * from bt_clear_trans_bak where trans_date=date('$time')"
time db2 "export to bt_clear_trans$time.del of del select * from bt_clear_trans_bak where trans_cleardate=date('$time')"
echo " $time的bt_clear_trans数据导出成功"
echo "开始将数据bt_clear_trans$time.del导入到bt_clear_trans"
time db2 "select count(1) from bt_clear_trans_2015 where trans_cleardate=date('$time')"
echo "执行语句:time db2 import from bt_clear_trans$time.del of del commitcount 10000 insert into bt_clear_trans_2015"
time db2 "import from bt_clear_trans$time.del of del commitcount 10000 insert into bt_clear_trans_2015"
echo "导入$time 的bt_clear_trans成功"
echo "开始删除表数据"
time db2 "select count(1) from bt_clear_trans_bak where trans_cleardate=date('$time')"
echo "执行语句:'time db2 delete from bt_clear_trans' "
time db2 "delete from bt_clear_trans_bak where trans_cleardate=date('$time')"
time db2 "select count(1) from bt_clear_trans_bak where trans_cleardate=date('$time')"
echo "删除成功"
echo "game over"
EOF

以上脚本可以简单修改添加到crontab中进行定时运行

 

转载于:https://www.cnblogs.com/atwanli/articles/4312037.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值