Oracle EBS数据定义移植工具:FNDLOAD
在實(shí)際的EBS二次開(kāi)發(fā)中,我們經(jīng)常會(huì)碰到需要在各個(gè)環(huán)境之間移植二次開(kāi)發(fā)的程序?qū)ο笠约皵?shù)據(jù)定義,如在EBS二次開(kāi)發(fā)中并發(fā)請(qǐng)求的定義會(huì)涉及到:可執(zhí)行、并發(fā)程序、值集、請(qǐng)求組等的定義,定義需要從開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、UAT環(huán)境一直到正式環(huán)境,開(kāi)發(fā)人員完成一個(gè)并發(fā)請(qǐng)求開(kāi)發(fā)后,同樣的定義需要在多個(gè)環(huán)境中手工完成,勢(shì)必導(dǎo)致中間出現(xiàn)錯(cuò)誤,導(dǎo)致浪費(fèi)很多時(shí)間來(lái)進(jìn)行檢查,無(wú)形中增加了工作量;而更多的時(shí)候系統(tǒng)管理人員和開(kāi)發(fā)人員是分離的,開(kāi)發(fā)人員和系統(tǒng)管理人員之間還需要進(jìn)行任務(wù)的交接,進(jìn)一步增加了程序移植工作的難度和工作量。
而FNDLOAD則是為了移植EBS數(shù)據(jù)定義而誕生的工具,它可以移植定義在AOL中的數(shù)據(jù)定義,如我們常見(jiàn)的并發(fā)程序、值集、預(yù)置文件等等,嚴(yán)格來(lái)說(shuō)它可以實(shí)現(xiàn)任意兩個(gè)Oracle數(shù)據(jù)庫(kù)之間數(shù)據(jù)的移植,有了這個(gè)工具,我們就無(wú)需在多個(gè)環(huán)境中重復(fù)進(jìn)行手工定義了。
在Oracle EBS環(huán)境下,和FNDLOAD工具類(lèi)似的移植工具隨處可見(jiàn),并被廣泛應(yīng)用,如用來(lái)移植BI Publisher報(bào)表模板定義的XDOLoader工具;工作流定義移植工具WFLOAD;數(shù)據(jù)庫(kù)對(duì)象移植工具ODF和XDF.
?
一、FNDLOAD介紹
數(shù)據(jù)移植的目的無(wú)非是將一個(gè)EBS系統(tǒng)下數(shù)據(jù)庫(kù)中的某個(gè)表中的數(shù)據(jù)按照條件篩選出來(lái)后傳到另外EBS系統(tǒng)下數(shù)據(jù)庫(kù)中對(duì)應(yīng)的表中。FNNDLOAD的根本原理就是將數(shù)據(jù)從源數(shù)據(jù)庫(kù)中下載到數(shù)據(jù)文件中,然后再通過(guò)FNDLOAD將數(shù)據(jù)文件上傳到目標(biāo)數(shù)據(jù)庫(kù)中。
由于兩個(gè)數(shù)據(jù)庫(kù)系統(tǒng)不能保證是連接的,無(wú)法采用Oracle的DBLink技術(shù),因此FNDLOAD采用了數(shù)據(jù)文件作為兩個(gè)系統(tǒng)間傳遞的中介,而為了完成數(shù)據(jù)的下載和上傳,FNDLOAD引入了控制文件(lct):用來(lái)定義移植那張表中的數(shù)據(jù)列,并分DOWNLOAD和UPLOAD模式定義數(shù)據(jù)抽取和更新的邏輯,DOWNLOAD用在源數(shù)據(jù)庫(kù)環(huán)境下,UPLOAD應(yīng)用于目標(biāo)數(shù)據(jù)庫(kù)環(huán)境下。
控制文件是FNDLOAD工具的核心,下面我們來(lái)分析一下并發(fā)請(qǐng)求移植的控制文件($FND_TOP/patch/115/import/afcpprog.lct)的部分內(nèi)容:
控制文件由4部分組成:
1.?實(shí)體(entity):說(shuō)明控制文件是用來(lái)移植什么的,如上面的是 PROGRAM,一個(gè)控制文件中可以有多個(gè)實(shí)體,實(shí)體可以實(shí)現(xiàn)嵌套,實(shí)體和后面的section對(duì)應(yīng),一般一個(gè)實(shí)體對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)表
2.?段(section):定義實(shí)體的數(shù)據(jù)結(jié)構(gòu),定義了移植時(shí)數(shù)據(jù)的結(jié)構(gòu)和類(lèi)型,但不會(huì)包含內(nèi)部的ID,如使用APPLICATION_SHOURT_NAME代替APPLICATION_ID,一般和實(shí)體對(duì)應(yīng)的數(shù)據(jù)庫(kù)表的定義一致,如例子中的EXECUTABLE和PROGRAM段,運(yùn)行FNDLOAD命令時(shí)需要指定段名
3.?下載(download):定義了下載數(shù)據(jù)時(shí)所使用的SQL語(yǔ)句,SQL語(yǔ)句中以冒號(hào)(:)打頭的變量是FNDLOAD的變量,在運(yùn)行命令時(shí)可傳入?yún)?shù)的值來(lái)顯示數(shù)據(jù)的提取,如:APPLICATION_SHORT_NAME既是限制并發(fā)請(qǐng)求所屬的應(yīng)用
上載(upload):定義了上載數(shù)據(jù)時(shí)所執(zhí)行的SQL語(yǔ)句或者PLSQL代碼,如fnd_concurrent_programs_pkg.TRANSLATE_ROW和fnd_concurrent_programs_pkg.LOAD_ROW方法?
FNDLOAD命令工具的語(yǔ)法?
1.?Mode:有 DOWNLOAD和UPLOAD
2.?Configfile:就是FNDLOAD用來(lái)控制上傳和下載的控制文件(lct)
3.?Datafile:是生成的數(shù)據(jù)文件
4.?Entity:是要多控制文件中的哪部分?jǐn)?shù)據(jù)移植(數(shù)據(jù)可以嵌套,如并發(fā)請(qǐng)求包括了引用的值集)
5.?Param:是用來(lái)控制數(shù)據(jù)移植的參數(shù),可以多個(gè)
?
二、FNDLOAD使用步驟
使用FNDLOAD來(lái)移植數(shù)據(jù)的步驟如下:
1.?找到控制文件,這是非常關(guān)鍵的一步,很多網(wǎng)上文章介紹使用FNDLOAD來(lái)移植AOL模塊的數(shù)據(jù),很少提到其它內(nèi)容,實(shí)際上FNDLOAD可以用來(lái)移植數(shù)據(jù)庫(kù)中的任何數(shù)據(jù),只是說(shuō)如果Oracle沒(méi)有提供控制文件(lct)的話,需要自己來(lái)制作控制文件會(huì)得不償失,而隨著FNDLOAD的廣泛應(yīng)用,很多模塊的都提供了FNDLOAD的功能,控制文件一般都放在各模塊下的patch/115/import/目錄下,如AOL模塊的在$FND_TOP/patch/115/import下,總帳模塊$GL_TOP/patch/115/import下;進(jìn)入控制文件目錄后具體某個(gè)控制文件是用來(lái)進(jìn)行什么數(shù)據(jù)的移植那就只能打開(kāi)文件看里面的實(shí)體部分、DOWNLOAD和UPLOAD部分了
2.?查看DOWNLOAD部分中SQL語(yǔ)句的參數(shù),通過(guò)查看SQL語(yǔ)句得出可以使用哪些參數(shù)來(lái)限制數(shù)據(jù)的下載,如afcpprog.lct控制文件中并發(fā)程序的限制可以通過(guò)APPLICATION_SHORT_NAME來(lái)限制,這樣就可以限制只下載某個(gè)應(yīng)用下的并發(fā),同時(shí)可以使用多個(gè)參數(shù),參數(shù)通過(guò)key=value的方式提供,參數(shù)之間用空格隔開(kāi)
3.?運(yùn)行FNDLOAD命令的下載模式從源系統(tǒng)下載數(shù)據(jù),如下載并發(fā)請(qǐng)求:FNDLOAD apps/apps 0 Y DOWNLOAD afcpprog.lct prog.ldt PROGRAM APPLICATION_SHORT_NAME=XHU CONCURRENT_PROGRAM_NAME=XHUPOR00
4. 使用ftp工具下載源系統(tǒng)生成的數(shù)據(jù)文件(ldt)
5. 使用ftp工具上傳數(shù)據(jù)文件(ldt)到目標(biāo)系統(tǒng)
6.?運(yùn)行FNDLOAD上載模式將數(shù)據(jù)從數(shù)據(jù)文件上載到目標(biāo)數(shù)據(jù)庫(kù)中,如上傳上面下載的并發(fā)請(qǐng)求: FNDLOAD apps/apps 0 Y UPLOAD afcpprog.lct prog.ldt –
三、如何移植多語(yǔ)言定義數(shù)據(jù)
AOL模塊中很多數(shù)據(jù)的定義都是多語(yǔ)言的,如并發(fā)請(qǐng)求的定義,而通過(guò)FNDLOAD來(lái)進(jìn)行數(shù)據(jù)的移植一次只包括一個(gè)語(yǔ)言的信息,因此如果定義存在多語(yǔ)言的情況,需要按照語(yǔ)言環(huán)境進(jìn)行多次移植,即生成多個(gè)數(shù)據(jù)文件(ldt),在控制文件的目錄下,如$FND_TOP/patch/115/import/下存在US和ZHS這樣的語(yǔ)言目錄,控制文件內(nèi)容的開(kāi)始指定了語(yǔ)言環(huán)境, 如LANGUAGE = “US”,而很多控制文件并未分多語(yǔ)言版本,這個(gè)需要在運(yùn)行FNDLOAD命令的時(shí)候指定語(yǔ)言環(huán)境,所以使用控制文件的時(shí)候無(wú)需使用指定語(yǔ)言的版本,只要在運(yùn)行FNDLOAD命令的時(shí)候通過(guò)下面的命令來(lái)切換語(yǔ)言環(huán)境
| 1 2 3 4 5 6 7 | --中文 NLS_LANG= "AMERICAN_AMERICA.AL32UTF8" export NLS_LANG--英文 NLS_LANG= "SIMPLIFIED CHINESE_CHINA.AL32UTF8" export NLS_LANG |
通過(guò)上面的環(huán)境設(shè)置后再執(zhí)行FNDLOAD,生成的數(shù)據(jù)文件就是相應(yīng)語(yǔ)言環(huán)境的定義,只要切換不同的語(yǔ)言環(huán)境執(zhí)行下載,多次生成數(shù)據(jù)文件就實(shí)現(xiàn)了多語(yǔ)言數(shù)據(jù)的生成;然后執(zhí)行多次上載操作即可.
NLS_LANG可以通過(guò)下面的SQL查詢(xún)獲得:
| 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'; |
四、開(kāi)發(fā)員常用FNDLOAD控制文件列表
| 模塊 | 文件名 | 描述 |
| FND | afcpprog.lct | 可執(zhí)行、并發(fā)程序、值集、彈性域 |
| FND | afcpexec.lct | 可執(zhí)行程序 |
| FND | afattach.lct | 附件 |
| FND | afcpreqg.lct | 請(qǐng)求組 |
| FND | afcprset.lct | 請(qǐng)求集 |
| FND | afffload.lct | 值集、關(guān)鍵性彈性域和描述性彈性域及相關(guān)安全性設(shè)置 |
| FND | aflvmlu.lct | Lookups |
| FND | afmdmsg.lct | 消息 |
| FND | afscprof.lct | profile options 預(yù)制文件 |
| 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個(gè)性化定義 |
?
更多控制文件請(qǐng)到各模塊的patch/115/import目錄下去查找。
轉(zhuǎn)載于:https://www.cnblogs.com/Cqiang/archive/2013/03/31/2992031.html
總結(jié)
以上是生活随笔為你收集整理的Oracle EBS数据定义移植工具:FNDLOAD的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: “缘感欲回辙”下一句是什么
- 下一篇: 根据DbSchema生成代码2