OS层面运行HANA SQL的脚本

8 篇文章 1 订阅

最近在做集成的管理服务器,目标是将所有应用的cleanup脚本放在一起统一管理,避免当脚本有变动时需要一台一台去改cron job。本文覆盖的是HANA数据库相关的脚本。

目前的脚本有两个功能,一是调用HANACleaner这个清理工具(非官方,需要额外下载该python程序),主要用来清理旧的trace文件;二是运行SQL语句,用来清理存放在数据库中旧的应用日志。

有关HANACleaner:https://github.com/chriselswede/hanacleaner

首先管理服务器上要安装好HANA client并配好环境变量。然后使用hdbuserstore 对需要访问的数据库tenant创建登录令牌,避免把密码明文写在脚本里。数据库用户的权限配置和hanacleaner的执行参数可参考github上的说明文档。

创建令牌命令:
hdbuserstore set 令牌名 主机名:端口号 数据库用户名 密码

查询tenant所使用的端口号:
SELECT * FROM SYS_DATABASES.M_SERVICES;

#! /bin/bash
source $HOME/.bashrc

#SQL cleanup part

rm -f /hana/shared/SID/HANACleaner/log/tempsql*

hdbsql -U 令牌 -I /hana/shared/SID/HANACleaner/SQL/cleanup.sql >> /hana/shared/SID/HANACleaner/log/tempsql.log 2>&1

r1=$(sed -n '2p' /hana/shared/SID/HANACleaner/log/tempsqlZAL.log)
r2=$(sed -n '4p' /hana/shared/SID/HANACleaner/log/tempsqlZAL.log)

    echo "===== $r1  old error logs in Log are cleaned up.=====" >> /hana/shared/SID/HANACleaner/log/$(date +%Y%m%d).log 2>&1
    echo "===== $r2  old info logs in Log are cleaned up.=====" >> /hana/shared/SID/HANACleaner/log/$(date +%Y%m%d).log 2>&1

#HANA Cleaner part
#令牌数取决于要跑的数据库tenant
python /usr/sap/SID/HDB00/exe/python_support/hanacleaner.py -tc 60 -tf 60 -td true -dr 60 -ar 60 -kr 60 -ad true -lr 1 -om 500 -oo true -eh 30 -eu 60 -ur 180 -pe 60 -df false -k 令牌1,令牌2,令牌3 >> /hana/shared/SID/HANACleaner/log/$(date +%Y%m%d).log 2>&1


#需要配置mail.rc中smtp server
mail -s "HANA Cleaner report" 邮箱地址 < /hana/shared/SID/HANACleaner/log/$(date +%Y%m%d).log
#删除旧报告
find /hana/shared/SID/HANACleaner/log/* -mtime +30 -exec rm {} \;

其中需要在cleanup.sql中维护需要执行的sql语句,由于hdbsql无法获得delete所影响的行数,为了知道多少条目会被删除,在执行之前需要先select。变量r1和r2获得的其实是两条delete语句之前的select结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值