作為 DB2 中的 Oracle 兼容性的持續增強的一部分,自 DB2 Linux, UNIX, and Windows (LUW) 9.7 fixpack 5 版本起,DB2 中受支持的 Oracle Pro*C 特性的數量開始增加。隨著 DB2 V 10.1 中相關特性的不斷增加,遷移現有 Pro*c 應用程序成為
本文中的技巧和技術有助于加速 Pro*c 的遷移。文中的所有內容都基于一些實時遷移項目。
嵌入式 SQL 是執行嵌入在宿主語言應用程序中的 SQL 語句的一種方式。嵌入式 SQL 應用程序首先連接到,然后執行這些嵌入式 SQL。這些 SQL 可以動態執行,也可以靜態執行。最常用的宿主語言是 C 和 C++。在可以編譯應用程序之前,構建嵌入式 SQL 應用程序涉及兩個主要步驟:PREP(或 PRECOMPILE)和 BIND。
命令 PREP 用于讀取源代碼、解析嵌入式 SQL 并將它轉換成 DB2 運行時服務 API 調用,然后將輸出寫入一個新的源文件中。BIND 用于將應用程序中的 SQL 語句綁定到目標數據庫。默認情況下,綁定操作是 PRECOMPILE 步驟自身完成的,但也可以將它擴展為單獨的一個步驟。
完成綁定后,就生成了針對 SQL 語句的訪問計劃,并將這些計劃存儲在目標數據庫內的一個包中。完成 PRECOMPILE 和 BIND 步驟之后,就可利用特定于宿主語言的開發工具對應用程序進行編譯和鏈接。稍后我們會討論獲得嵌入式 SQL 支持的這些步驟的語法。32 位和 64 位的嵌入式 SQL 應用程序都可以利用嵌入式 SQL 源代碼進行開發。在 Oracle 數據庫中,基于 C/C++ 的嵌入式 SQL數據庫應用程序支持是 Pro*C/C++;在 DB2 LUW 中,則為嵌入式 SQL C/C++。
在本文當中,我們將了解嵌入式 SQL C/C++ 和 Pro*C/C++ 之間的主要差別,但我們會重點介紹將基于 Pro*C/C++ 的應用程序從 Oracle 遷移到 DB2 LUW 的一些技巧和技術。請參閱最新的 DB2 LUW 文檔,了解目前受支持的特性。
DB2 上的 Oracle 兼容性支持
通常,將應用程序從一個 RDBMS 遷移到另一個 RDBMS 非常困難。但是,自 DB2 LUW 9.7 fixpack 5 版本起,增加了一些新的 SQL 和 PL/SQL 功能,這些功能提高了從 Oracle 數據庫遷移到 DB2 的速度。在最新的 DB2 LUW(DB2 LUW 10.1)版本中,這些功能得到了進一步的增強。
對這些功能的支持是原生支持。DB2 為數據類型、標量函數、包、語言元素、內置包和 PL/SQL 過程語言提供了原生支持。通過本地支持,在 DB2 引擎中,能夠采用與其他 DB2 原生語言元素相同的完整性和效能級別提供對這些功能的支持。這樣,就可以利用 DB2 提供的原有速度和效率來執行它們。Oracle 的兼容特性消除了轉換大多數 Oracle 數據庫對象(包括 PL/SQL)的需求,并使得將為 Oracle 編寫的應用程序遷移到 DB2 的任務變得更輕松。
要啟用一個或多個 DB2 兼容特性,則需要使用 DB2_COMPATIBILITY_VECTOR 注冊表變量。該變量是一個十六進制值,該變量中的每個位代表一個 DB2 兼容特性。利用這個向量,可以選擇啟用特定功能(通過設置 DB2_COMPATIBILITY_VECTOR 的特定位),也可以啟用所有特性,將這個注冊表變量設置為 ORA。可以通過 db2set 設置此變量,建議在創建數據庫之前設置該變量,并在數據庫生命周期期間持續保持所選的兼容水平。關于該變量的詳細討論超出了本文的討論范圍。
Pro*C/C++ 支持
如上所述,DB2 LUW 提供了許多兼容特性,這些特性有助于將基于 Pro*C/C++ 的應用程序從 Oracle 遷移到 DB2 中的嵌入式 SQL C/C++。通過將 PRECOMPILE 的選項 COMPATIBILITY_MODE 設置為 ORA,可以啟用這些兼容特性。例如,對于名為 myapp1.sqc 的文件,可以通過運行 db2 PRECOMPILE myapp1.sqc BINDFILE COMPATIBILITY_MODE ORA 命令來啟用兼容特性。
Oracle Pro*C/C++ 和嵌入式 SQL C/C++ 的主要區別
讓我們來查看一下 Oracle Pro*C/C++ 和嵌入式 SQL C/C++ 之間的一些主要差別:
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com