Shell_Oracle Erp和其他系统Interface资料传输通过Shell进行控制(案例)

简介: 2014-06-26 Created By BaoXinjian 一、摘要 当不同的系统资料进行交换,可以很多种方式,如MQ,DBLink 当接触一些信息安全比较严的项目,很多公司都是采用unix shell直接进行抛转文件的方式进行 使用unix shell抛传文件的时,就必须区分哪些文...

2014-06-26 Created By BaoXinjian

一、摘要


当不同的系统资料进行交换,可以很多种方式,如MQ,DBLink

当接触一些信息安全比较严的项目,很多公司都是采用unix shell直接进行抛转文件的方式进行

使用unix shell抛传文件的时,就必须区分哪些文件已被读取,哪些文件未被读取,读取成功之后文件如何处理,读取失败后的文件如何处理

 

之前做的一个保险项目,其处理不同系统之间所有的interface data资料,都是通过unix shell去控制,其安全性会比较高

本文只是介绍程式的基本结构,不纠结与语法,真正的控制Shell文件会涉及到跟多的部分,如验证,初始化环境变量等等

Step1. 通过一个unix shell去读取一个文件夹interface下所有的文件名,

Step2. 将其插入到一个contorl table中,插入之前先判断该文件名是否存在,如果存在就不再插入,避免重复记录

Step3. 通过utl_file读取contorl table中未被处理的data file

Step4. 读取文件成功后,将该文件transfer到另一个文件夹success

Step5. 读取文件失败后,将该文件transfer到另一个文件夹failed

 

二、案例实现


案例:从另外系统抛传interface dat files资料,并存放在/home/applvis/bts/interface中,通过unix shell去控制文件读取

Step1. 建立control table,用以测试unix shell将未读取的文件名存放至该表中

 1 create table bxj_interface_control_tb(
 2 batch_id number,
 3 file_seq number,
 4 file_name varchar2(240),
 5 record_count number,
 6 success_record number,
 7 failure_record number,
 8 process_status varchar2(50),
 9 request_id number,
10 user_id number,
11 user_name varchar2(240),
12 creation_date date
13 )
14 
15 create sequence bxj_batch_id_sq start with 1000

Step2. 确认存放interface dat资料文件夹下有5个文件,所以当unix shell处理后,这个5个文件必须存放至contorl表中

Step3. 确认存在的三个interface存放dat资料、log存放Shell运行的日志、sql存放SQL执行文件

Step4. 最关键的一步,建立Unix Shell,本人不是DBA出生,虽然学过Bash语法,但是不省精通,大家凑活着看

 1 #/bin/bash  
 2 # +--------------------------------------------+  
 3 # + An example of calling host concurrent      +   
 4 # + Author: Gavin.Bao                          +                                
 5 # +--------------------------------------------+  
 6 #  
 7 # ---------------------------------  
 8 #  Define variable
 9 # ---------------------------------
10 export ORA_USER_PASS=$1
11 export ORA_USER_ID=$2
12 export ORA_LOGIN_NAME=$3
13 export ORA_REQUEST_ID=$4
14 
15 export FOLDER_PATH="/home/applvis/bts/interface/"
16 export INTERFACE_PATH="/home/applvis/bts/interface"
17 export SQL_PATH="/home/applvis/bts/sql"
18 export LOG_PATH="/home/applvis/bts/log"
19 
20 # -------------------------------------------
21 #  Loop the file name and store it into array
22 # -------------------------------------------
23 x=0        
24 for filename in ${FOLDER_PATH}*;
25 do   
26   array[$x]=`basename $filename`  
27   let "x+=1"
28 done
29 
30 for interface_name in ${array[*]}
31 do
32   echo $interface_name
33 done
34 
35 # ---------------------------------  
36 #  Prepare plsql script  
37 # ---------------------------------
38 echo "set serveroutput on size 1000000" > $SQL_PATH/bxjinterface.sql  
39 echo "set feed off" >> $SQL_PATH/bxjinterface.sql  
40 echo "declare" >> $SQL_PATH/bxjinterface.sql
41 echo "  n_count number;" >> $SQL_PATH/bxjinterface.sql
42 echo "  n_batch_id number := &1;" >> $SQL_PATH/bxjinterface.sql
43 echo "  v_file_name varchar2(240) := '&2';" >> $SQL_PATH/bxjinterface.sql
44 echo "begin" >> $SQL_PATH/bxjinterface.sql  
45 echo "  select count(*) into n_count " >> $SQL_PATH/bxjinterface.sql  
46 echo "    from bxj_interface_control_tb where file_name = v_file_name;" >> $SQL_PATH/bxjinterface.sql  
47 echo "  if (n_count = 0) then" >> $SQL_PATH/bxjinterface.sql
48 echo "    insert into bxj_interface_control_tb " >> $SQL_PATH/bxjinterface.sql  
49 echo "    values (bxj_batch_id_sq.nextval,n_batch_id,v_file_name,0,0,0,'N',$ORA_REQUEST_ID,$ORA_USER_ID,'$ORA_LOGIN_NAME',sysdate);" >>$SQL_PATH/bxjinterface.sql
50 echo "  end if;" >>$SQL_PATH/bxjinterface.sql
51 echo "  commit;" >>$SQL_PATH/bxjinterface.sql
52 echo "  dbms_output.put_line('Excuted Sucessfully.');" >> $SQL_PATH/bxjinterface.sql  
53 echo "exception when others then" >> $SQL_PATH/bxjinterface.sql  
54 echo "  rollback;" >> $SQL_PATH/bxjinterface.sql  
55 echo "  dbms_output.put_line('Executed Failed');" >> $SQL_PATH/bxjinterface.sql  
56 echo "  dbms_output.put_line('SQLCODE='||SQLCODE);" >> $SQL_PATH/bxjinterface.sql  
57 echo "  dbms_output.put_line('SQLERRM='||SQLERRM);" >> $SQL_PATH/bxjinterface.sql  
58 echo "end;" >> $SQL_PATH/bxjinterface.sql  
59 echo "/" >> $SQL_PATH/bxjinterface.sql
60 
61 # -------------------------------------------  
62 #  Execute plsql script and generate the log
63 # -------------------------------------------  
64 if [ -s $SQL_PATH/bxjinterface.sql ]; then
65   echo -e "Running SQL script to find out bdump directory... \n"   
66   length=${#array[@]}
67   echo $length
68   for((i=0;i<$length;i++))
69   do
70     $ORACLE_HOME/bin/sqlplus -s apps/apps >> $LOG_PATH/bxjinterface.log << EOF  
71     @$SQL_PATH/bxjinterface.sql $i '${array[$i]}'
72 EOF
73 done
74 fi
75 
76 # --------------------------------  
77 #  show log file
78 # --------------------------------  
79 echo "Check the reslut "
80 echo "------------------------"
81 cat $LOG_PATH/bxjinterface.log
82 
83 echo "bxj shell end"

 

三、案例测试


Test1. 调用建立的Shell文件,读取文件名

 Test2. Unix Shell执行时,产生的Log文件

Test2. Unix Shell执行时,产生的SQL文件

Test3. 查看Contorl table中是否存在5个文件名

 

 

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
12天前
|
存储 供应链 监控
供应链复杂、工厂分散,半导体行业如何安全访问总部ERP系统?
电子元器件与半导体行业面临供应链复杂、生产计划多变等挑战,智能化ERP系统成为提升效率的关键。然而,数据安全至关重要,许多企业选择本地部署并结合内网穿透技术实现远程访问。以神州讯盟ERP为例,搭配贝锐花生壳,无需公网IP即可安全接入总部系统。花生壳采用多重加密与权限控制,保障数据传输安全,同时支持高速跨地区访问,仅需三步即可完成配置,满足多地协同办公需求,助力企业高效管理。
43 0
|
1月前
|
存储 JavaScript
(ERP系统查看DWG)MxCAD APP调用内部弹框的方法
MxCAD APP 二次开发提供了调用项目内部弹框的接口,以保持样式统一。用户需创建 `test_dialog` 文件夹并依次创建 `dialog.ts`、`dialog.vue` 和 `index.ts` 文件来注册、构建和渲染弹框。通过 `useDialogIsShow` 钩子函数控制弹框显示,并可在方法中直接调用 `dialog.showDialog()` 来控制弹框显隐。此外,还支持监听确认或取消事件获取数据,以及通过配置 `vite.config.ts` 解决样式冲突问题。最终在 `src/index.ts` 中引入相关文件即可实现弹框功能。
|
2月前
|
运维 供应链 监控
成本降30%,利润涨50%!点晴ERP系统助力模切企业逆势增长
在当前全球经济形势复杂多变的背景下,模切企业面临着原材料价格上涨、市场竞争加剧、客户需求多样化等多重挑战。如何在逆境中实现成本控制和利润增长,成为众多模切企业亟需解决的难题。
42 1
|
2月前
|
存储 人工智能 安全
业财一体 ERP 数智化管理系统
业财一体 ERP 数智化管理系统是基于钉钉 + 钉钉低代码构建,作为企业管理体系数字化转型升级的驱动器,目标是将业务管理与财务管理深度融合,帮助企业构建一个集成、高效、智能的管理体系。旨在通过先进的信息技术,打通各业务模块数据传递链路,进行业务财务的一体化管理,采取智能化手段大幅度提升工作效率,逐步实现企业数字化转型和智能化改造。
195 12
|
7月前
|
前端开发 JavaScript 关系型数据库
如何开发一个ERP系统:从零开始构建
【9月更文第4天】企业资源计划(ERP)系统是现代企业管理不可或缺的一部分,它集成了公司的关键业务流程,并提供了统一的数据管理平台。本文将探讨如何从零开始构建一个简单的ERP系统,并提供一些基本的代码示例来演示关键组件的开发过程。
1413 3
|
4月前
|
监控 JavaScript 数据可视化
实施模切ERP系统,为模切企业带来哪些效益
在众多制造企业中,工厂的日常运营依旧依赖于人工管理,导致生产效率低、反应慢、容易出错。 1、急单交期短、订单频繁变更怎么办? 2、物料、半成品如何及时跟上生产? 3、 客户验厂,品质质量如何追溯? 4、机台信息不清楚,时间配置情况不确定?
128 2
|
5月前
|
弹性计算 监控 数据库
制造企业ERP系统迁移至阿里云ECS的实例,详细介绍了从需求分析、数据迁移、应用部署、网络配置到性能优化的全过程
本文通过一个制造企业ERP系统迁移至阿里云ECS的实例,详细介绍了从需求分析、数据迁移、应用部署、网络配置到性能优化的全过程,展示了企业级应用上云的实践方法与显著优势,包括弹性计算资源、高可靠性、数据安全及降低维护成本等,为企业数字化转型提供参考。
150 5
|
5月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
5月前
|
人工智能 JavaScript 大数据
模切企业上点晴模切ERP系统是否合算
在模切行业快速发展的今天,企业如何提升管理效率、降低成本、增强市场竞争力成为了关键问题。面对市场上琳琅满目的模切ERP系统,点晴模切ERP在模切领域积累了20余年丰富的行业经验,能够提供贴合模切行业管理需求的先进解决方案。同时选择上点晴模切ERP系统是否理想选择,也成为众多模切企业关注的焦点。
61 8
|
5月前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。

推荐镜像

更多