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