Oracle EBS数据定义移植工具:FNDLOAD

在实际的EBS二次开发中,我们经常会碰到需要在各个环境之间移植二次开发的程序对象以及数据定义,如在EBS二次开发中并发请求的定义会涉及到:可执行、并发程序、值集、请求组等的定义,定义需要从开发环境、测试环境、UAT环境一直到正式环境,开发人员完成一个并发请求开发后,同样的定义需要在多个环境中手工完成,势必导致中间出现错误,导致浪费很多时间来进行检查,无形中增加了工作量;而更多的时候系统管理人员和开发人员是分离的,开发人员和系统管理人员之间还需要进行任务的交接,进一步增加了程序移植工作的难度和工作量。

FNDLOAD则是为了移植EBS数据定义而诞生的工具,它可以移植定义在AOL中的数据定义,如我们常见的并发程序、值集、预置文件等等,严格来说它可以实现任意两个Oracle数据库之间数据的移植,有了这个工具,我们就无需在多个环境中重复进行手工定义了。

在Oracle EBS环境下,和FNDLOAD工具类似的移植工具随处可见,并被广泛应用,如用来移植BI Publisher报表模板定义的XDOLoader工具;工作流定义移植工具WFLOAD;数据库对象移植工具ODFXDF.

 

一、FNDLOAD介绍

数据移植的目的无非是将一个EBS系统下数据库中的某个表中的数据按照条件筛选出来后传到另外EBS系统下数据库中对应的表中。FNNDLOAD的根本原理就是将数据从源数据库中下载到数据文件中,然后再通过FNDLOAD将数据文件上传到目标数据库中。

由于两个数据库系统不能保证是连接的,无法采用Oracle的DBLink技术,因此FNDLOAD采用了数据文件作为两个系统间传递的中介,而为了完成数据的下载和上传,FNDLOAD引入了控制文件(lct):用来定义移植那张表中的数据列,并分DOWNLOAD和UPLOAD模式定义数据抽取和更新的逻辑,DOWNLOAD用在源数据库环境下,UPLOAD应用于目标数据库环境下。

控制文件是FNDLOAD工具的核心,下面我们来分析一下并发请求移植的控制文件($FND_TOP/patch/115/import/afcpprog.lct)的部分内容:

控制文件由4部分组成:

1. 实体(entity):说明控制文件是用来移植什么的,如上面的是 PROGRAM,一个控制文件中可以有多个实体,实体可以实现嵌套,实体和后面的section对应,一般一个实体对应一个数据库表

2. 段(section):定义实体的数据结构,定义了移植时数据的结构和类型,但不会包含内部的ID,如使用APPLICATION_SHOURT_NAME代替APPLICATION_ID,一般和实体对应的数据库表的定义一致,如例子中的EXECUTABLE和PROGRAM段,运行FNDLOAD命令时需要指定段名

3. 下载(download):定义了下载数据时所使用的SQL语句,SQL语句中以冒号(:)打头的变量是FNDLOAD的变量,在运行命令时可传入参数的值来显示数据的提取,如:APPLICATION_SHORT_NAME既是限制并发请求所属的应用

上载(upload):定义了上载数据时所执行的SQL语句或者PLSQL代码,如fnd_concurrent_programs_pkg.TRANSLATE_ROW和fnd_concurrent_programs_pkg.LOAD_ROW方法 

FNDLOAD命令工具的语法 

1. Mode:有 DOWNLOAD和UPLOAD

2. Configfile:就是FNDLOAD用来控制上传和下载的控制文件(lct)

3. Datafile:是生成的数据文件

4. Entity:是要多控制文件中的哪部分数据移植(数据可以嵌套,如并发请求包括了引用的值集)

5. Param:是用来控制数据移植的参数,可以多个

 

二、FNDLOAD使用步骤

使用FNDLOAD来移植数据的步骤如下:

1. 找到控制文件,这是非常关键的一步,很多网上文章介绍使用FNDLOAD来移植AOL模块的数据,很少提到其它内容,实际上FNDLOAD可以用来移植数据库中的任何数据,只是说如果Oracle没有提供控制文件(lct)的话,需要自己来制作控制文件会得不偿失,而随着FNDLOAD的广泛应用,很多模块的都提供了FNDLOAD的功能,控制文件一般都放在各模块下的patch/115/import/目录下,如AOL模块的在$FND_TOP/patch/115/import下,总帐模块$GL_TOP/patch/115/import下;进入控制文件目录后具体某个控制文件是用来进行什么数据的移植那就只能打开文件看里面的实体部分、DOWNLOAD和UPLOAD部分了

2. 查看DOWNLOAD部分中SQL语句的参数,通过查看SQL语句得出可以使用哪些参数来限制数据的下载,如afcpprog.lct控制文件中并发程序的限制可以通过APPLICATION_SHORT_NAME来限制,这样就可以限制只下载某个应用下的并发,同时可以使用多个参数,参数通过key=value的方式提供,参数之间用空格隔开

3. 运行FNDLOAD命令的下载模式从源系统下载数据,如下载并发请求:FNDLOAD apps/apps 0 Y DOWNLOAD afcpprog.lct prog.ldt PROGRAM APPLICATION_SHORT_NAME=XHU CONCURRENT_PROGRAM_NAME=XHUPOR00

4. 使用ftp工具下载源系统生成的数据文件(ldt)

5. 使用ftp工具上传数据文件(ldt)到目标系统

6. 运行FNDLOAD上载模式将数据从数据文件上载到目标数据库中,如上传上面下载的并发请求: FNDLOAD apps/apps 0 Y UPLOAD afcpprog.lct prog.ldt –

三、如何移植多语言定义数据

AOL模块中很多数据的定义都是多语言的,如并发请求的定义,而通过FNDLOAD来进行数据的移植一次只包括一个语言的信息,因此如果定义存在多语言的情况,需要按照语言环境进行多次移植,即生成多个数据文件(ldt),在控制文件的目录下,如$FND_TOP/patch/115/import/下存在US和ZHS这样的语言目录,控制文件内容的开始指定了语言环境, 如LANGUAGE = “US”,而很多控制文件并未分多语言版本,这个需要在运行FNDLOAD命令的时候指定语言环境,所以使用控制文件的时候无需使用指定语言的版本,只要在运行FNDLOAD命令的时候通过下面的命令来切换语言环境

1
2
3
4
5
6
7
--中文
NLS_LANG= "AMERICAN_AMERICA.AL32UTF8"
export NLS_LANG--英文
NLS_LANG= "SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export NLS_LANG

通过上面的环境设置后再执行FNDLOAD,生成的数据文件就是相应语言环境的定义,只要切换不同的语言环境执行下载,多次生成数据文件就实现了多语言数据的生成;然后执行多次上载操作即可.

NLS_LANG可以通过下面的SQL查询获得:

1
2
3
4
SELECT '"' || nls_language || '_' || nls_territory || '.' || VALUE || '"'  nls_langFROM fnd_languages, v$nls_parametersWHERE language_code IN ('US', 'ZHS')AND parameter = 'NLS_CHARACTERSET';

四、开发员常用FNDLOAD控制文件列表

模块

文件名

描述

FND

afcpprog.lct

可执行、并发程序、值集、弹性域

FND

afcpexec.lct

可执行程序

FND

afattach.lct

附件

FND

afcpreqg.lct

请求组

FND

afcprset.lct

请求集

FND

afffload.lct

值集、关键性弹性域和描述性弹性域及相关安全性设置

FND

aflvmlu.lct

Lookups

FND

afmdmsg.lct

消息

FND

afscprof.lct

profile options 预制文件

FND

afscursp.lct

Application users,User Responsibilities,Security groups,Applications,Application Responsibilities and Exclusion Functions

FND

afsload.lct

FORM, FUNCTION, MENU, ENTRY, OBJECT, OBJECT_INSTANCE_SET, GRANT

FNDaffrmcus.lctForm个性化定义

 

更多控制文件请到各模块的patch/115/import目录下去查找。

转载于:https://www.cnblogs.com/Cqiang/archive/2013/03/31/2992031.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

21-特征匹配方法(Brute-Force蛮力匹配)

Brute-Force蛮力匹配 cv2.BFMatcher(crossCheck True) crossCheck表示两个特征点相互匹配 例如A中的第i个特征点与B中的第j个特征点最近,并且B中的第j个特征点到A中的第i个特征点也是 NORM_L2:归一化数组的(欧几里得距离),如果其他特征计算…

weakhashmap_Java WeakHashMap values()方法与示例

weakhashmapWeakHashMap类values()方法 (WeakHashMap Class values() method) values() method is available in java.util package. values()方法在java.util包中可用。 values() method is used to get the values that exist in this map to be viewed in a collection. val…

Opencv——几何空间变换(仿射变换和投影变换)

几何空间变换【1】几何变换(空间变换)简述【2】变换矩阵知识简述齐次坐标的概念几何运算矩阵【3】图像的仿射变换1、平移变换2、比例缩放3、旋转4、对称变换(不做展示)1、关于X轴变换2、关于Y轴变换3、关于直线YX变换4、关于直线Y…

用于主题检测的临时日志(e1784e6f-037e-45de-bad1-8bbc239818ee - 3bfe001a-32de-4114-a6b4-4005b770f6d7)...

这是一个未删除的临时日志。请手动删除它。(578392f7-2207-4b01-b36d-c483f0699988 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)转载于:https://www.cnblogs.com/Fly-sky/archive/2011/03/03/1969850.html

probuffer java_Protocol Buffer的使用

Probotbuf简介在网络通信和通用数据交换等应用场景中经常使用的技术是 JSON 或 XML,这两种技术常被用于数据的结构化呈现和序列化。我们可以从两个方面来看JSON 和 XML与protobuf的异同:一个是数据结构化,一个是数据序列化。这里的数据结构化…

根据DbSchema生成代码2

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel; using System.Threading; using System.IO; using Rocky;namespace Rocky.CodeBuilder {public class DbBuilder : Disposable{#region 字段public even…

22-随机抽样一致算法RANSAC

随机抽样一致算法(Random sample consensus,RANSAC) 看似复杂,其基本思想就是:随机选取俩点,然后连接,给定一个容忍范围,在这个范围内的点越多越好,然后不断的迭代进行找两点之间容忍范围内点最…

treeset比较器_Java TreeSet比较器()方法与示例

treeset比较器TreeSet类的compare()方法 (TreeSet Class comparator() method) comparator() method is available in java.util package. 比较器()方法在java.util包中可用。 comparator() method is used to get the Comparator object based on customizing order the eleme…

智能车复工日记【1】——菜单索引回顾

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。 菜单回顾 1、系列文章解析结构元素菜单图示菜单缺点:1、系列文章 【智能车Code review】—曲率计算、最小二乘法拟合 【智能…

[转载]Oracle 11g R1下的自动内存经管(2)

AMM调整 除现有的用于内存经管的V$视图外,Oracle 11g还新添加了下面4个视图用于自动内存经管: ? ◆V$MEMORY_CURRENT_RESIZE_OPS ? ◆V$MEMORY_DYNAMIC_COMPONENTS ? ◆V$MEMORY_RESIZE_OPS ? ◆V$MEMORY_TARGET_ADVICE 转载于:https://www.cnblogs.…

23-背景建模

帧差法 由于场景中的目标在运动,目标的影像在不同图像帧中的位置不同。该类算法对时间上连续的两帧图像进行差分运算,不同帧对应的像素点相减,判断灰度差的绝对值,当绝对值超过一定阈值时,即可判断为运动目标&#xf…

DB2 9 运用开辟(733 考试)认证指南,第 3 部门: XML 数据独霸(4)

议决运用顺序存储和检索 XMLXML 编码字符编码在汗青上,术语 字符集、字符编码 和 码页 都有雷同的意义:一个字符集和一个二进制码集,其中每个码示意一个字符。(码页是来自 IBM 的一个术语,示意一个大型主机或 IBM PC 上…

system.setin_Java System类setIn()方法及示例

system.setin系统类setIn()方法 (System class setIn() method) setIn() method is available in java.lang package. setIn()方法在java.lang包中可用。 setIn() method is used to assign again the standard input stream. setIn()方法用于再次分配标准输入流。 setIn() met…

Opencv——霍夫变换以及遇到的一些问题

目录问题1 :颜色空间转换函数参数问题:CV_BGR2GRAY vs CV_GRAY2BGR问题2:cvRound()、cvFloor()、cvCeil()函数用法霍夫变换的含义标准霍夫直线变换霍夫线变换函数参数讲解累计概率霍夫变换霍夫变换圆变换原理和算法步骤:霍夫圆变换…

java ssm如何上传图片_ssm整合-图片上传功能(转)

本文介绍 ssm (SpringSpringMVCMybatis)实现上传功能。以一个添加用户的案例介绍(主要是将上传文件)。一、需求介绍我们要实现添加用户的时候上传图片(其实任何文件都可以)。文件名:以 博客名日期的年月日时分秒毫秒形式命名如 言曌博客2017082516403213.png路径&am…

宏定义和内联函数区别

内联函数是代码被插入到调用者代码处的函数。如同 #define 宏,内联函数通过避免被调用的开销来提高执行效率,尤其是它能够通过调用(“过程化集成”)被编译器优化。 宏定义不检查函数参数,返回值什么的,只是…

24-光流估计

光流是空间运动物体在观测成像平面上的像素运动的“瞬间速度”,根据各个像素点的速度矢量特征,可以对图像进行动态分析,例如目标跟踪 亮度恒定:同一点随着时间的变化,其亮度不会发生改变 小运动:随着时间的…

java公平索非公平锁_java中的非公平锁不怕有的线程一直得不到执行吗

首先来看公平锁和非公平锁,我们默认使用的锁是非公平锁,只有当我们显示设置为公平锁的情况下,才会使用公平锁,下面我们简单看一下公平锁的源码,如果等待队列中没有节点在等待,则占有锁,如果已经…

mybatis.net - 5 嵌入资源与引用资源

在SqlMap.config文件中可以有两种方式引入外部的文件。 一种是通过资源的方式&#xff0c;在文件中表现为 resource&#xff0c;就是引用外部的文件&#xff0c;这里需要保证文件的路径正确。 <sqlMaps><sqlMap resource"Maps/ProductMap.xml"/><sqlM…

智能车复工日记【3】:图像处理——基本扫线和基本特征提取和十字补线

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。 目录 1、系列文章2、前言3、基本扫线(除了进入环岛状态或者坡道或者十字路口的普通扫线)1.基本数据和初步特征4、进一步特征…