版本注意事項


|6.6 存取 Sybase 資料來源

| |

||在您將 Sybase 資料來源新增至聯合伺服器之前,您必須將 Sybase Open Client 軟體安裝並架構在 DB2 聯合伺服器上。 |請參閱文件中的安裝程序,其隨附在 Sybase 資料庫軟體中,以取得如何安裝 Open Client 軟體的特定明細。 |因為是安裝作業的一部份,請確定您在 Sybase 伺服器上安裝了 Sybase 型錄儲存程序, |並在 DB2 聯合伺服器上安裝了 Sybase Open Client 檔案庫。

|架構從屬站軟體與 Sybase 伺服器之間的連線後,請使用其中一種 Sybase 工具來測試連線。isql 工具適用於 UNIX,SQL Advantage 工具適用於 Windows。

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

  1. |安裝 DB2 Relational Connect 版本 7.2。 請參閱6.3.3, 安裝 DB2 Relational Connect
  2. |新增 Sybase 資料來源至您的聯合伺服器中。
  3. |指定 Sybase 字碼頁。 |

|本章討論步驟 2 及 3。

|本章的指示可引用在 Windows NT、AIX 及 Solaris 作業環境。特定平台的不同處備註於其發生的地方。

|6.6.1 新增 Sybase 資料來源至聯合伺服器

|

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

  1. |設定環境變數並更新設定檔登錄 (僅適用於 AIX 及 Solaris)。
  2. |鏈結 DB2 與 Sybase 從屬站軟體 (僅適用於 AIX 及 Solaris)。
  3. |重新使用 DB2 案例 (僅適用於 AIX 及 Solaris)。
  4. |建立並設定介面檔案。
  5. |建立外層。
  6. |選用的:設定 DB2_DJ_COMM 環境變數。
  7. |建立伺服器。
  8. |選用的:設定 CONNECTSTRING 伺服器選項。
  9. |建立使用者對映。
  10. |建立表格與概略表的暱名。

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

|6.6.1.1 步驟 1:設定環境變數並更新設定檔登錄 (僅適用於 AIX 及 Solaris)

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

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

|若要設定環境變數: |

  1. |編輯位在 sqllib/cfg 的檔案 db2dj.ini,並設定下列環境變數:
    | SYBASE="<sybase home directory>"
    | 

    |其中 <sybase home directory> 是 Sybase 從屬站安裝的目錄。

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

    |若您正在未分割的資料庫系統中使用 db2dj.ini 檔案, |或您要 db2dj.ini 檔案僅引用於目前的節點,請發出:

    |db2set DB2_DJ_INI=$HOME/sqllib/cfg/db2dj.ini

    |若您正在分割資料庫系統中使用 db2dj.ini 檔案, |或您要 db2dj.ini 檔案中的值引用於此案例的所有節點,請發出:

    |db2set -g DB2_DJ_INI=$HOME/sqllib/cfg/db2dj.ini

    |若您正在分割資料庫系統中使用 db2dj.ini 檔案, |或您要 db2dj.ini 檔案中的值引用於特定的節點,請發出:

    |db2set -i INSTANCEX  3 DB2_DJ_INI=$HOME/sqllib/cfg/node3.ini

    |其中: |

    |INSTANCEX
    |代表案例名稱。

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

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

|6.6.1.2 步驟 2:將 DB2 鏈結至 Sybase 從屬站軟體 (僅限 AIX 與 Solaris 作業環境)

|

|若要啟用存取 Sybase 資料來源,DB2 聯合伺服器必須鏈結編輯至從屬站檔案庫。鏈結編輯程序以聯合伺服器將通信的資料來源來建立每一個資料來源的外層。當您執行 djxlink Script 時,建立外層檔案庫。 |若要發出 djxlink Script 類型:

|djxlink

|6.6.1.3 步驟 3:重新使用 DB2 案例 (僅適用於 AIX 及 Solaris 作業環境)

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

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

|在 DB2 for Windows NT 伺服器上:
|NET STOP instance_name
|NET START instance_name

|在 DB2 for AIX 及 Solaris 伺服器上:
|db2stop
|db2start
|

|6.6.1.4 步驟 4:建立並設定介面檔案

|若要建立並設定介面檔案,您必須建立檔案並使檔案可存取。 |

  1. |使用 Sybase 提供的公用程式來建立介面檔案,其包括想存取的所有 Sybase Open Server 的資料。請參閱 Sybase 的安裝文件,以取得有關使用此公用程式的詳細資訊。

    |Windows NT 通常將此檔案命名為 sql.ini。 將您剛建立的檔案,從 sql.ini 重新命名為 interfaces, 為廣用於所有平台的檔案命名。 |若您選擇不要將 sql.ini 重新命名為 interfaces|您必須使用 IFILE 參數或 CONNECTSTRING 選項,其在步驟 8 中有說明。

    |在 AIX 及 Solaris 系統上,此檔案是命名為 |<instance home>/sqllib/interfaces

  2. |讓介面檔案可存取 DB2。

    |

    |在 DB2 for Windows NT 伺服器上:
    |將檔案放置在 DB2 案例的 %DB2PATH% 目錄。

    |在 DB2 for AIX 及 Solaris 伺服器上:
    |將檔案放置在 DB2 案例的 $HOME/sqllib 目錄。使用 ln 指令,鏈結到從 DB2 案例的 $HOME/sqllib 目錄之檔案。例如:

    |ln -s -f /home/sybase/interfaces  /home/db2djinst1/sqllib
    |
    |

|6.6.1.5 步驟 5:建立外層

|使用 CREATE WRAPPER 陳述式來指定外層,其將用來存取 Sybase 資料來源。外層是一種機制,聯合伺服器用此機制來通信及擷取資料來源的資料。DB2 包括兩個 Sybase 外層:CTLIB 及 DBLIB。 下列範例顯示 CREATE WRAPPER 陳述式:

|CREATE WRAPPER CTLIB 

|其中 CTLIB 是 Sybase Open Client 軟體使用的預設外層名稱。CTLIB 外層可使用於 Windows NT、AIX 及 Solaris 伺服器。

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

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

|

|若要在存取 Sybase 資料來源時增進效能,請設定 DB2_DJ_COMM 環境變數。此變數會判斷是否要在聯合伺服器起始設定時,載入外層。 設定 DB2_DJ_COMM 環境變數以包括外層檔案庫, |與您在前一步驟指定的外層相符;例如: |

|在 DB2 for AIX 伺服器上:
|db2set DB2_DJ_COMM='libctlib.a' 

|在 DB2 for Solaris 伺服器上:
|db2set DB2_DJ_COMM='libctlib.so' 
|

|請確定等號 (=) 的兩邊都沒有空格。

|請參閱 DB2 SQL Reference,以取得有關外層常式庫名稱的詳細資訊。 |請參閱 Administration Guide,以取得有關 DB2_DJ_COMM 環境變數的資訊。

|6.6.1.7 步驟 7:建立伺服器

|

|使用 CREATE SERVER 陳述式來定義每一個想要從其中存取資料來源的 Sybase 伺服器, |例如:

|CREATE SERVER SYBSERVER TYPE SYBASE VERSION 12.0 WRAPPER CTLIB
|OPTIONS (NODE 'sybnode', DBNAME'sybdb')

|其中: |

|SYBSERVER
|代表您指定給 Sybase 伺服器的名稱。此名稱必須是唯一的。

|SYBASE
|代表您要架構存取的資料來源類型。Sybase 是唯一有支援的資料來源。

|12.0
|代表您要存取的 Sybase 版本。支援的版本有 10.0、11.0、11.1、11.5、11.9 及 12.0。

|CTLIB
|代表您在 CREATE WRAPPER 陳述式中指定的外層名稱。

|'sybnode'
|代表 SYBSERVER 常駐的節點名稱。在介面檔案中取得節點值。 |此值有區分大小寫。

|雖然節點名稱是指定為選項,但此為 Sybase 資料來源所需的。請參閱 DB2 SQL Reference,以取得其他選項的資訊。

|'sybdb'
|代表您想要存取的 Sybase 資料庫名稱。您可以從 Sybase 伺服器取得這個名稱。 |

|您可以使用 IGNORE_UDT 伺服器選項搭配 CTLIB 及 DBLIB 通信協定, |來指定聯合伺服器是否應該判定沒有完全符合之 UDT 底下的內建類型。這個伺服器選項只適用於透過 CTLIB 和 DBLIB |通信協定存取的資料來源。有效值為: |

|'Y'
|忽略 UDT 由使用者定義的這個事實,並判定它們底下的內建類型。

|'N'
|不忽略 UDT 的使用者定義規格。這是預設設定。 |

|當 DB2 建立暱名時,它會尋找並編目關於該暱名所指之物件 (表格、概略表、儲存程序) 的資訊。 |在它尋找資訊時,它可能會發現部份物件具有它無法辨識的資料類型 (也就是說,未對映到聯合資料庫上之副本的資料類型)。 |這類的無法辨識類型可能包括: |

|當聯合伺服器發現它無法辨識的資料類型時,它會傳回錯誤訊息 SQL3324N。 |然而,此作法可能有例外。 |若是可透過 CTLIB 或 DBLIB 通信協定存取的資料來源, |您可以設定 IGNORE_UDT 伺服器選項,以便當聯合資料庫發現無法辨識且沒有完全符合的 UDT 時, |聯合資料庫能判定 UDT 的基礎內建類型為何。接著,若聯合資料庫認得可內建類型, |聯合資料庫便會將內建類型的資訊傳回型錄。 |若要使聯合資料庫判定沒有完全符合 UDT 的基礎內建類型, |請將 IGNORE_UDT 設為 'Y'。

|6.6.1.8 步驟 8:選用的:設定 CONNECTSTRING 伺服器選項

|指定逾時臨界值、介面檔案的路徑與名稱及介面檔案的分封大小。 |Sybase Open Client 使用逾時臨界值來岔斷執行時間太長的查詢與回應。您可以使用 CREATE SERVER OPTION DDL 陳述式的 CONNECTSTRING 選項,設定 DB2 的臨界值。使用 CONNECTSTRING 來指定: |

|   .-;----------------------------.
|   V                              |
|>>---+--------------------------+-+----------------------------><
|     +-TIMEOUT-- = -----------+
|     +-LOGIN_TIMEOUT-- = -----+
|     +-IFILE-- = --"string"-----+
|     +-PACKET_SIZE-- = --位元組-+
|     '-;------------------------'
| 
| 
|

|TIMEOUT
|指定 DB2 Universal Database 等待任何 SQL 陳述式的 Sybase Open Client 之回應的秒數。seconds 值在 DB2 Universal Database 整數範圍中,是一個正整數。您指定的逾時值是依據您使用的外層。 |Windows NT、AIX 及 Solaris 伺服器都可以利用 DBLIB 外層。DBLIB 外層的預設值是 0。 在 Windows NT、AIX 及 Solaris 伺服器上,DBLIB 的預設值會使 DB2 Universal Database 無限期地等待回應。

|LOGIN_TIMEOUT
|指定 DB2 Universal Database 等待 Sybase Open Client 之回應登入要求的秒數。預設值與 TIMEOUT 相同。

|IFILE
|指定 Sybase Open Client 介面檔案的路徑名稱。 |string 中識別的路徑必須以雙引號 (") 含括。 |在 Windows NT 伺服器上,預設值是 %DB2PATH%。 |在 AIX 及 Solaris 伺服器上,預設值是 sqllib/interfaces,在您的 DB2 Universal Database 案例的起始目錄中。

|PACKET_SIZE
|指定介面檔案的分封大小 (位元組)。 |若資料來源不支援指定的分封大小,連線將會失敗。 |當每一個記錄都很大時 (例如,將列數插入大型表格中),增加分封大小可明顯地增加效能。 |位元組大小是一個數值。請參閱 Sybase 參考手冊以取得詳細資訊。 |

|範例:

|在 Windows NT 伺服器上,使用下列指令,將逾時值設定為 60 秒,並將介面檔案設定至 C:\etc\interfaces 中:

|CREATE SERVER OPTION connectstring FOR SERVER sybase1
|SETTING 'TIMEOUT=60;LOGIN_TIMEOUT=5;IFILE="C:\etc\interfaces"'
| 

|在 AIX 與 Solaris 伺服器上,使用下列指令,將逾時值設定為 60 秒,並將介面檔案設定至 /etc/interfaces 中:

|CREATE SERVER OPTION connectstring FOR SERVER sybase1
|SETTING 'TIMEOUT=60;PACKET_SIZE=4096;IFILE="/etc/interfaces"'
| 

|6.6.1.9 步驟 9:建立使用者對映

|若聯合伺服器中的使用者 ID 與通行碼,與 Sybase 中的使用者 ID 與通行碼不同,請使用 CREATE USER MAPPING 陳述式,使本端使用者 ID 與 Sybase 資料來源中定義的使用者 ID 與通行碼相互對映;例如:

|CREATE USER MAPPING FOR DB2USER SERVER SYBSERVER
|OPTIONS ( REMOTE_AUTHID 'sybuser', REMOTE_PASSWORD 'day2night')

|其中: |

|DB2USER
|代表您用來對映使用者 ID (定義於 Sybase 資料來源中) 的本端使用者 ID。

|SYBSERVER
|代表您在 CREATE SERVER 陳述式中定義的 Sybase 資料來源名稱。

|'sybuser'
|代表您要對映 DB2USER 的 Sybase 資料來源的使用者 ID。此值有區分大小寫。

|'day2night'
|代表與 'sybuser' 相關的通行碼。此值有區分大小寫。 |

|請參閱 DB2 SQL Reference,以取得其他選項的詳細資訊。

|6.6.1.10 步驟 10:建立表格與概略表的暱名

|指定在您的 Sybase 資料來源中的每一個概略表或表格的暱名。 |當您查詢 Sybase 資料來源時,將使用這些暱名。 |Sybase 暱名有區分大小寫。將綱目及表格名稱以雙引號 (") 含括。下列範例顯示 CREATE NICKNAME 陳述式:

|CREATE NICKNAME SYBSALES FOR SYBSERVER."salesdata"."europe"

|其中: |

|SYBSALES
|代表 Sybase 表格或概略表的專用暱名。 |

|

|SYBSERVER."salesdata"."europe"
|代表遵循下列格式的三部分識別字:

|data_source_name."remote_schema_name"."remote_table_name" |

|針對您想要建立暱名的每一個表格或概略表,重複此步驟。 |當您建立暱名時,DB2 將使用連線來查詢資料來源型錄。 |此查詢會測試連接到資料來源的狀態。 |若連線無法運作,您會接收到一個錯誤訊息。

|請參閱 DB2 SQL Reference,以取得有關 CREATE NICKNAME 陳述式的詳細資訊。有關一般暱名及驗證資料類型對映的詳細資訊,請參閱 DB2 Administration Guide

|6.6.2 指定 Sybase 字碼頁

|

|此步驟僅在 DB2 聯合伺服器及 Sybase 伺服器執行不同的字碼頁時才需要。使用與 DB2 相同的字碼集之資料來源不需要轉換。 |下列表格提供 |一般「國家語言支援 (NLS)」字碼頁的同等 Sybase 選項。 您的 Sybase 資料來源架構必須與其語意相符,或者從屬站程式碼必須能夠偵測不符的語意,並將其標示為錯誤、或使用其本身的語意來對映資料。 若從原始字碼頁到目標字碼頁,都找不到轉換表,則 DB2 會發出錯誤訊息。 |請參閱您的 Sybase 文件以取得詳細資訊。
|

|表 2. 「Sybase 字碼頁」選項

字碼頁 同等 Sybase 選項
850 cp850
897 sjis
819 iso_1
912 iso_2
1089 iso_6
813 iso_7
916 iso_8
920 iso_9


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