#前三个月
year=`date +%Y`
mon=`date +%m`
if [ $mon -lt '04' ]
then
mon=`expr $mon + 9`
year=`expr $year - 1`
else
mon=`expr $mon - 3|awk '{printf("%02d/n",$0)}'`
fi
validbillcyc=$year$mon
awk '{ if(substr($0,41,1)=="-" && substr($0,16,10)=="0000000000") print $0 }' $BAKDIR/"$FILENAME".old > $WORKDIR/tmpfile;
文件转移(自动压缩并上传文件)
find ./ -name "hkreq*" -atime +5 > /usr1/run/shell/user/qh/Deduct_req_Fx/hkreq
awk '{print "mv " $1 " /appdata/fileftp/zw/Deduct_req_Fx/sz/sz_bakto40/"}' /usr1/run/shell/user/qh/Deduct_req_Fx/hkreq > /usr1/run/s
hell/user/qh/Deduct_req_Fx/hkreq.sh
sh /usr1/run/shell/user/qh/Deduct_req_Fx/hkreq.sh
cd /appdata/fileftp/zw/Deduct_req_Fx/sz_bakto40/
gzip hkreq*
ftp -i -n 10.243.207.208 <<EOF>/dev/null
user devis devis
cd /test/cxlog3/Deduct_req_Fx/sz/
bin
prompt
put hkreq*
bye
EOF
rm /appdata/fileftp/zw/Deduct_req_Fx/sz_bakto40/hkreq*
强制索引
select /*+ index(a,PK_CM_SUBS_SUBSCRIBER) */ a.servnumber,to_char(b.subsid),b.VALIDBILLCYC,to_char(b.ACCTID),b.RECAMT from test.sg_c
m_subs_subscriber a, sgzw.ib_cbtm_unwfacct b where a.subsid=b.subsid;
相关set设置
set colsep "|";
set echo off;
set feedback off;
set heading off;
set pagesize 0;
set linesize 1000
set numwidth 12;
set termout off;
set trimout on;
set trimspool on;
declare
v_rec_sum number(20); --受理资源开户号码的总数
v_work_sum number(20); --前台资源明细对应的开户号码总数
v_workloadid varchar(20); --工作量流水
v_amend_num number; --失败的号码数量
v_recoid varchar(20); --失败的号码对应的日志流水
v_region varchar(10); --地市编号
v_true_money number(20,2); --实际成功开户号码的总金额
v_f_servnumber varchar(20); --失败的号码
v_is_sernumber number(2);
v_orgid varchar(20); --办理的渠道
v_operid varchar(20); --操作员ID
v_prodid varchar(10); --产品号
v_cycle varchar(20); --业务办理的日期
v_recdefid varchar(20); --业务类型
begin
v_amend_num := 0;
v_recoid := null;
v_region := '755';
v_f_servnumber := '157';
v_recoid :='&请输入日志流水';
select count(distinct b.servnumber),a.recorgid,a.recopid,to_char(a.recdate,'yyyymmdd'),a.recdefid,a.prodid into v_amend_num,v_orgid,v_operid,v_cycle,v_recdefid,v_prodid
from szyy.reception a ,szyy.bat_install_resinfo b,szyy.bat_intall_int c
where a.oid = b.BATRECID
and b.INSTALLRECID = c.INSTALLRECID
and b.region = 755
and a.oid =v_recoid --根据开户失败的号码查找出失败号码个数
group by a.recorgid,a.recopid,to_char(a.recdate,'yyyymmdd'),a.recdefid,a.prodid;
if (v_recoid = null)
then
dbms_output.put_line('您输入的流水:'||v_recoid||'没有该失败开户的相关记录,请查看bat_intall_int表');
end if ;
select sum(quantity) into v_rec_sum from szyy.cs_rec_resource where recoid = v_recoid;
if v_rec_sum > v_amend_num --失败的号码数量比总数少的情况
then
dbms_output.put_line('--------打印出如下修改的前台脚本--------');
dbms_output.put_line('update szyy.reception set recfee=(recfee/'||v_rec_sum||')*('||v_rec_sum||'-'||v_amend_num||') where oid='||v_recoid||';');
dbms_output.put_line('update szyy.cs_rec_fee set fee=(fee/'||v_rec_sum||')*('||v_rec_sum||'-'||v_amend_num||') where recoid='||v_recoid||';');
dbms_output.put_line('delete from szyy.rec_resource where beginresid in ( select enum from szyy.subscriber a where servnumber in( select b.servnumber from szyy.reception a ,szyy.bat_install_resinfo b,szyy.bat_intall_int c where a.oid = b.BATRECID and b
INSTALLRECID = c.INSTALLRECID and b.region = 755 and a.oid = '||v_recoid||') and a.active = 1) and recoid = '||v_recoid||';');
else
dbms_output.put_line('delete from szyy.reception where oid='||v_recoid||';');
dbms_output.put_line('delete from szyy.cs_rec_fee where oid='||v_recoid||';');
dbms_output.put_line('delete from szyy.cs_rec_resource where oid='||v_recoid||';');
end if ;
select workloadid into v_workloadid from szyy.cs_wl_workrecrela where recoid=v_recoid and region=v_region;
select sum(quantity) into v_work_sum from szyy.cs_cwl_resource where workloadoid=v_workloadid;
select (recfee/v_work_sum)*(v_work_sum-v_amend_num) - (discount/v_work_sum)*(v_work_sum-v_amend_num) into v_true_money from szyy.cs_cwl_workload where oid=v_workloadid;
if v_work_sum > v_amend_num
then
dbms_output.put_line('update szyy.cs_cwl_workload set recfee=(recfee/'||v_work_sum||')*('||v_work_sum||'-'||v_amend_num||'),discount=(discount/'||v_work_sum||')*('||v_work_sum||'-'||v_amend_num||') where oid='||v_workloadid||';');
dbms_output.put_line('update szyy.cs_cwl_resource set quantity=quantity-'||v_amend_num||' where workloadoid='||v_workloadid||';');
dbms_output.put_line('update szyy.cs_cwl_revenue set fee=(fee/'||v_work_sum||')*('||v_work_sum||'-'||v_amend_num||'),discount=(discount/'||v_work_sum||')*('||v_work_sum||'-'||v_amend_num||') where workloadoid='||v_workloadid||';');
if v_true_money <> 0
then
dbms_output.put_line('update szyy.cs_cwl_paytype set fee='||v_true_money||' where workloadoid='||v_workloadid||';');
end if;
else
dbms_output.put_line('delete from szyy.cs_cwl_workload where oid='||v_workloadid||';');
dbms_output.put_line('delete from szyy.cs_cwl_revenue where workloadoid='||v_workloadid||';');
dbms_output.put_line('delete from szyy.cs_cwl_paytype where workloadoid='||v_workloadid||';');
dbms_output.put_line('delete from szyy.cs_cwl_resource where workloadoid='||v_workloadid||';');
end if;
dbms_output.put_line('------------------------------------------------');
dbms_output.put_line('该故障相关的大概情况如下:');
dbms_output.put_line('失败开户号码数量:'||v_amend_num);
dbms_output.put_line('日志流水开户的号码总数:'||v_rec_sum);
dbms_output.put_line('涉及的日志流水:'||v_recoid);
dbms_output.put_line('成功开户号码涉及的实收:'||v_true_money);
dbms_output.put_line('办理的渠道:'||v_orgid);
dbms_output.put_line('操作员:'||v_operid);
dbms_output.put_line('产品:'||v_prodid);
dbms_output.put_line('业务ID:'||v_recdefid);
dbms_output.put_line('时间:'||v_cycle);
dbms_output.put_line('------------------------------------------------');
end;
echo "***************************************"
echo "* attr="1"--------预约登记 *"
echo "* attr="2"--------短信菜单查询 *"
echo "* attr="101"------短信咨询 *"
echo "* attr="102"------短信调查 *"
echo "* attr="103"------短信营业厅内部处理业务*"
echo "* attr="201"------BOSS业务办理 *"
echo "* attr="202"------BOSS业务查询 *"
echo "* attr="203"------BOSS业务取消 *"
echo "* attr="204"------交互短信 *"
echo "* attr="205"------短信菜单业务处理 *"
echo "* attr="301"------短信营业厅不处理业务 *"
echo "* RETCODE=001---走本地系统 *"
echo "* attr="302"------本地系统查询 *"
echo "* attr="303"------本地系统办理 *"
echo "* 运行格式:dxyyt 号码 *"
echo "***************************************"
mobile=$1
sqldir=/tmp/sqldir.sql
echo " unload to /tmp/pp " >$sqldir
echo " select srcid,to_char(WORKFDEALTIME,'yyyy-mm-dd hh24-mi-ss'),REQSTREAMNO, ">>$sqldir
echo " destid,PRODID,REGION,msgcontent,TRADEINFO,RETCODE,ATTR,SMPABCREFIX,SMNUMPREFIX " >>$sqldir
echo " from gdsm.sv_sms_result where srcid='$mobile' order by workfdealtime; " >>$sqldir
/dxyyt/kefu/dbtool cxtyd_rw/tyd4321@gdsm2 -f[$sqldir] afljk 1>/dev/null 2>&1
echo "srcid |WORKFDEALTIME |REQSTREAMNO|destid |PRODID |REGION |msgcontent |TRADEINFO |RETCODE|ATTR|SMPABCREFIX|SMNUMPREFIX"
cat /tmp/pp
echo " "
echo "************************************************************************************************"
echo "现在可以输入REQSTREAMNO这个字段值查询下发短信内容"
while(true)
do
read aa
b=$aa
echo $b
echo " unload to /tmp/pp " >$sqldir
echo "select SRCID,DESTID,MSGCONTENT, to_char(WORKFDEALTIME,'yyyy-mm-dd hh24-mi-ss') from " >>$sqldir
echo "gdsm.SV_SMS_SNDREQSUCC where REQSTREAMNO='$b' order by workfdealtime;" >>$sqldir
/dxyyt/kefu/dbtool test_rw/tyd4321@gd -f[$sqldir] password 1>/dev/null 2>&1
cat /tmp/pp
done
#!/usr/bin/ksh
. /home/devis/.profile
stty columns 132
#echo "1.查询cics日志,需要的参数是1.号码,2.时间,3.地区"
#echo "2.如要查广州时间为9月12号20点的cics日志,请输入cics 13570313613 2008091220 gz"
#echo "3.可以用用户id或者别的代替号码查询"
#echo "4.因为cics日志是ZWGZBSTR.out200710071434.g很大,所以匹配的时候尽量把时间缩小"
# yexianhai
#20100805-修正脚本的查找单个文件是出错的bug。
#20100809-更新脚本为交互模式,使查找更加人性化。
#20100810-把ZW${Region}*$2*更新为*${Region}*BSTR.out*$2*
#20100813-更新pid可以循环输入。
#echo "更新了这个脚本,测试阶段,有问题请联系我,谢谢 --xiaoye"
echo ""
echo "------------------------------------------------------------------------------------------------------"
olnynum=`date +%Y%m%d%H%M%S`
if [ $# -ne 3 ]
then
echo "参数错误,请输入 关键字 业务发生时间点 地市小写缩写作为参数例如:sh $0 13570313613 2008091220 gz/all(全省)"
exit 1
fi
####删除多余文件
if [ -a cicslog_20* ]
then
lognum=`ls -lrt cicslog_20*|wc -l|awk '{print $1}'`
if [ $lognum -gt 6 ]
then
rmnum=`expr $lognum "-" 6`
ls -lrt cicslog_20*|head -${rmnum}|awk '{print $9}'|xargs rm
fi
fi
subcics()
{
print $3
case $3 in
jm) cicslist="S3YZMW S4YZMW cics10 cics12 cics12_2010 cics14 cics15 cics3 cics4 ";;
mz) cicslist="S3YZMW S4YZMW cics10 cics12 cics12_2010 cics14 cics15 cics3 cics4 ";;
qy) cicslist="S3YZMW S4YZMW cics10 cics12 cics12_2010 cics14 cics3 cics4 ";;
yf) cicslist="S3YZMW S4YZMW cics10 cics12 cics12_2010 cics14 cics15 cics3 cics4 ";;
zh) cicslist="S3YZMW S4YZMW cics10 cics12 cics12_2010 cics14 cics3 cics4 ";;
zs) cicslist="S3YZMW S4YZMW cics10 cics12 cics12_2010 cics14 cics3 cics4 ";;
sg) cicslist="S5YZMW S6YZMW cics11 cics12 cics12_2010 cics13 cics16 cics5 cics6 ";;
hy) cicslist="S5YZMW S6YZMW cics11 cics12 cics12_2010 cics14 cics16 cics5 cics6 ";;
cz) cicslist="S5YZMW S6YZMW cics11 cics12 cics12_2010 cics14 cics16 cics5 cics6 ";;
sw) cicslist="S5YZMW S6YZMW cics11 cics12 cics12_2010 cics14 cics16 cics5 cics6 ";;
fs) cicslist="S5YZMW S6YZMW cics11 cics12 cics12_2010 cics13 cics14 cics5 cics6 ";;
mm) cicslist="S5YZMW S6YZMW cics11 cics12 cics12_2010 cics13 cics16 cics5 cics6 ";;
yj) cicslist="S5YZMW S6YZMW cics11 cics12 cics12_2010 cics13 cics16 cics5 cics6 ";;
zj) cicslist="S5YZMW S6YZMW cics11 cics12 cics12_2010 cics13 cics16 cics5 cics6 ";;
dg) cicslist="S5YZMW S6YZMW cics11 cics12 cics12_2010 cics14 cics16 cics5 cics6 ";;
hz) cicslist="S1YZMW S2YZMW cics1 cics12 cics12_2010 cics13 cics2 cics9 ";;
st) cicslist="S1YZMW S2YZMW cics1 cics12 cics12_2010 cics13 cics2 cics9 ";;
jy) cicslist="S1YZMW S2YZMW cics1 cics12 cics12_2010 cics13 cics16 cics2 cics9 ";;
gz) cicslist="S1YZMW S2YZMW cics1 cics12 cics12_2010 cics13 cics16 cics2 cics9 ";;
sz) cicslist="S3YZMW S4YZMW cics10 cics12 cics12_2010 cics13 cics14 cics15 cics3 cics4 ";;
zq) cicslist="S1YZMW S2YZMW cics1 cics12 cics12_2010 cics13 cics16 cics2 cics9 ";;
*) echo "地市标识有误,如全省查地市标识为:all" ;;
esac
for cicsnum in $cicslist
do
mon=` print $2 |awk '{print substr($0,5,2)}' `
year=`print $2 |awk '{print substr($0,1,4)}'`
dat=` date +%-m `
year_s=` date +%-Y`
if [ $year -eq $year_s ]
then
if [ $mon -eq $dat ]
then
if [ -d /test/cxlog2/logbak/${cicsnum} ]
then
mulu=/test/cxlog2/logbak/${cicsnum}
else
mulu=/test/cxlog3/logbak/${cicsnum}
fi
else
if [ -d /test/cxlog2/oldlog/$year_s$mon/${cicsnum} ]
then
mulu=/test/cxlog2/oldlog/$year_s$mon/${cicsnum}
else
mulu=/test/cxlog3/oldlog/$year_s$mon/${cicsnum}
fi
fi
else
if [ -d /test/cxlog2/oldlog/$year$mon/${cicsnum} ]
then
mulu=/test/cxlog2/oldlog/$year$mon/${cicsnum}
else
mulu=/test/cxlog3/oldlog/$year$mon/${cicsnum}
fi
fi
echo "$mulu"
Region=`echo $3 | tr [:lower:] [:upper:]`
zgrep $1 ${mulu}/*${Region}*BSTR.out*$2* >cicslog_${olnynum}
if [ -s cicslog_${olnynum} ]
then
###读取pid函数
readpid()
{
echo "请输入你要查找的pid并按回车,如要退出请直接按回车"
read cicspid
if [ -z "$cicspid" ]
then
echo "脚本退出."
exit
fi
}
echo "------------------------------------------------------------------------------------------------------"
while true
do
findnum=`awk '{print $1,$2}' cicslog_${olnynum}|uniq|wc -l |awk '{print $1}'`
if [ $findnum -gt 20 ]
then
echo "由于找出来的结果太多,只显示最后20条,建议填写更精确的时间或者另外找关键字"
cat cicslog_${olnynum}|awk '{print $1,$2}' |tail -20
readpid
elif [ $findnum -eq 1 ]
then
cicspid=`awk -F/pid/= '{print $2}' cicslog_${olnynum}|tail -1|awk -F/: '{print $1}'`
echo "pid只有一个,直接查找"
cat cicslog_${olnynum}|awk '{print $1,$2}' |uniq
else
cat cicslog_${olnynum}|awk '{print $1,$2}' |uniq
readpid
fi
onefile=`ls ${mulu}/*${Region}*BSTR.out*$2*|wc -l|awk '{print $1}'`
if [ $onefile -eq 1 ]
then
zgrep $cicspid ${mulu}/*${Region}*BSTR.out*$2* >cicslog_${olnynum}1
else
filenum=`grep $cicspid cicslog_${olnynum} | awk -F/: '{print $1}'|sort -n |uniq|wc -l |awk '{print $1}'`
if [ $filenum -gt 1 ]
then
echo "你选择的PID“ ${cicspid} ”在${filenum}个文件中都有,请输入其中一个文件,要绝对路径"
grep $cicspid cicslog_${olnynum} | awk -F/: '{print $1}'|sort -u|uniq
read filename
if [ -z "$filename" ]
then
echo "输入有误,可能你多按了一下回车,请重新运行脚本"
exit
fi
else
filename=`cat cicslog_${olnynum}|grep $cicspid | awk -F/: '{print $1}'|tail -1`
fi
zgrep $cicspid $filename>cicslog_${olnynum}1
fi
print "日志如下,请用”/${1}”查找"
vi cicslog_${olnynum}1
if [ $findnum -eq 1 ]
then
exit
fi
done
fi
done
}
if [ $3 == 'all' ]
then
for city in jm mz qy yf zh zs sg hy cz sw fs mm yj zj dg hz st jy gz sz zq
do
subcics $1 $2 ${city}
done
else
subcics $1 $2 $3
fi
文件转移(自动压缩并上传文件)
find ./ -name "hkreq*" -atime +5 > /usr1/run/shell/user/qh/Deduct_req_Fx/hkreq
awk '{print "mv " $1 " /appdata/fileftp/zw/Deduct_req_Fx/sz/sz_bakto40/"}' /usr1/run/shell/user/qh/Deduct_req_Fx/hkreq > /usr1/run/s
hell/user/qh/Deduct_req_Fx/hkreq.sh
sh /usr1/run/shell/user/qh/Deduct_req_Fx/hkreq.sh
cd /appdata/fileftp/zw/Deduct_req_Fx/sz_bakto40/
gzip hkreq*
ftp -i -n 10.2.207.208 <<EOF>/dev/null
user devis devis
cd /test/cxlog3/Deduct_req_Fx/sz/
bin
prompt
put hkreq*
bye
EOF
rm /appdata/fileftp/zw/Deduct_req_Fx/sz_bakto40/hkreq*
强制索引
select /*+ index(a,PK_CM_SUBS_SUBSCRIBER) */ a.servnumber,to_char(b.subsid),b.VALIDBILLCYC,to_char(b.ACCTID),b.RECAMT from test.sg_c
m_subs_subscriber a, sgzw.ib_cbtm_unwfacct b where a.subsid=b.subsid;