版本注意事項


6.7 存取 Informix 資料來源(新增章節)

在您新增 Informix 資料來源到 DB2 聯合伺服器之前, 必須先在聯合伺服器上安裝及架構 Informix Client SDK 軟體。 請參閱 Informix 資料庫軟體隨附文件中的安裝程序, 以取得如何安裝 Client SDK 軟體的特定明細。因為是安裝的一部份, 請確定包括了 Informix Client SDK 檔案庫。

若要設定聯合伺服器以存取儲存在 Informix 資料來源中的資料, 您必須:

  1. 安裝 DB2 Relational Connect。請參閱6.3.3, 安裝 DB2 Relational Connect
  2. 引用最新的 DB2 FixPak。
  3. 新增 Informix 資料來源至聯合伺服器。

本章說明步驟 3。

本章中的指示適用於 AIX、Solaris 作業環境及 HP-UX 作業系統。發生特定作業系統差異時會加以備註。

6.7.1 新增 Informix 資料來源至聯合伺服器

若要新增 Informix 資料來源至聯合伺服器,您必須:

  1. 設定環境變數並更新設定檔登錄。
  2. 鏈結 DB2 至 Informix 從屬站軟體。
  3. 重新使用 DB2 案例。
  4. 建立 Informix sqlhosts 檔案。
  5. 建立外層。
  6. 選用的:設定 DB2_DJ_COMM 環境變數。
  7. 建立伺服器。
  8. 建立使用者對映。
  9. 建立表格、概略表與 Informix 同義字的暱名。

本節將對這些步驟作詳細的解釋。

6.7.1.1 步驟 1:設定環境變數並更新設定檔登錄

修改 db2dj.ini 檔案並發出 db2set 指令, 以設定資料來源環境變數。db2dj.ini 檔案含有安裝在聯合伺服器上 Informix 從屬站軟體的相關架構資訊。db2set 指令會用您的設定值更新 DB2 設定檔登錄。

在分割的資料庫系統中,您可以使用特殊案例中的所有節點之單一 db2dj.ini 檔案,或使用特殊案例中的一或多個節點之唯一的 db2dj.ini 檔案。 未分割的資料庫系統中,每一案例僅可有一個 db2dj.ini 檔案。

若要設定環境變數:

  1. 編輯 sqllib/cfg 目錄中的 db2dj.ini 檔案, 然後設定下列環境變數:

    INFORMIXDIR

    將 INFORMIXDIR 環境變數設定為安裝 Informix Client SDK 軟體的目錄路徑; 例如:

    |INFORMIXDIR=/informix/csdk
    
    

    INFORMIXSERVER

    此變數會定義預設 Informix 伺服器的名稱。

    |INFORMIXSERVER=inf93
    | 
    
    

    註: 雖然 Informix 外層不使用此變數值, 但 Informix 從屬站要求設定此變數。 外層會使用 node 伺服器選項的值, 該值指定您要存取的 Informix 資料庫伺服器。

    INFORMIXSQLHOSTS

    如果您使用的是 Informix sqlhosts 檔案 ($INFORMIXDIR/etc/sqlhosts) 的預設路徑, 您就不需要設定此變數。 但是,如果您是使用預設值以外的 Informix sqlhosts 檔案路徑, 則您必須將此變數設定為 Informix sqlhosts 檔案的完整路徑名稱。例如:

    |INFORMIXSQLHOSTS=/informix/csdk/etc/my_sqlhosts
    | 
    
    
  2. 使用 Informix 環境變數更新 DB2 案例的 .profile 檔案。 您可以發出下列指令設定及匯出每一個變數,以完成此作業:
    PATH=$INFORMIXDIR/bin:$PATH
    export PATH
     
    INFORMIXDIR=<informix_client_path>
    export INFORMIXDIR
    

    其中 informix_client_path 是聯合伺服器上安裝 Informix 從屬站的目錄路徑。 如果路徑中的名稱含有空白,請在路徑前後加上雙引號 (")。

  3. 要執行 DB2 案例 .profile,請輸入:
    . .profile
    
  4. 發出 db2set 指令,用您的變更來更新 DB2 設定檔登錄。 此指令的語法 db2set,是以您的資料庫系統結構為依據。 若您正在下列任何資料庫系統結構中使用 db2dj.ini 檔案,才需要此步驟:

    若您正在未分割的資料庫系統中使用 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 
    

    其中:

    INSTANCEX
    代表案例名稱。

    3
    代表列示在 db2nodes.cfg 檔案的節點號碼。

    node3.ini
    代表 db2dj.ini 檔案的修改及更名版本。

6.7.1.2 步驟 2︰鏈結 DB2 至 Informix 從屬站軟體

若要啟用存取 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。 |

6.7.1.3 步驟 3:重新使用 DB2 案例

若要確定環境變數設定於程式中,請重新使用 DB2 案例。 當您重新使用案例時,復新 DB2 案例以接受您所作的變更。

發出下列指令以重新使用 DB2 案例:

在 DB2 for AIX、Solaris 作業環境及 HP-UX 伺服器上:
db2stop
db2start

|6.7.1.4 步驟 4︰建立 Informix sqlhosts 檔案

|此檔案會指定每一個 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 資料庫伺服器的作業時,就會收到錯誤。

6.7.1.5 步驟 5:建立外層

使用 CREATE WRAPPER 陳述式來指定要用來存取 Informix 資料來源的外層。 外層是一種機制,聯合伺服器用此機制來通信及擷取資料來源的資料。下列範例顯示 CREATE WRAPPER 陳述式:

CREATE WRAPPER informix

其中 informix 是 wrapper_name;informix 是與 Informix Client SDK 軟體一起使用的預設外層名稱。

您可以用您選擇的名稱來取代預設外層名稱。 但是,若您這麼做,您也必須包含 CREATE WRAPPER 陳述式的聯合伺服器之 LIBRARY 參數及外層檔案庫的名稱。請參閱 DB2 SOL Reference 中的 CREATE WRAPPER 陳述式,以取得外層檔案庫名稱的相關資訊。

Informix 的外層檔案庫名稱︰

6.7.1.6 步驟 6:選用的:設定 DB2_DJ_COMM 環境變數

若要增進存取 Informix 資料來源時的效能, 請在聯合伺服器上設定 DB2_DJ_COMM 環境變數。此變數會決定是否要在起始設定聯合伺服器時載入外層。 設定 DB2_DJ_COMM 環境變數以併入外層檔案庫, 並對應到您在之前的步驟中所指定的外層。如果您使用的是 Korn Shell 或 Bourne Shell 指令行介面, 請使用這些匯出指令:

在 DB2 for AIX 伺服器上:
DB2_DJ_COMM='libinformix.a'
export DB2_DJ_COMM

在 DB2 for Solaris Operating Environment 伺服器上︰
DB2_DJ_COMM='libinformix.so'
export DB2_DJ_COMM

在 DB2 for HP-UX 伺服器上︰
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 環境變數的相關資訊。

6.7.1.7 步驟 7:建立伺服器

使用 CREATE SERVER 陳述式來定義您要存取其資料來源的每一個 Informix 伺服器。 此陳述式的語法如下︰

CREATE SERVER server_name TYPE server_type VERSION server_version WRAPPER wrapper_name
OPTIONS (NODE 'node_name', DBNAME 'database_name')

其中:

|

server_name
|代表您指定給 Informix 資料庫伺服器的名稱。這個名稱必須是唯一的,不能與聯合資料庫中定義的其它 server_name 同名。server_name 不能與聯合資料庫中的表格空間同名。

TYPE server_type
會指定您要架構其存取權的資料來源類型。
註:
|若為 Informix 外層,則 server_type 必須是 informix。 |

VERSION server_version
代表您要存取的 Informix 資料庫伺服器版本。 支援的 Informix 版本為 5、7、8 及 9。

WRAPPER wrapper_name
代表您在 CREATE WRAPPER 陳述式中指定的名稱。

NODE 'node_name'
代表 server_name 所在的節點名稱。 node_name 必須定義於 Informix sqlhosts 檔案(請參閱步驟 4)。雖然 node_name 已指定為 CREATE SERVER SQL 陳述式中的選項, 但它是 Informix 資料來源所需的。此值有區分大小寫。 請參閱 DB2 SQL Reference,以取得其他選項的資訊。

DBNAME 'database_name'
代表您要存取的 Informix 資料庫名稱。

下面是 CREATE SERVER 陳述式範例︰

CREATE SERVER asia TYPE informix VERSION 9 WRAPPER informix 
OPTIONS (NODE 'abc', DBNAME 'sales')

FOLD_IDFOLD_PW 伺服器選項會影響外層在傳送使用者 ID 和通行碼給 Informix 前, 是否將它們轉換成大寫或小寫。 附有 FOLD_IDFOLD_PW 伺服器選項的 CREATE SERVER 陳述式範例如下:

CREATE SERVER asia TYPE informix VERSION 9 WRAPPER informix 
OPTIONS (NODE 'abc', DBNAME 'sales', FOLD_ID 'U', FOLD_PW 'U')

6.7.1.8 步驟 8︰建立使用者對映

如果 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')

其中:

local_userid
代表您要對映到定義於 Informix 資料來源上使用者 ID 的本端使用者 ID。

SERVER server_name
代表定義於 CREATE SERVER 陳述式的 Informix 資料來源名稱。

REMOTE_AUTHID 'remote_userid'
代表在 Informix 資料庫伺服器上您要對映 local_userid 的使用者 ID。此值要區分大小寫, 除非您將 CREATE SERVER 陳述式中的 FOLD_ID 伺服器選項設定為 'U' 或 'L'。

REMOTE_PASSWORD 'remote_password'
|代表與 remote_userid 相關聯的通行碼。 |此值要區分大小寫, |除非您將 CREATE SERVER 陳述式中的 FOLD_PW 伺服器選項設定為 'U' 或 'L'。

下面是 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,以取得其他選項的詳細資訊。

6.7.1.9 步驟 9︰建立表格、概略表與 Informix 同義字的暱名

針對您 Informix 資料來源上的每一個表格、概略表或 Informix 同義字, 指定其暱名。 暱名長度可以有 128 個字元。 當您查詢 Informix 資料來源時,將會使用這些暱名。DB2 會將伺服器、綱目與表格名稱轉換為大寫, 除非您以雙引號 (") 將它們括住。下列範例顯示 CREATE NICKNAME 陳述式:

CREATE NICKNAME nickname FOR server_name."remote_schema_name"."remote_table_name" 

其中:

nickname
代表唯一暱名,用來識別 Informix 表格、概略表或同義字。

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


[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]