码迷,mamicode.com
首页 > 数据库 > 详细

Unix Shell_Oracle EBS基于主机文件Host开发详解(案例)

时间:2014-06-28 11:54:12      阅读:1396      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   color   get   使用   

2014-06-20 BaoXinjian

bubuko.com,布布扣一、摘要


Oracle 并发程式中Host Type的可执行程式,它的作用是用于调用Unix Shell去执行某些需求

个人觉得Oracle EBS中引入Host去调用unix shell其弥补了很多PLSQL类型程式无法做的某些功能,以unix shell的语法结构直接对服务器进行操作

写host并发程式时,需要较强的Bash语法知识,个人不做DBA,只了解一部分,所以就不具体介绍了,只说明一下Oracle EBS开发Unix Shell时需要注意的地方

1. Host并发程式中必须定义的4个系统参数,自定义参数可以从第5个开始引用

  • ORA_USER_PASS=$1
  • ORA_USER_ID=$2
  • ORA_LOGIN_NAME=$3
  • ORA_REQUEST_ID=$4

2 Prog文件放置时必须注意读写权限,最好是777,避免无法应用

3 并发程式设定好之后,注意通过fndcpesr建立虚拟连接

bubuko.com,布布扣

4. 文件后缀名不是.sh, 而是.prog

 

bubuko.com,布布扣二、案例分析


案例: 创建一个Host并发程式,自定义2个参数,将Host自带的4个系统参数和2个自定义参数在host程式运行后,自动存放至记录表中

1. 创建一个测试表,用以存放Host并发程式传入的参数

create table bxj_hosts_test(
  ora_user_pass varchar2(50),   ->必须定义的系统参数用户及密码
  ora_user_id varchar2(50),       ->必须定义的系统参数用户ID
  ora_login_name varchar2(50), ->必须定义的系统参数用户名
  ora_request_id varchar2(50),   ->必须定义的系统Request_ID
  invoice_id varchar2(50),          ->自定义参数
  invoice_number varchar2(240),->自定义参数
  creation_date date
);

2. 建立一个后缀名为prog的Unix Shell文件,采用Bash语法,其构成为4部分

2.1 定义从并发管理器传入的4个默认系统参数和2个自定义参数

2.2 准备SQL文件用以之后调用,并产生$ORACLE_PATH/bxjhosts.sql

2.3 通过SQLPLUS执行第二步产生的SQL文件

2.4 根据SQLPLUS中的DBMSOUT,产生LOG文件

 1 #/bin/bash  
 2 # +--------------------------------------------+  
 3 # + An example of calling host concurrent      +   
 4 # + Author: Gavin.Bao                          +                                
 5 # +--------------------------------------------+  
 6 #  
 7 # ---------------------------------  
 8 #  Define variable
 9 # ---------------------------------  
10   
11 export ORA_USER_PASS=$1
12 export ORA_USER_ID=$2 
13 export ORA_LOGIN_NAME=$3 
14 export ORA_REQUEST_ID=$4 
15 
16 export INVOICE_ID=$5
17 export INVOICE_NUMBER=$6
18 
19 export ORACLE_PATH="/home/applvis/bts"
20   
21 # ---------------------------------  
22 #  Prepare plsql script  
23 # ---------------------------------  
24   
25 echo "set serveroutput on size 1000000" > $ORACLE_PATH/bxjhosts.sql  
26 echo "set feed off" >> $ORACLE_PATH/bxjhosts.sql  
27 echo "begin" >> $ORACLE_PATH/bxjhosts.sql  
28 echo "  insert into bxj_hosts_test " >> $ORACLE_PATH/bxjhosts.sql  
29 echo "  values (‘$ORA_USER_PASS‘,‘$ORA_USER_ID‘,‘$ORA_LOGIN_NAME‘, ‘$ORA_REQUEST_ID‘, ‘$INVOICE_ID‘, ‘$INVOICE_NUMBER‘, SYSDATE);" >>$ORACLE_PATH/bxjhosts.sql
30 echo "  commit;" >>$ORACLE_PATH/bxjhosts.sql
31 echo "  dbms_output.put_line(‘Excuted Sucessfully.‘);" >> $ORACLE_PATH/bxjhosts.sql  
32 echo "exception when others then" >> $ORACLE_PATH/bxjhosts.sql  
33 echo "  rollback;" >> $ORACLE_PATH/bxjhosts.sql  
34 echo "  dbms_output.put_line(‘Executed Failed‘);" >> $ORACLE_PATH/bxjhosts.sql  
35 echo "  dbms_output.put_line(‘SQLCODE=‘||SQLCODE);" >> $ORACLE_PATH/bxjhosts.sql  
36 echo "  dbms_output.put_line(‘SQLERRM=‘||SQLERRM);" >> $ORACLE_PATH/bxjhosts.sql  
37 echo "end;" >> $ORACLE_PATH/bxjhosts.sql  
38 echo "/" >> $ORACLE_PATH/bxjhosts.sql
39   
40 # --------------------------------  
41 #  Execute plsql script  
42 # --------------------------------  
43   
44 if [ -s $ORACLE_PATH/bxjhosts.sql ]; then  
45     echo -e "Running SQL script to find out bdump directory... \n"   
46     $ORACLE_HOME/bin/sqlplus -s apps/apps > $ORACLE_PATH/bxjhosts.log << EOF  
47     @$ORACLE_PATH/bxjhosts.sql  
48 EOF
49 fi
50 
51 # --------------------------------  
52 #  Execute generate log file
53 # --------------------------------  
54 echo "Check the reslut "
55 echo "------------------------"
56 cat $ORACLE_PATH/bxjhosts.log
57   
58 echo "bxjhosts.sh excuted end"

3. 在application定义Excutable 和 Concurrent Program之前,在Unix环境下测试Prog文件,确保该文件没有问题,不存在语法错误

bubuko.com,布布扣

4. 配置Prog文件读写权限和使用fndcpesr建立bxjhosts.prog的虚拟连接

4.1设定权限: chmod 777 bxjhosts.prog

4.2建立虚拟连接: ln -s $FND_TOP/bin/fndcpesr $FND_TOP/bin/bxjhosts

bubuko.com,布布扣

5. 语法没有任何问题,定义Excutable和Concurrent Program

Unix Shell中前4个参数,系统会默认赋值,从5个参数开始,才真正从并发程式的定义中取值

bubuko.com,布布扣

bubuko.com,布布扣

 

bubuko.com,布布扣三、案例测试


 Test1. 调用该程式

bubuko.com,布布扣

Test2. 在执行Host并发程式中,因为在Prog中定义了两个文件产生方式如下

bubuko.com,布布扣

Test2.1 SQL文件用以最终Prog Shell最终执行哪段SQL

bubuko.com,布布扣

Test2.2 LOG文件用以最终Prog Shell执行过程中的Log语法

bubuko.com,布布扣

 

Test3. 将Host Prog中的Insert语句执行结果如下,4个系统参数,2个用户自定义参数

bubuko.com,布布扣

 

bubuko.com,布布扣四、 案例中遇到的问题


Issue1 调用程式时提示无法找到该host文件,无法被执行,原因在于prog文件的权限问题和虚拟连接是否建立

bubuko.com,布布扣

 

******************  作者: 鲍新建 ********************

bubuko.com,布布扣

Unix Shell_Oracle EBS基于主机文件Host开发详解(案例),布布扣,bubuko.com

Unix Shell_Oracle EBS基于主机文件Host开发详解(案例)

标签:des   style   blog   color   get   使用   

原文地址:http://www.cnblogs.com/eastsea/p/3799014.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!