在您新增 Informix 資料來源到 DB2 聯合伺服器之前, 必須先在聯合伺服器上安裝及架構 Informix Client SDK 軟體。 請參閱 Informix 資料庫軟體隨附文件中的安裝程序, 以取得如何安裝 Client SDK 軟體的特定明細。因為是安裝的一部份, 請確定包括了 Informix Client SDK 檔案庫。
若要設定聯合伺服器以存取儲存在 Informix 資料來源中的資料, 您必須:
本章說明步驟 3。
本章中的指示適用於 AIX、Solaris 作業環境及 HP-UX 作業系統。發生特定作業系統差異時會加以備註。
若要新增 Informix 資料來源至聯合伺服器,您必須:
本節將對這些步驟作詳細的解釋。
修改 db2dj.ini 檔案並發出 db2set 指令, 以設定資料來源環境變數。db2dj.ini 檔案含有安裝在聯合伺服器上 Informix 從屬站軟體的相關架構資訊。db2set 指令會用您的設定值更新 DB2 設定檔登錄。
在分割的資料庫系統中,您可以使用特殊案例中的所有節點之單一 db2dj.ini 檔案,或使用特殊案例中的一或多個節點之唯一的 db2dj.ini 檔案。 未分割的資料庫系統中,每一案例僅可有一個 db2dj.ini 檔案。
若要設定環境變數:
將 INFORMIXDIR 環境變數設定為安裝 Informix Client SDK 軟體的目錄路徑; 例如:
|INFORMIXDIR=/informix/csdk
此變數會定義預設 Informix 伺服器的名稱。
|INFORMIXSERVER=inf93 |
註: 雖然 Informix 外層不使用此變數值, 但 Informix 從屬站要求設定此變數。 外層會使用 node 伺服器選項的值, 該值指定您要存取的 Informix 資料庫伺服器。
如果您使用的是 Informix sqlhosts 檔案 ($INFORMIXDIR/etc/sqlhosts) 的預設路徑, 您就不需要設定此變數。 但是,如果您是使用預設值以外的 Informix sqlhosts 檔案路徑, 則您必須將此變數設定為 Informix sqlhosts 檔案的完整路徑名稱。例如:
|INFORMIXSQLHOSTS=/informix/csdk/etc/my_sqlhosts |
PATH=$INFORMIXDIR/bin:$PATH export PATH INFORMIXDIR=<informix_client_path> export INFORMIXDIR
其中 informix_client_path 是聯合伺服器上安裝 Informix 從屬站的目錄路徑。 如果路徑中的名稱含有空白,請在路徑前後加上雙引號 (")。
. .profile
若您正在未分割的資料庫系統中使用 db2dj.ini 檔案, 或您要 db2dj.ini 檔案僅引用於目前的節點,請發出:
db2set DB2_DJ_INI=sqllib/cfg/db2dj.ini
如果您是在分割的資料庫系統中使用 db2dj.ini 檔案, 且您想要將 db2dj.ini 檔案中的值引用到此案例的所有節點, 請發出:
db2set -g DB2_DJ_INI = sqllib/cfg/db2dj.ini
如果您是在分割的資料庫系統中使用 db2dj.ini 檔案, 且您想要將 db2dj.ini 檔案中的值引用到特定節點, 請發出:
db2set -i INSTANCEX 3 DB2_DJ_INI=sqllib/cfg/node3.ini
其中:
若要啟用存取 Informix 資料來源,則 DB2 聯合伺服器必須鏈結編輯至從屬站檔案庫。 鏈結編輯處理會針對聯合伺服器要通信的每一個資料來源,建立外層檔案庫。 當您執行 djxlinkInformix Script 時, 即會建立 Informix 外層檔案庫。若要發出 djxlinkInformix Script,請鍵入:
djxlinkInformix
|djxlinkInformix Script 只會建立 Informix 外層檔案庫。另一個 djxlink Script 會嘗試針對 DB2 Universal Database 支援的每一個資料來源(Oracle、 |Microsoft SQL Server 等等)建立外層檔案庫。如果您只有已安裝之部分資料來源的從屬站軟體, |則當您發出 djxlink Script 時, |會收到每一個遺漏的資料來源的錯誤訊息。
|您必須具備 UNIX Systems Administrator (根) 授權,才能執行 djxlinkInformix 和 djxlink Script。
|djxlinkInformix 和 djxlink Script 會根據作業系統,將詳細的錯誤和警告訊息寫到特定的檔案。例如,若是在 AIX 上,djxlinkInformix Script 會寫到 /usr/lpp/db2_07_01/lib/djxlinkInformix.out,djxlink Script 會寫到 /usr/lpp/db2_07_01/lib/djxlink.out。
|djxlinkInformix 和 djxlink Script 會根據作業系統,在特定的目錄中建立外層檔案庫。例如,若是在 AIX 上, |則會在 /usr/lpp/db2_07_01/lib 目錄中建立 libinformix.a 外層檔案庫。
|建好 libinformix.a 外層檔案庫後,接著還要檢查此檔案庫上的許可權,確定 DB2 案例擁有者可以讀取及執行。如果 DB2 案例擁有者不是 System 群組中的成員, |libinformix.a 外層檔案庫上的許可權必須是 -rwxr-xr-x 根系統...libinformix.a。 |
若要確定環境變數設定於程式中,請重新使用 DB2 案例。 當您重新使用案例時,復新 DB2 案例以接受您所作的變更。
發出下列指令以重新使用 DB2 案例:
db2stop db2start
|此檔案會指定每一個 Informix 資料庫伺服器的位置及資料庫伺服器的連線(通信協定)類型。建立這個檔案的方法有許多種。您可以從有 Informix Connect |或 Informix Client SDK 連接 Informix 伺服器的其他系統,來複製此檔。您也可以在 DB2 伺服器上架構 Informix Client SDK 連接 Informix 伺服器,由它來建立 sqlhosts 檔。
|當您建立或是複製好 sqlhosts 檔後,DB2 案例擁有者應該就能使用 Informix |dbaccess (如果它在 DB2 伺服器上) 來連接及查詢 Informix 伺服器。這樣 Informix Client SDK 就能連接 Informix 伺服器,您也進而能架構 DB2 Relational Connect 來使用 Informix Client SDK。
如需設置此檔案的相關資訊,請參照 Informix 手冊 Administrators Guide for Informix Dynamic Server。
警告︰ |
---|
如果您沒有在 sqlhosts 檔案中定義 Informix 資料庫伺服器名稱, 則當您執行需要連接 Informix 資料庫伺服器的作業時,就會收到錯誤。 |
使用 CREATE WRAPPER 陳述式來指定要用來存取 Informix 資料來源的外層。 外層是一種機制,聯合伺服器用此機制來通信及擷取資料來源的資料。下列範例顯示 CREATE WRAPPER 陳述式:
CREATE WRAPPER informix
其中 informix 是 wrapper_name;informix 是與 Informix Client SDK 軟體一起使用的預設外層名稱。
您可以用您選擇的名稱來取代預設外層名稱。 但是,若您這麼做,您也必須包含 CREATE WRAPPER 陳述式的聯合伺服器之 LIBRARY 參數及外層檔案庫的名稱。請參閱 DB2 SOL Reference 中的 CREATE WRAPPER 陳述式,以取得外層檔案庫名稱的相關資訊。
Informix 的外層檔案庫名稱︰
若要增進存取 Informix 資料來源時的效能, 請在聯合伺服器上設定 DB2_DJ_COMM 環境變數。此變數會決定是否要在起始設定聯合伺服器時載入外層。 設定 DB2_DJ_COMM 環境變數以併入外層檔案庫, 並對應到您在之前的步驟中所指定的外層。如果您使用的是 Korn Shell 或 Bourne Shell 命令行介面, 請使用這些匯出指令:
DB2_DJ_COMM='libinformix.a' export DB2_DJ_COMM
DB2_DJ_COMM='libinformix.so' export DB2_DJ_COMM
DB2_DJ_COMM='libinformix.sl' export DB2_DJ_COMM
請確定等號 (=) 的兩邊都沒有空格。
如果您使用的是 C Shell 命令行介面, 請使用下列指令設定環境變數:
setenv DB2_DJ_COMM 'libinformix.a' (適用於 DB2 for AIX 伺服器) setenv DB2_DJ_COMM 'libinformix.so' (適用於 DB2 for Solaris 作業環境伺服器) setenv DB2_DJ_COMM 'libinformix.sl' (適用於 DB2 for HP--UX 伺服器)
請參照 DB2 SQL Reference,取得外層檔案庫名稱及 DB2_DJ_COMM 環境變數的相關資訊。
使用 CREATE SERVER 陳述式來定義您要存取其資料來源的每一個 Informix 伺服器。 此陳述式的語法如下︰
CREATE SERVER server_name TYPE server_type VERSION server_version WRAPPER wrapper_name OPTIONS (NODE 'node_name', DBNAME 'database_name')
其中:
|
下面是 CREATE SERVER 陳述式範例︰
CREATE SERVER asia TYPE informix VERSION 9 WRAPPER informix OPTIONS (NODE 'abc', DBNAME 'sales')
FOLD_ID 及 FOLD_PW 伺服器選項會影響外層在傳送使用者 ID 和通行碼給 Informix 前, 是否將它們轉換成大寫或小寫。 附有 FOLD_ID 與 FOLD_PW 伺服器選項的 CREATE SERVER 陳述式範例如下:
CREATE SERVER asia TYPE informix VERSION 9 WRAPPER informix OPTIONS (NODE 'abc', DBNAME 'sales', FOLD_ID 'U', FOLD_PW 'U')
如果 DB2 聯合伺服器上的使用者 ID 或通行碼不同於 Informix 資料來源上的使用者 ID 或通行碼, 請使用 CREATE USER MAPPING 陳述式,將本端使用者 ID 對映到定義於 Informix 資料來源的使用者 ID 及通行碼; 例如:
CREATE USER MAPPING FOR local_userid SERVER server_name OPTIONS (REMOTE_AUTHID 'remode_userid', REMOTE_PASSWORD 'remote_password')
其中:
下面是 CREATE USER MAPPING 陳述式範例︰
CREATE USER MAPPING FOR robert SERVER asia OPTIONS (REMOTE_AUTHID 'bob', REMOTE_PASSWORD 'day2night')
您可以使用 DB2 特別暫存區 USER, 以便將發出 CREATE USER MAPPING 陳述式的使用者授權 ID 對映到 REMOTE_AUTHID 使用者選項所指定的資料來源授權 ID。 下面是 CREATE USER MAPPING 陳述式範例,其中含有 USER 特別暫存區︰
CREATE USER MAPPING FOR USER SERVER asia OPTIONS (REMOTE_AUTHID 'bob', REMOTE_PASSWORD 'day2night')
請參閱 DB2 SQL Reference,以取得其他選項的詳細資訊。
針對您 Informix 資料來源上的每一個表格、概略表或 Informix 同義字, 指定其暱名。 暱名長度可以有 128 個字元。 當您查詢 Informix 資料來源時,將會使用這些暱名。DB2 會將伺服器、綱目與表格名稱轉換為大寫, 除非您以雙引號 (") 將它們括住。下列範例顯示 CREATE NICKNAME 陳述式:
CREATE NICKNAME nickname FOR server_name."remote_schema_name"."remote_table_name"
其中:
下面是 CREATE NICKNAME 陳述式範例︰
CREATE NICKNAME salesjapan FOR asia."salesdata"."japan"
針對您要建立其暱名的每一個表格或概略表,請重複此步驟。 當您建立暱名時,DB2 將使用連線來查詢資料來源型錄。 此查詢會測試連接到資料來源的狀態。 若連線無法運作,您會接收到一個錯誤訊息。
請參閱 DB2 SQL Reference,以取得有關 CREATE NICKNAME 陳述式的詳細資訊。有關一般暱名及驗證資料類型對映的詳細資訊,請參閱 DB2 Administration Guide。