【Linux脚本学习案例】shell脚本多通道并发执行存储过程
使用shell脚本开启多个子任务并发调用存储过程,存储过程按照通道处理数据,提高效率:
外层调用脚本:
#!/bin/sh
#--------------------------------------------------------------------
# Fuction:调用脚本
# Version: 1.0
#-------------------------------------------------------------------- . ~/.profile . /web/interface/common/FuncCommon.def
#######################公共配置###############################################
#当前时间 yyyymmdd
CURDATE=`date +%Y%m%d%H%M%S`
#执行文件路径
BIN_PATH=~/interface
#日志文件
LOG_PATH=~/interface/log
#配置文件路径
INI_PATH=~/interface/ini/
#每次每通道处理数量
PER_NUM= echo `date +%H\:%M\'%S\"` "脚本PERIODIC_CALL.sh开始..." vacgwms=`ps -ef|grep -v grep|grep PERIODIC_CALL.sh |wc -l`
if [ $vacgwms -gt ]
then
echo `date +%H\:%M\'%S\"` "上次PERIODIC_CALL.sh未结束..."
exit
fi loop=
while(($loop<))
do echo "通道:"${loop}"开始......"
#.先判断lock文件是否存在
cd ${INI_PATH}
if [ -e ${loop}_*.lock ]
then
echo "通道锁文件:"${loop}.lock"仍然存在,上次存储执行未结束,下次调用再校验"
loop=`expr $loop + `
continue else
#创建锁文件
LOCK_NAME=${loop}_${CURDATE}.lock
touch ${LOCK_NAME}
echo "通道锁文件:"${LOCK_NAME}"创建成功" #.调用存储
#nohup sh ${BIN_PATH}/CORE_EXEC.sh $loop $PER_NUM >> /dev/null >${LOG_PATH}/core.log &
nohup sh ${BIN_PATH}/CORE_EXEC.sh $loop $PER_NUM >> ${LOG_PATH}/core.log >& &
#nohup sh ${BIN_PATH}/CORE_EXEC.sh $loop $PER_NUM > /dev/null &
fi loop=`expr $loop + ` done; wait echo `date +%H\:%M\'%S\"` "脚本PERIODIC_CALL.sh结束..."
内层执行脚本:
#!/bin/sh
#--------------------------------------------------------------------
# Fuction:执行存储脚本
# Version: 1.0
#-------------------------------------------------------------------- . ~/.profile ORACLE_HOME=/oracle/product/10.2./db
TNS_ADMIN=/ngbss/mddms/etc
export TNS_ADMIN
export ORACLE_HOME
. /web/interface/common/FuncCommon.def
#######################公共配置###############################################
#配置文件路径
INI_PATH=~/interface/ini/
#营业库连接
CONN=`/web/interface/passwd/pwd.sh CON_CC`
#短信配置
DEALDATE=`date +"%Y年%m月%d日%H时%M分"` echo `date +%H\:%M\'%S\"` "脚本CORE_EXEC.sh开始...通道:"$1",单次捞取数量:"$2
#1调用存储 RETINFO=`sqlplus -S $CONN << !
set heading off
set feedback off
set pages
set trimspool on
set serverout off
var V_RESULTCODE NUMBER;
var V_RESULTERRINFO VARCHAR2();
call PROC_PP($,$,:V_RESULTCODE, :V_RESULTERRINFO);
select :V_RESULTCODE ||','|| :V_RESULTERRINFO from dual;
EXIT ;
!` echo "存储过程返回信息:" $RETINFO
#echo ${RETINFO##*,}
RESULTCODE1=`echo $RETINFO|cut -c1`
RESULTCODE2=`echo $RETINFO|cut -c1-`
echo "RESULTCODE1:"$RESULTCODE1
echo "RESULTCODE2:"$RESULTCODE2 if [ $RESULTCODE1 == ]
then
# 删除锁文件
cd ${INI_PATH}
if [ -e ${}_*.lock ]
then
rm ${}_*.lock
echo 删除通道$1锁文件成功!
else
echo 未找到通道$1的锁文件
fi
elif [ $RESULTCODE2 == - ]
then
#存储过程报错 需要发短信通知
msg="ss2gnum#${DEALDATE}停开2G:存储过程PROC_PP,通道${1}报错:${RETINFO}"
echo $msg
(
sleep
echo $msg
sleep
echo "quit"
)| telnet ${REMOTE_IP} ${REMOTE_PORT}>./log/telnet_wls.log
fi echo `date +%H\:%M\'%S\"` "脚本CORE_EXEC.sh结束...通道:"$1",单次捞取数量:"$2
【Linux脚本学习案例】shell脚本多通道并发执行存储过程的更多相关文章
- linux的基本操作(shell 脚本的基础知识)
shell 脚本的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本 ...
- Linux命令行与Shell脚本编程大全
快来参加<Linux命令行与Shell脚本编程大全>学习吧,提升技能,展示自我. 点击链接即可进入学习:https://s.imooc.com/WTmCO6H 课程亮点适合零基础读者,从零 ...
- linux 下RMAN备份shell脚本
RMAN备份对于Oracle数据库的备份与恢复简单易用,成本低廉.对于使用非catalog方式而言,将RMAN脚本嵌入到shell脚本,然后再通过crontab来实现中小型数据库数据库备份无疑是首选. ...
- 在Linux下如何用Shell脚本读写XML?现有一个config.xml(转)
在Linux下如何用Shell脚本读写XML?现有一个config.xml <?xml version="1.0" encoding="UTF-8"?&g ...
- 自学Linux命令行与Shell脚本之路
自学Linux命令行与Shell脚本之路[第一回]:初识Linux 1.1 自学Linux Shell1.1-Linux初识 1.2 自学Linux Shell1.2-Linux目录结构 1.3 ...
- Linux命令行与shell脚本编程大全.第3版(文字版) 超清文字-非扫描版 [免积分、免登录]
此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Linux命令行与shell脚本编程大全.第3版 (大小:约22M)
- 《Linux命令行与shell脚本编程大全 第3版》创建实用的脚本---11
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---47
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
随机推荐
- .net core 2.2部署到Windows Server 2012 R2 standard
安装.net core 2.2 下载地址:https://dotnet.microsoft.com/download/dotnet-core/2.2 找到ASP.NET Core Runtime 2. ...
- WebService--导出excel并将excel发送到邮箱
1.利用NPOI生成EXCEL 2.导出excel之后发送邮件 //导出excel //path :保存路径 //dt:要导出的数据 public static bool DataTableToExc ...
- python 多进程并发demo
outline 下午需要简单处理一份数据,就直接随手写脚本处理了,但发现效率太低,速度太慢,就改成多进程了: 程序涉及计算.文件读写,鉴于计算内容挺多的,就用多进程了(计算密集). 代码 import ...
- SpringJDBC源码解析
读完本篇文章需要很长很长时间.... 传统JDBC 相信大家对传统的jdbc已经很熟悉了,无非就是下面这个流程 1234567891011 //1.加载驱动程序Class.forName(" ...
- element ui DatePicker 禁用当前日之前的时间
<el-date-picker style="width:195px" value-format="yyyy-MM-dd" v-model="f ...
- 【转】LockSupport深入浅出
原文:https://www.cnblogs.com/qingquanzi/p/8228422.html 本篇是<自己动手写把"锁">系列技术铺垫的最后一个知识点.本篇 ...
- 影响Python行为的环境变量
目录 影响Python行为的环境变量 环境变量 1. PYTHONHOME 2. PYTHONPATH 3. PYTHONSTARTUP 4. PYTHONOPTIMIZE 5. PYTHONBREA ...
- Nginx 反向代理功能-实现Nginx tcp负载均衡
Nginx 反向代理功能-实现Nginx tcp负载均衡 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- 代数&数论趣题集萃
暑假总不能只学习平面几何.所以这里也收集一些有趣的代数题或数论题,同时记下解法的一些提示.给未来的自己复习参考用. 多图片预警(请注意流量) 目录: Part 0:其他(8) Part 1:不等式(1 ...
- js实现时分秒毫秒计时器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...