OBIEE清除缓存脚本

浏览: 3119

前面文章 http://www.flybi.net/blog/lemon/816 中 讲到如何清除biee的缓存

写道

在linux下了,没有界面的话,就只能用命令的方式了:

nqcmd -d tsa -u jianchen -pjianchen -s testCleanCache.sql

testCleanCache.sql该文件的内容如下:

call SAPurgeCacheByTable('tsamysql','tsa','','tsa_dim_hour')};--表示清除某一张表的缓存

之前清除缓存,都是手动去改testCleanCache文件,这样处理起来比较麻烦,每次要用vi去编辑,要清除的表比较多的话,然后就要不断的复制粘贴。晚上写了个shell脚本,将其自动化一点。

主要思路是,将手动生成odbc调用的命令,由程序去动态生成保存到cmd.sql文件中去。同时支持参数指定,方便操作。

具体shell脚本如下:

if [ $# == 0 ] 
then 
echo "请指定更新缓存的参数,-a表示清除整个缓存,-t指定清除某张表,后面可以跟多张表名,以空格分隔,-s表示清除整个主题,详情请查看help"
exit 1
fi
cmd=''
if [ "$1" == "-a" ] 
then
cmd="Call SAPurgeAllCache();"
echo  $cmd > cmd.sql
elif [ "$1" == "-t" ] 
then
if [ $# -eq 1 ] 
then 
echo "请指定需要清除缓存的物理表名"
exit 1
fi
while [ $# -gt 1 ]
do
shift
cmd=$cmd"call SAPurgeCacheByTable('tsamysql','tsa','','"$1"')};\n"
done
echo -e "$cmd" > cmd.sql
elif [ "$1" == "-s" ] 
then
if [$# -gt 2 ]
then 
echo "每次只能清除一个主题"
exit 1
fi
if [ "$2" == "refund" ]
then
echo "清除退款主题的所有事实表"
exit 0
elif [ "$2" == "phone" ]
then
echo "清除电话主题的所有事实表"
exit 0
else
echo "没有该主题,请检查拼写是否有误,目前支持的主题有refund,phone"
exit 1
fi
else
echo "请检查命令是否使用正确"
exit 1
fi
nqcmd -d tsa -u kunshuo -ptaobao -s cmd.sql
nqcmd -d tsa2 -u kunshuo -ptaobao -s cmd.sql

支持的命令如下:
1,sh cleanCache.sh -a  #全部清除

2,sh cleanCache.sh -t tsa_fact_refudn tsa_fact_phone #清除两张表

3,sh cleanCache.sh -s refund #清除指定的主题,后面会实现,指定具体的退款主题的相关物理表


A result code is returned after you issue a purge cache command.

Result Code Result Message

Clipboard Image.png

推荐 0
本文由 指尖旋律2014 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册