项目期间,再次遇到数据移植的问题,要把自己开发的功能从demo环境移植到CRP环境,经过衡量,最后决定还是放弃手工移植,采用fnd工具来移植,以下就针对移植过程中遇到的问题做一些总结:
1、首先要确定自己要移植哪儿些数据(比如:Message、Lookup、Concurrent Program等等EBS中涉及到的数据),找到控制文件(lct文件),比如说对于AOL模块的数据,可以到$FND_TOP/patch/115/import下面寻找,常用的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 |
FND | affrmcus.lct | Form个性化定义 |
2、查看lct文件中的参数
首先lct文件的内容大概如下:(以afmdmsg.lct消息的控制文件为例)
其中的COMMENT不用管,DOWNLOAD(UPLOAD)后的实体(Entity)就是DEFINE位置定义的实体,DEFINE和END之间的部分为实体的段(Section)
FNDLOAD命令工具的用法:
FNDLOAD apps/appspwd 0 Y mode configfile datafile.ldt entity [ param ... ]
Mode:有 DOWNLOAD和UPLOAD
Configfile:就是FNDLOAD用来控制上传和下载的控制文件(lct)
Datafile:是生成的数据文件 (ldt)
Entity:是要多控制文件中的哪部分数据移植(数据可以嵌套,如并发请求包括了引用的值集) ,当一个控制文件中有多个实体定义的时候,选择其中要操作的部分
Param:是用来控制数据移植的参数,可以多个(可以从DOWNLOAD部分中的sql语句中的参数来知道下载某个entity需要什么样的参数,其实参数都是可选的,如果不加控制,就会下载全部)
3、下面以Message的DOWNLOAD为例来说明:
NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export NLS_LANG
FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afmdmsg.lct $FND_TOP/patch/115/import/hjit_message_xia_en.ldt FND_NEW_MESSAGES APPLICATION_SHORT_NAME=HJIT NLS_LANG= "AMERICAN_AMERICA.AL32UTF8"
其中前两句是linux中设定暂时性环境变量的方式,因为Message是由多语言的,所以要事先指定一下语言,对于多语言的数据的导入导出都可以这样,先设定系统的语言种类,然后执行导出,(非多语言的则不需要),第3句中就包含了FNDLOAD命令中的用法和参数,参数也可以使用模糊限定,比如对function的导出:
FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afsload.lct $FND_TOP/patch/115/import/function_xia.ldt FUNCTION FUNCTION_NAME=HJIT%
其中的FUNCTION_NAME=HJIT%就是使用了模板限定,只要Function_name是以HJIT打头的都会进行DOWNLOAD
NLS_LANG可以通过下面的SQL查询获得:
SELECT '"' || nls_language || '_' || nls_territory || '.' || VALUE || '"' nls_lang FROM fnd_languages, v$nls_parameters WHERE language_code IN ('US', 'ZHS') AND parameter = 'NLS_CHARACTERSET';
4、对于报表开发中定义的xml模板文件的导出,则需要使用XDOLoader命令工具,这是因为xml文件被作为了clob类型进行了处理,XDOLoader命令工具的使用如下:
导出clob型数据(XML publisher定义的数据模版):
java oracle.apps.xdo.oa.util.XDOLoader DOWNLOAD -DB_USERNAME apps -DB_PASSWORD apps -JDBC_CONNECTION '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=tclhn.com)(PORT=1531))(CONNECT_DATA=(SID=DEMO)))' -APPS_SHORT_NAME CUX1 -LCT_FILE $XDO_TOP/patch/115/import/xdotmpl.lct -LDT_FILE $XDO_TOP/patch/115/import/cux_cxpz_xia.ldt -DS_CODE HJITCXPZ
其中绿色部分为连接数据库服务器的tns。