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

news2025/1/20 19:25:01

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

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

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

04年在做一个项目的时候,我简单写过一个通过FNDLOAD工具在多个EBS环境间移植程序定义的文档,其中主要描述了如何使用FNDLOAD将AOL模块中的数据从一个环境移植到另一个环境,下面将从如何掌握并应用FNDLOAD这个工具的角度补充说明。

一、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命令工具的语法

FNDLOAD apps/appspwd 0 Y mode configfile datafile entity [ param ... ]

1. Mode:有 DOWNLOAD和UPLOAD

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

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

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

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

下面是FNDLOAD的流程描述图

二、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_lang FROM fnd_languages, v$nls_parameters WHERE language_code IN ('US', 'ZHS') AND parameter = 'NLS_CHARACTERSET';

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

模块

文件名

描述

afcpprog.lct

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

afcpexec.lct

可执行程序

afattach.lct

附件

afcpreqg.lct

请求组

afcprset.lct

请求集

afffload.lct

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

aflvmlu.lct

Lookups

afmdmsg.lct

消息

afscprof.lct

profile options 预制文件

afscursp.lct

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

afsload.lct

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

FND affrmcus.lct Form个性化定义

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

 

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

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

相关文章

AI智慧工地视频分析系统 yolov7

AI智慧工地视频分析系统通过yolov7网络模型视频智能分析技术,AI智慧工地视频分析算法模型对画面中物的不安全状态以及现场施工作业人员的不合规行为及穿戴进行全天候不间断实时分析,发现有人不合规行为及违规穿戴抽烟打电话等立即自动抓拍存档告警。在架…

跨平台开发之 Tauri

比起 Electron,Tauri 打包后的安装包体积是真的小。 跨平台开发 最近使用跨平台开发框架写了一个软件,在此记录一下。 说起跨平台开发,我的理解是这样的: 多依赖浏览器环境运行多使用前端语言进行开发只需一次编码,…

JavaScript的this关键字

文章目录 一、JavaScript this 关键字总结 一、JavaScript this 关键字 面向对象语言中 this 表示当前对象的一个引用。 但在 JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变。 在方法中,this 表示该方法所属的对象。 如果单独使用&a…

2023/4/18总结

项目 实现了服务器和客户端的连接,在登录注册上面。 然后去实现了密码MD5化,通过java自带的,去实现了MD5. public String getMD5(String str) throws NoSuchAlgorithmException {MessageDigest mdMessageDigest.getInstance("MD5&quo…

SSTI模板注入小结

文章目录 一、漏洞简述🍺二、flask模板注入🍺三、shrine(攻防世界)🍺四、SSTI注入绕过🍺 一、漏洞简述🍺 1、SSTI(Server-Side Template Injection,服务器端模板注入&am…

5个面向Python高级开发者的技巧

使用这些用于自定义类行为、编写并发代码、管理资源、存储和操作数据以及优化代码性能的高级技术来探索 Python 的深度。 本文探讨了 Python 中的五个高级主题,它们可以为解决问题和提高代码的可靠性和性能提供有价值的见解和技术。从允许您在定义类时自定义类行为的…

SpringBoot基础学习之(二十):Shiro与Thymeleaf的整合版本

还是一样,本篇文章是在上一篇文章的基础上,实施再次进阶 Shiro是一种特别的流行的安全框架,Thymeleaf则是spring boot架构中使用的一种特别引擎。今天介绍的则是它们俩的整合版本。 实现的功能:前端的显示的内容,是根…

vi/vim命令,使用vi编辑器命令详解

linux常用命令:vi/vim vi命令有三种模式:一般模式,编辑模式,命令模式(底行模式) 可以通过 vi [文件路径]文件名 的命令启动vi,并且打开指定的文件进行查看、编辑,其中[文件路径] 是可选参数。如…

微信小程序开发:实现毛玻璃效果

前言 在微信小程序开发的时候,也会遇到一些和在前端开发一样的样式需求,二者的相通类似性非常的高,就拿样式相关的需求来说,可以说是一模一样的操作。那么本文就来分享一个关于实现高斯模糊效果的需求,微信小程序和前端…

【Linux网络服务】FTP服务

FTP服务 一、FTP服务1.1FTP服务概述1.2FTP服务的特点1.3FTP服务工作过程 二、设置FTP服务2.1实验一:设置匿名用户访问FTP服务(最大权限)2.2实验二:设置本地用户验证访问ftp,并禁止切换到ftp以外的目录(默认…

Linux- 进程的切换和系统的一般执行过程

我想在介绍进程切换之前,先引入中断的相关知识,它是我们理解进程切换的重要前提,也是Linux操作系统的核心机制。 中断的类型 • 硬件中断(Interrupt),也称为外部中断,就是CPU的两根引脚&…

微服务学习-SpringCloud -Nacos (集群及CP架构相关学习)

文章目录 Nacos集群下心跳机制相对于单机会有怎样的改变?CAP原则和BASE原则常见的注册中心实现对比Nacos集群实现协议Nacos CP架构实现源码Nacos CP架构leader是如何选举的呢? Nacos集群下心跳机制相对于单机会有怎样的改变? 在上一遍单机模…

百万赞同:网络安全为什么缺人? 缺什么样的人?

1.网络安全为什么缺人? 缺人的原因是有了新的需求 以前的时候,所有企业是以产品为核心的,管你有啥漏洞,管你用户信息泄露不泄露,我只要做出来的产品火爆就行。 这一切随着《网络安全法》、《数据安全法》、《网络安全审查办法》…

No.041<软考>《(高项)备考大全》【第25章】量化项目管理

第25章】量化项目管理 1 考试相关2 量化项目管理3 准备量化管理项目4 量化的管理项目5 练习题参考答案: 1 考试相关 选择可能考0-1分,案例论文不考。 2 量化项目管理 量化项目管理(QPM)的目的在于量化地管理项目,以达成项目已建…

Auto-GPT 5分钟详细部署指南

安装 conda 1. 下载安装 miniconda3 : Miniconda — conda documentation conda是一个包和环境管理工具,它不仅能管理包,还能隔离和管理不同python版本的环境。类似管理nodejs环境的nvm工具。 2. conda环境变量: 新建 CONDA_H…

混合网络监控工具

多年来,网络不可避免地变得更加复杂。混合网络架构包括跨多个供应商的 LAN、WAN、公共或私有云存储以及混合云。简而言之,它是虚拟和物理网络组件的混合体,自远程工作出现以来,这种类型的网络架构已经起飞。 什么是混合网络 混合…

【《C和指针》笔记】第一章<快速上手>

注释以/*开始到*/结束或者使用// .预处理指令:因为它们是由预处理器解释的,预处理器读入代码,根据预处理指令对其进行修改,然后把修改过的源代码递交给编译器。预处理指令(#include、#define)所定义的变量…

【论文阅读笔记|CASE 2022】EventGraph: Event Extraction as Semantic Graph Parsing

论文题目:EventGraph: Event Extraction as Semantic Graph Parsing 论文来源:CASE2022 论文链接:https://aclanthology.org/2022.case-1.2.pdf 代码链接:GitHub - huiling-y/EventGraph 0 摘要 事件抽取涉及到事件类型检测、…

【Scala】集合

目录 类型 不可变集合 可变集合 数组 不可变 可变数组 不可变数组与可变数组的转换 多维数组 List list运算符 可变 ListBuffer Set 集合 不可变 Set 可变 mutable.Set Map 集合 可变 Map 元组 操作 通用操作 衍生集合操作 计算函数 排序 sorted sortB…

java springboot VUE 健康食谱管理系统开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot VUE 健康食谱管理系统是一套完善的完整信息管理类型系统,结合springboot框架和VUE完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开 发),系统具有完整的源代码…