||在您將 Sybase 資料來源新增至聯合伺服器之前,您必須將 Sybase Open Client 軟體安裝並架構在 DB2 聯合伺服器上。 |請參閱文件中的安裝程序,其隨附在 Sybase 資料庫軟體中,以取得如何安裝 Open Client 軟體的特定明細。 |因為是安裝作業的一部份,請確定您在 Sybase 伺服器上安裝了 Sybase 型錄儲存程序, |並在 DB2 聯合伺服器上安裝了 Sybase Open Client 檔案庫。
|架構從屬站軟體與 Sybase 伺服器之間的連線後,請使用其中一種 Sybase 工具來測試連線。isql 工具適用於 UNIX,SQL Advantage 工具適用於 Windows。
|若要設定聯合伺服器,以存取儲存在 Sybase 資料來源的資料,您必須: |
|本章討論步驟 2 及 3。
|本章的指示可引用在 Windows NT、AIX 及 Solaris 作業環境。特定平台的不同處備註於其發生的地方。
|若要新增 Sybase 資料來源至聯合伺服器,您必須: |
|本節將對這些步驟作詳細的解釋。
|修改 db2dj.ini 檔案並發出 db2set 指令, |以設定資料來源環境變數。db2dj.ini 檔案包含了安裝在聯合伺服器上的 Sybase 從屬站軟體之架構資訊。db2set 指令會用您的設定值更新 DB2 設定檔登錄。
|在分割的資料庫系統中,您可以使用特殊案例中的所有節點之單一 db2dj.ini 檔案,或使用特殊案例中的一或多個節點之唯一的 db2dj.ini 檔案。 |未分割的資料庫系統中,每一案例僅可有一個 db2dj.ini 檔案。
|若要設定環境變數: |
| SYBASE="<sybase home directory>" |
|其中 <sybase home directory> 是 Sybase 從屬站安裝的目錄。
|若您正在未分割的資料庫系統中使用 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
|其中: |
|若要啟用存取 Sybase 資料來源,DB2 聯合伺服器必須鏈結編輯至從屬站檔案庫。鏈結編輯程序以聯合伺服器將通信的資料來源來建立每一個資料來源的外層。當您執行 djxlink Script 時,建立外層檔案庫。 |若要發出 djxlink Script 類型:
|djxlink
|若要確定環境變數設定於程式中,請重新使用 DB2 案例。 |當您重新使用案例時,復新 DB2 案例以接受您所作的變更。
|發出下列指令以重新使用 DB2 案例: |
|NET STOP instance_name |NET START instance_name
|db2stop |db2start|
|若要建立並設定介面檔案,您必須建立檔案並使檔案可存取。 |
|Windows NT 通常將此檔案命名為 sql.ini。 將您剛建立的檔案,從 sql.ini 重新命名為 interfaces, 為廣用於所有平台的檔案命名。 |若您選擇不要將 sql.ini 重新命名為 interfaces, |您必須使用 IFILE 參數或 CONNECTSTRING 選項,其在步驟 8 中有說明。
|在 AIX 及 Solaris 系統上,此檔案是命名為 |<instance home>/sqllib/interfaces。
|
|ln -s -f /home/sybase/interfaces /home/db2djinst1/sqllib
||使用 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 陳述式,以取得有關外層常式庫名稱的詳細資訊。
|若要在存取 Sybase 資料來源時增進效能,請設定 DB2_DJ_COMM 環境變數。此變數會判斷是否要在聯合伺服器起始設定時,載入外層。 設定 DB2_DJ_COMM 環境變數以包括外層檔案庫, |與您在前一步驟指定的外層相符;例如: |
|db2set DB2_DJ_COMM='libctlib.a'
|db2set DB2_DJ_COMM='libctlib.so'
||請確定等號 (=) 的兩邊都沒有空格。
|請參閱 DB2 SQL Reference,以取得有關外層常式庫名稱的詳細資訊。 |請參閱 Administration Guide,以取得有關 DB2_DJ_COMM 環境變數的資訊。
|使用 CREATE SERVER 陳述式來定義每一個想要從其中存取資料來源的 Sybase 伺服器, |例如:
|CREATE SERVER SYBSERVER TYPE SYBASE VERSION 12.0 WRAPPER CTLIB |OPTIONS (NODE 'sybnode', DBNAME'sybdb')
|其中: |
|雖然節點名稱是指定為選項,但此為 Sybase 資料來源所需的。請參閱 DB2 SQL Reference,以取得其他選項的資訊。
|您可以使用 IGNORE_UDT 伺服器選項搭配 CTLIB 及 DBLIB 通信協定, |來指定聯合伺服器是否應該判定沒有完全符合之 UDT 底下的內建類型。這個伺服器選項只適用於透過 CTLIB 和 DBLIB |通信協定存取的資料來源。有效值為: |
|當 DB2 建立暱名時,它會尋找並編目關於該暱名所指之物件 (表格、概略表、儲存程序) 的資訊。 |在它尋找資訊時,它可能會發現部份物件具有它無法辨識的資料類型 (也就是說,未對映到聯合資料庫上之副本的資料類型)。 |這類的無法辨識類型可能包括: |
|當聯合伺服器發現它無法辨識的資料類型時,它會傳回錯誤訊息 SQL3324N。 |然而,此作法可能有例外。 |若是可透過 CTLIB 或 DBLIB 通信協定存取的資料來源, |您可以設定 IGNORE_UDT 伺服器選項,以便當聯合資料庫發現無法辨識且沒有完全符合的 UDT 時, |聯合資料庫能判定 UDT 的基礎內建類型為何。接著,若聯合資料庫認得可內建類型, |聯合資料庫便會將內建類型的資訊傳回型錄。 |若要使聯合資料庫判定沒有完全符合 UDT 的基礎內建類型, |請將 IGNORE_UDT 設為 'Y'。
|指定逾時臨界值、介面檔案的路徑與名稱及介面檔案的分封大小。 |Sybase Open Client 使用逾時臨界值來岔斷執行時間太長的查詢與回應。您可以使用 CREATE SERVER OPTION DDL 陳述式的 CONNECTSTRING 選項,設定 DB2 的臨界值。使用 CONNECTSTRING 來指定: |
| .-;----------------------------. | V | |>>---+--------------------------+-+---------------------------->< | +-TIMEOUT-- = --秒---------+ | +-LOGIN_TIMEOUT-- = --秒---+ | +-IFILE-- = --"string"-----+ | +-PACKET_SIZE-- = --位元組-+ | '-;------------------------' | ||
|範例:
|在 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"' |
|若聯合伺服器中的使用者 ID 與通行碼,與 Sybase 中的使用者 ID 與通行碼不同,請使用 CREATE USER MAPPING 陳述式,使本端使用者 ID 與 Sybase 資料來源中定義的使用者 ID 與通行碼相互對映;例如:
|CREATE USER MAPPING FOR DB2USER SERVER SYBSERVER |OPTIONS ( REMOTE_AUTHID 'sybuser', REMOTE_PASSWORD 'day2night')
|其中: |
|請參閱 DB2 SQL Reference,以取得其他選項的詳細資訊。
|指定在您的 Sybase 資料來源中的每一個概略表或表格的暱名。 |當您查詢 Sybase 資料來源時,將使用這些暱名。 |Sybase 暱名有區分大小寫。將綱目及表格名稱以雙引號 (") 含括。下列範例顯示 CREATE NICKNAME 陳述式:
|CREATE NICKNAME SYBSALES FOR SYBSERVER."salesdata"."europe"
|其中: |
|
|data_source_name."remote_schema_name"."remote_table_name" |
|針對您想要建立暱名的每一個表格或概略表,重複此步驟。 |當您建立暱名時,DB2 將使用連線來查詢資料來源型錄。 |此查詢會測試連接到資料來源的狀態。 |若連線無法運作,您會接收到一個錯誤訊息。
|請參閱 DB2 SQL Reference,以取得有關 CREATE NICKNAME 陳述式的詳細資訊。有關一般暱名及驗證資料類型對映的詳細資訊,請參閱 DB2 Administration Guide。
|此步驟僅在 DB2 聯合伺服器及 Sybase 伺服器執行不同的字碼頁時才需要。使用與 DB2 相同的字碼集之資料來源不需要轉換。
|下列表格提供
|一般「國家語言支援 (NLS)」字碼頁的同等 Sybase 選項。 您的 Sybase 資料來源架構必須與其語意相符,或者從屬站程式碼必須能夠偵測不符的語意,並將其標示為錯誤、或使用其本身的語意來對映資料。 若從原始字碼頁到目標字碼頁,都找不到轉換表,則 DB2 會發出錯誤訊息。
|請參閱您的 Sybase 文件以取得詳細資訊。
|
字碼頁 | 同等 Sybase 選項 |
---|---|
850 | cp850 |
897 | sjis |
819 | iso_1 |
912 | iso_2 |
1089 | iso_6 |
813 | iso_7 |
916 | iso_8 |
920 | iso_9 |