【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版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
随机推荐
- C#与C++与互操作
一.C#调用C++库 1.创建C++库 打开VisualStudio,创建一个C++工程,输入项目名称HelloWorldLib 确定,然后下一步.选择应用程序类型为DLL 单击完成,我们就创建好了一 ...
- webapi行程开发文档
1.新建webapi项目 2.项目中controllers 中有一个values的为webapi接口 3.areas中域中有helppage为生成文档可以直接运行localhost/help,就会生成 ...
- Matlab混入模式(Mixin)
Mixin是一种类,这种类包含了其他类要使用的特性方法,但不必充当其他类的父类.Matlab无疑是支持多继承的.我们可以利用 Matlab 的这种特性,实现一种叫做 Mixin 的类.MixIn的目的 ...
- 7.vertical-align属性
本节学习目标: 图片.表单和旁边的文字对齐 解决图片底部默认空白缝隙问题 1.图片.表单和旁边的文字对齐 默认的图片.表单等行内元素或行内快元素是和文字的基线对齐的,但在实际情况下,我们想让他们中间对 ...
- vue-cli vue脚手架搭建步骤
提前在E:\nodejs文件夹下建立node_gobal和node_cache 并配置环境变量NODE_PATH:E:\nodejs\node_global\node_modules 改变用户变量中的 ...
- vue父组件引用多个相同的子组件传值
没有什么问题是for 解决不了的,我一直深信这句话,当然这句话也是我说的 父组件引用多个相同的子组件传值问题 (这种情况很少遇到) 1 <template> 2 <div> 3 ...
- error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用
出现如下错误: error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用 解决办法:
- python基础-面向对象编程之多态
面向对象编程之多态以及继承.抽象类和鸭子类型三种表现形式 多态 定义:同一种类型的事物,不同的形态 作用: 多态也称之为"多态性".用于在不知道对象具体类型的情况下,统一对象调用方 ...
- 使用Python3导出MySQL查询数据
整理个Python3导出MySQL查询数据d的脚本. Python依赖包: pymysql xlwt Python脚本: #!/usr/bin/env python # -*- coding: utf ...
- Linux源码编译nginx
1.安装nginx 安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 首先要安装 ...