Oracle EBS資料定義移植工具:Xdf(XML Object Description File)
Oracle EBS二次開發中,往往會建立很多資料庫物件,如表、同義詞、檢視等,這些資料庫物件是二次開發配置管理內容很重要的一部分,通常情況下我們會使用指令碼檔案來記錄這些資料庫物件的建立、變更和維護,隨著開發的進行需要對這些物件的指令碼進行版本管理;更重要的是將這些資料庫物件從開發環境移植到其它環境的時候面臨著諸多的問題:
資料庫物件本身並沒有實現版本管理 需要安裝人員執行多個數據庫物件指令碼 安裝人員必須瞭解一定的資料庫知識才能執行指令碼 指令碼的安裝的方式容易出錯,如果設計的指令碼和目標系統有所出入,很有可能導致更新出錯或帶來災難 需要分別為多個目標系統定製安裝指令碼,工作量非常大 指令碼的格式沒有統一的標準 作為開發人員很希望有一個工具來完成資料庫物件在兩個資料庫之間的移植,而無需我們為了不同的資料庫維護不同的物件指令碼,避免上面所描述的問題,下面我們來看看Oracle為我們所提供的解決方案:XDF(XML Object Description File)工具。
XDF工具的原理和FNDLOAD是一樣的,同樣是從源系統中獲取需要移植物件的元資料資訊後生成資料檔案(.xdf),然後在目標系統中使用資料檔案根據目標系統的情況生成相應的操作來新增或者修改資料庫物件。
目前版本的Xdf(EBS R12.1.1)可以完成以下資料庫物件的移植:
Table Index View Sequence Synonym Mview Mviewlog 一、ODF(Object Description File)介紹
在講解XDF工具之前我們必須先了解一下它的前身ODF(Object Description File),ODF是在11i之前Oracle為EBS系統提供的資料庫物件移植工具,它有兩個元件組成:
1. ODF Generator(adodfgen):用來從源系統中生成資料庫物件的描述資訊檔案(.odf),如生成PO_HEADERS_ALL這個表的定義資訊。但是這個工具作為Oracle內部使用從來沒有對外公開過,致使我們無法使用這個工具,我們所能夠得到的odf資料檔案都是Oracle作為補丁型別提供給我們的,因此對於我們二次開發移植來說根本無法使用ODF這個工具。
2. ODF Comparison(adodfcmp):用來在目標系統中通過對比odf資料檔案和目標系統資料庫中物件來生成並執行相應命令,odf檔案中包括了資料庫物件所有的資訊,如果它發現目標系統中不存在這個物件的時候就建立它;如果目標系統中已經存在這個物件並版本低於odf檔案中描述的物件就修改物件的定義。這個工具在很多補丁或者Oracle解決問題的時候會用來進行odf資料檔案的對比操作。
adodfcmp可以在$AD_TOP/bin目錄下找到, 由於並不是經常使用,在此就不做更多詳細介紹,有興趣的可以在命令列中輸入 adodfcmp命令後回車可以看到使用的說明
使用的例子:
adodfcmp mode=sequences priv_schema=system/manager userid=gl/gl touser=apps/apps odffile=glxx.odf changedb=Yes adodfcmp mode=tables priv_schema=system/manager userid=gl/gl touser=apps/apps odffile=glxxx.odf changedb=Yes adodfcmp mode=views priv_schema=system/manager userid=gl/gl touser=apps/apps odffile=glxxx.odf changedb=Yes
雖然Oracle並未公開ODF工具供我們使用,但是Oracle內部看似還在使用它,在EBS R12版中可以看到很多模組中還有odf資料檔案提供,odf資料檔案一般在各模組的 patch/115/odf 目錄下
二、Xdf(XML Object Description File)
在Oracle EBS 11i之後,Oracle結合了Java和XML的技術推出了XDF這個資料庫物件移植工具作為ODF的接班,XDF作為FND模組中的一個工具元件出現,XDF的Java實現在$JAVA_TOP/oracle/apps/fnd/odf2 目錄下,它的原理和ODF以及FNDLOAD是一樣的,只是XDF不像FNDLOAD那樣需要控制檔案而已。
但是在EBS R12之前,Oracle並未公開XDF生成工具(FndXdfGen),所以也無法用來移植客戶化的資料庫物件,直到R12釋出的時候,FndXdfGen終於向我們開放了,至此我們終於可以在二次開發中使用Xdf這個工具。
XDF工具由2個元件構成:
物件描述生成工具(FndXdfGen):用來從源系統中生成資料庫物件的描述資訊檔案(.xdf) 物件對比工具(FndXdfCmp):用來在目標系統中通過對比odf資料檔案和目標系統資料庫中物件來生成並執行相應命令,它是Xdf工具的核心
1,物件描述生成工具(FndXdfGen)
Xdf生成工具是用來從源資料庫系統中將描述資料庫物件的元資料資訊從資料字典中取出後生成odf檔案的工具,它通過Java類oracle.apps.fnd.odf2.FndXdfGen來實現
語法如下:
java oracle.apps.fnd.odf2.FndXdfGen apps_schema= apps_pwd= jdbc_protocol= jdbc_conn_string= object_name= xsl_directory= [object_type=] [owner_name=] [xdf_filename=] [deferred=<yes|no|> ] [logfile=] [dropcr=] [custom_defval=colname1=col1value;colname2=col2value] [includetriggers=][obsolete=][base_partition=][apply_dbversion=] 關鍵的幾個引數:
apps_schema:apps模式名稱,一般為apps apps_pwd:apps模式的密碼 jdbc_conn_string:資料庫連線資訊,可以使用Net8格式的連線或者hostname:port:sid的格式 object_name:指定要匯出資訊的資料庫物件名稱,trigger和sequence兩種型別可以使用百分號(%)來一次性提取多個,其它型別需要明確指定名稱,一次提取一個物件 xsl_directory:用來做XSLT轉化時所要求的xsl檔案目錄,通常使用$FND_TOP/patch/115/xdf/xsl 或者 $FND_TOP/admin/xdf/xsl jdbc_protocol:jdbc協議(thin 或 oci8) object_type:匯出的物件型別,有table, mview, mviewlog, index, view, sequence, synonym owner_app_shortname:物件所屬的應用簡稱 xdf_filename:生成的物件描述檔名稱,名稱自動新增字尾”.xdf” 其它引數可以直接在命令列中輸入java oracle.apps.fnd.odf2.FndXdfGen 後打印出來看
下面以移植 xhu.xhu_blog_article_2201 表為例來演示如何使用XDF工具,使用appl作業系統使用者登入到EBS中間伺服器,執行如下的命令:
java oracle.apps.fnd.odf2.FndXdfGen apps_schema=apps apps_pwd=apps jdbc_protocol=thin jdbc_conn_string=ebs006.hand-china.com:1522:VIS02 object_name=XHU_BLOG_ARTICLE_2201 xsl_directory=$FND_TOP/patch/115/xdf/xsl owner_app_shortname=XHU object_type=table
命令正常執行後會看到如下的日誌資訊輸出:
Generating xdf - xhu_blog_friend_2201.xdf The xdf file contains the following objects Primary Object's Application Short Name : XHU Primary Object Schema Name : XHU Primary Object Name : XHU_BLOG_FRIEND_2201 Primary Object Type : TABLE Dependent Object Information : Indexes on XHU_BLOG_FRIEND_2201 : XHU_BLOG_FRIEND_2201_U1 None Sequence(s) on XHU_BLOG_FRIEND_2201 : XHU_BLOG_FRIEND_2201_S Policy(ies) on XHU_BLOG_FRIEND_2201 : None Created xdf successfully 從上面的日誌資訊中可以看到表、表上的索引、表的序列(按照<table_name>_s格式建立)和表的策略都一併匯出,成功執行後會生成物件描述檔案xhu_blog_article_2201.xdf,生成的物件描述檔案(.xdf)是XML結構的,有興趣的可以用記事本開啟看看裡面的內容。
物件描述檔案記錄資訊的特點:
以XML格式描述物件資訊 將相關聯的物件一起提取出來,如表上的索引、策略和觸發器等 不管在源系統中資料庫表是否註冊到EBS,生成描述資訊都包含了這的資訊 物件都具有自己的版本號,如表和表中的列都有自己的版本號 物件都有雜湊值 系統中很多資料庫物件的描述檔案都儲存在各模組的 patch/115/xdf 目錄下
2,物件對比工具(FndXdfCmp)
FndXdfCmp是Xdf工具的核心元件,它根據物件描述檔案(.xdf)中物件的資訊,並根據目標資料庫中對應物件的存在情況來生成對應的DDL語句,例如表物件,如果在目標系統中不存在,那就生成CREATE TABLE語句,否則就生成ALTER TABLE語句。
FndXdfCmp根據物件描述檔案的內容、目標系統的物件存在情況以及物件型別來生成相應的DDL語句,整個XDF工具的魅力也就在此,不管存在多少個目標系統,我們移植時只需要一個物件的描述檔案(.xdf),剩下的事情全部交給XDF對比工具(FndXdfCmp)去為我們完成。
FndXdfCmp使用語法:
java oracle.apps.fnd.odf2.FndOdfCmp < schema_name> < schema_Pwd> < apps_schema> < apps_pwd><jdbc_protocol> <jdbc_conn_string> <object_type> <xdf_filename> <xsl_directory> [CLONE_UN=<apps_clone_schema_id> CLONE_PW=<apps_clone_schema_password> SPEC_UN=<table_specs_schema_id> SPEC_PW=<table_specs_schema_password>] <xsl file Dir>[deferred=<list>] [dropCr=<list>] [logfile=<filename>] [changedb=<y/n>] [data_sec_vpd=<y/n>] [parallel_index_threshold=<block count>] [index_category=<small/large/both>] 關鍵的幾個引數:
schema_name:物件所屬模式的名稱 schema_pwd:物件所屬模式的密碼 jdbc_protocol:jdbc協議(thin 或 oci8) jdbc_conn_string:資料庫連線資訊,可以使用Net8格式的連線或者hostname:port:sid的格式 object_type:對比的物件型別,有table, mview, mviewlog, index, view, sequence, synonym xdf_filename:物件描述檔案的名稱 xsl_directory:用來做XSLT轉化時所要求的xsl檔案目錄,通常使用$FND_TOP/patch/115/xdf/xsl 或者 $FND_TOP/admin/xdf/xsl 其它引數可以直接在命令列中輸入java oracle.apps.fnd.odf2.FndXdfCmp後打印出來看
將xhu.xhu_blog_article_2201表的資料檔案傳到目標系統下,使用appl作業系統使用者登入到EBS中間伺服器,執行如下的命令來將xhu.xhu_blog_article_2201表移植到新的環境中:
java oracle.apps.fnd.odf2.FndXdfCmp XHU XHU APPS APPS thin ebs12.hand-china.com:1522:VIS04 table xhu_blog_article_2201.xdf $FND_TOP/patch/115/xdf/xsl 使用Xdf移植的資料庫表會自動註冊到EBS裡面,即註冊到FND_TABLES表中,成功執行後可以登入資料庫檢視資料庫物件的情況,
SELECT * FROM dba_objects WHERE object_name = upper(‘xhu_blog_article_2201′); SELECT * FROM fnd_tables WHERE table_name = upper(‘xhu_blog_article_2201′); 3,Xdf使用步驟
一般二次開發過程中都需要從開發環境將資料庫物件移植到其它環境,或者標準化開發完成的程式安裝到客戶環境中,使用Xdf工具的步驟:
在開發環境中設計好資料庫物件 使用描述物件生成工具FndXdfGen生成資料庫物件的描述檔案(.xdf) 將物件描述檔案傳到目標環境下或者打包發給相關人員 執行物件對比工具FndXdfCmp來在目標資料庫中生成物件或修改物件 這樣一來移植工作就完成了,通過Xdf工具來進行資料庫物件的移植,整個移植的核心紐帶則轉移到了物件描述檔案(.xdf)上面,而這個檔案只是以XML的方式記錄了物件的資訊,和目標系統沒有任何關係,這樣使資料庫物件的移植變得靈活簡單並高效。 --------------------- 作者:長煙慢慢 來源:CSDN 原文:https://blog.csdn.net/cymm_liu/article/details/13015849?utm_source=copy 版權宣告:本文為博主原創文章,轉載請附上博文連結!