DataStage 三、配置ODBC


DataStage序列文章

DataStage 一、安裝
DataStage 二、InfoSphere Information Server進程的啟動和停止

1 配置ODBC需要了解的基礎知識

配置ODBC的步驟:

  • 在.odbc.ini 文件里配置ODBC數據源信息
  • 在uvodbc.config文件里配置數據源名稱信息(DSN)
  • 測試數據源

路徑和文檔信息:

名稱 說明
DataStage默認安裝驅動的路徑 /opt/IBM/InformationServer/Server/branded_odbc
關於ODBC配置的文檔 /opt/IBM/InformationServer/Server/branded_odbc/docs
哪里配置ODBC信息 $DSHOME/.odbc.ini
哪里配置ODBC data Source name(DSN) $DSHOME/uvodbc.config和每個DataStage項目下的uvodbc.config

1.1 說明

在$DSHOME/.odbc.ini內配置ODBC數據源信息,這里配置的信息包括驅動、服務器、用戶、端口等信息,這個文件的名稱和路徑不是絕對的,可以在$DSHOME/dsenv 文件內的ODBCINI變量配置:

  ODBCINI=$DSHOME/.odbc.ini
  export ODBCINI

dsenv 是非常重要的配置文件,修改該文件必須重啟Enginer生效,里面的變量信息對所有項目有效,並且可以在開發項目時引用。
在uvodbc.config文件里配置ODBC數據源名稱(DSN),這里配置的信息和上面的.odbc.ini不一樣,.odbc.ini文件是詳細的數據源配置信息,而這里是配置DSN,可以理解為.odbc.ini里配置了數據源詳細信息,而uvodbc.config文件是給項目提供的引用接口定義。

<Oracle_30>
DBMSTYPE = ODBC

Oracle_30表示數據源名稱,名稱必須和.odbc.ini里面配置的一樣。
DBMSTYPE指定該數據源的類型。

2 Oracle 數據源配置

Oracle 數據源配置方式有兩種:

  • 基於DWire Protocol Driver配置ODBC:這種方式不需要Oracle客戶端軟件,也不需要配置Oracle環境變量
  • 基於TNS配置ODBC:這種方式需要配置Oracle環境變量並且必須有$ORACLE_HOME/network/admin/tnsnames.ora TNS配置文件

2.1 基於DWire Protocol Driver配置ODBC

2.1.1 配置.odbc.ini

在$DSHOME/.odbc.ini文件中找到官方提供的預配置ODBC數據源[Oracle Wire Protocol],復制該段內容,修改ODBC配置信息.

[Oracle_30]
Driver=/opt/IBM/InformationServer/Server/branded_odbc/lib/VMora24.so
Description=DWire Protocol Driver for server 30
ApplicationUsingThreads=1
ArraySize=60000
CachedCursorLimit=32
CachedDescLimit=0
CatalogIncludesSynonyms=1
CatalogOptions=0
DefaultLongDataBuffLen=1024
DescribeAtPrepare=0
EnableDescribeParam=0
EnableNcharSupport=0
EnableScrollableCursors=1
EnableStaticCursorsForLongData=0
EnableTimestampWithTimeZone=0
HostName=127.0.0.1
LocalTimeZoneOffset=
LockTimeOut=-1
LogonID=
Password=
PortNumber=1521
ProcedureRetResults=0
SID=testdb
UseCurrentSchema=1

這里Oracle_30表示數據源名稱,HostName表示數據庫所在的主機名,PortNumber表示數據庫端口,SID表示數據庫實例ID;將內容保存到.odbc.ini文件中。

2.1.2 配置uvodbc.config

編輯$DSHOME/uvodbc.config文件,增加上面在.odbc.ini文件中配置的ODBC數據源信息。

[ODBC DATA SOURCES]

<localuv>
DBMSTYPE = UNIVERSE
network = TCP/IP
service = uvserver
host = 127.0.0.1

<Oracle_30>
DBMSTYPE = ODBC

DNS名稱Oracle_30必須和.odbc.init中的一致。**注意:該文件在兩個地方存在,一個在$DSHOME目錄下,一個在項目的目錄下,當創建新項目時,DataStage拷貝該文件到新項目目錄下;DS項目運行時首先查找項目下的uvodbc.config文件,如果未找到則查找$DSHOME/uvodbc.config文件,所以編輯完成后要將該文件拷貝到項目目錄下;當然這種方式只在多個項目需要訪問相同的ODBC的情況下介意這么做,如果每個項目所使用的ODBC不同,那么最好的方式就是編輯項目目錄下的uvodbc.config文件了。

2.1.3 測試ODBC數據源

進入DSHOME目錄使用dssh工具測試數據源。

$ cd $DSHOME
$ ./dsenv
$ ./dssh
DataStage Command Language 8.5 Licensed Materials - Property of IBM
(c) Copyright IBM Corp. 1997, 2009 All Rights Reserved.
DSEngine logged on: Friday, September 25, 2015 09:07

鍵入LOGTO 項目名稱進入項目,注意項目名稱區分大小寫。

>LOGTO dstest

鍵入DS_CONNECT命令查看該項目所有的ODBC源配置,這里你可以看到項目使用的uvodbc.config文件和剛才配置的Oracle_30數據源了。

>DS_CONNECT

Data Source information from /opt/IBM/dsprojects/dstest/uvodbc.config:

Data Source:       localuv
  DBMS Type:         UNIVERSE
  Network Type:      TCP/IP
  Host System:       loopback   127.0.0.1
  Service Name:      uvserver

Data Source:       Oracle_30
  DBMS Type:         ODBC

鍵入DS_CONNECT Oracle_30測試數據源,注意數據源名稱區分大小寫。根據提示輸入數據庫用戶名和密碼。

>DS_CONNECT Oracle_30
Enter username for connecting to 'Oracle_30' DBMS [dsadm]: dsource
Enter password for dsource: 

如果沒有任何的報錯,那說明數據源測試成功了,並且>提示變為了數據源名稱>(Oracle_30>);你可以鍵入sql驗證數據源。

Oracle_30> select * from tab;
     TNAME     TABTYPE   CLUSTERID  
----------  ----------  ----------  
    DOBJ01       TABLE        NULL  

1 row selected

2.2 基於TNS配置ODBC

2.2.1 什么時候使用TNS配置ODBC

  • 當GoldenGate服務器上存在Oracle服務端或客戶端軟件時
  • 當數據庫地址端口經常發生變化時
  • 當多個應用程序和GoldenGate需要同時訪問一個數據源時
  • 當GoldenGate所在的服務器不能直接連接數據庫需要通過TNS代理連接時

這種方式需要配置Oracle環境變量,也必須有$ORACLE_HOME/network/admin/tnsnames.ora TNS配置文件,並且GoldenGate具有讀取該文件的權限。

2.2.2 在dsenv文件中配置Oracle環境

$ cd $DSHOME
$ vi dsenv

export ORACLE_HOME=/opt/oracle/product/11.2.0
export LIBPATH=$LIBPATH:$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_SID=testdb
export TNS_ADMIN=/opt/oracle/product/11.2.0/network/admin

配置完成后必須重啟Engine使配置文件生效。

$ uv -admin -stop
$ uv -admin -start

注意:在重啟Engine后,你要確認上面的變量是否在你當前會話環境中生效,否則會影響后面的測試,如果未生效可能是你的配置錯誤或者之前的配置與之沖突導致變量失效,請嘗試重新登錄會話確定。

2.2.3 在TNS文件中配置ServerName和其它信息

$ vi /opt/oracle/product/11.2.0/network/admin/tnsnames.ora

xmeta_111 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = testhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = xmeta)
    )
  )

2.2.4 在.odbc.ini文件中配置數據源信息

[Ora_remote_111]
Driver=/software/IBM/InformationServer/Server/branded_odbc/lib/VMora24.so
Description=DataDirect Oracle for remote server 
ApplicationUsingThreads=1
ArraySize=60000
CachedCursorLimit=32
CachedDescLimit=0
CatalogIncludesSynonyms=1
CatalogOptions=0
DefaultLongDataBuffLen=1024
DescribeAtPrepare=0
EnableDescribeParam=0
EnableNcharSupport=0
EnableScrollableCursors=1
EnableStaticCursorsForLongData=0
EnableTimestampWithTimeZone=0
LocalTimeZoneOffset=
LockTimeOut=-1
LogonID=
Password=
ProcedureRetResults=0
ServerName=xmeta_111
UseCurrentSchema=1

這里不需要配置主機、端口信息,只需要配置ServerName為TNS文件中的serverName。

2.2.5 在uvodbc.config文件中配置數據源DSN

<Ora_remote_111>
DBMSTYPE = ODBC

這樣就可以了,再通過2.1.3 中的那樣測試ODBC數據源吧。

2.2.6 可能遇到的錯誤

>ds_connect Ora_remote_111
Enter username for connecting to 'Ora_remote_111' DBMS [dsadm]: scott
Enter password for scott: 
SQLConnect error:   Status = -1   SQLState = 08001   Natcode = -1
[ODBC] [IBM(DataDirect OEM)][ODBC Oracle Wire Protocol driver][Oracle]TNS-12505: TNS:listener could not resolve SID given in connect descriptor
Network connection to Data Source 'Ora_remote_111' failed

服務端不能識辨sid,這類錯誤有兩種原因:

  • TNS文件中的SID或者Service_name配置錯誤,請嘗試在sqlplus下測試該配置的可連接性,或者使用Easy connect name method方式測試連接
  • .odbc.init中的數據源信息配置錯誤,請檢查ServerName的值是否配置正確
>ds_connect Ora_remote_111
Enter username for connecting to 'Ora_remote_111' DBMS [dsadm]: scott
Enter password for scott: 
SQLConnect error:   Status = -1   SQLState = S1000   Natcode = 0
[ODBC] [IBM(DataDirect OEM)][ODBC Oracle Wire Protocol driver]Cannot open TNS Names file.

這個錯誤請檢查Oracle環境變量配置和文件權限分配,通常文件具有讀的權限即可。

3 MySql 數據源配置

配置的方式都是差不多的,理解了工作原理,然后根據官方提供的預配置信息配置。
配置.odbc.ini

[mysql_99]
Driver=/opt/IBM/InformationServer/Server/branded_odbc/lib/VMmysql24.so
Description=DataDirect 6.0 MySQL Wire Protocol
AlternateServers=
ApplicationUsingThreads=1
ConnectionReset=0
ConnectionRetryCount=0
ConnectionRetryDelay=3
DefaultLongDataBuffLen=1024
EnableDescribeParam=0
EncryptionMethod=0
FailoverGranularity=0
FailoverMode=0
FailoverPreconnect=0
HostName=mySqlHost
Database=mysql
PortNumber=3306
HostNameInCertificate=
InteractiveClient=0
KeyPassword=
KeyStore=
KeyStorePassword=
LoadBalanceTimeout=0
LoadBalancing=0
LoginTimeout=15
LogonID=
Password=
MaxPoolSize=100
MinPoolSize=0
Pooling=0
QueryTimeout=0
ReportCodepageConversionErrors=0
TreatBinaryAsChar=0
TrustStore=
TrustStorePassword=
ValidateServerCertificate=1  

這里HostName配置主機,Database mysql數據庫,PortNumber 數據庫端口。
配置uvodbc.config

<mysql_99>
DBMSTYPE = ODBC

測試數據源 注意8.5版本的DataStage驅動不支持MySQL Community Servers版本,如果測試的版本是MySQL Community Servers,則會得到下面的錯誤信息。

>ds_connect mysql_99
Enter username for connecting to 'mysql_99' DBMS [dsadm]: root
Enter password for root: 
SQLConnect error:   Status = -1   SQLState = S1000   Natcode = 0
[ODBC] [IBM(DataDirect OEM)][ODBC MySQL Wire Protocol driver]Connections to MySQL Community Servers are not supported.  Please contact MySQL to obtain a MySQL Enterprise or Commercial version.

4 數據源的使用

當在服務器端配置好ODBC數據源后,便可以任何連接到該服務端的客戶端中使用,這有利於管理,因為不需要在客戶端中做任何的操作,並且服務端的更改對於客戶端來說是透明的。

在Data source中輸入服務端配置的ODBC數據源名稱;
在Username和Password中輸入數據庫用戶名和密碼;
單擊“測試”按鈕測試數據源連接,然后再進行其它開發。

5 總結

  在本文中介紹了DataStage ODBC的安裝路徑、官方幫助文檔、需要配置的文件以及配置方法和注意事項;.odbc.ini是數據源的核心文件,改文件的路徑可以在dsenv配置文件中的ODBCINI變量中配置,該文件配置數據源連接的詳細信息,如主機、數據庫名、端口等信息。uvodbc.config文件配置數據源DSN信息,里面配置的DSN name必須和.odbc.ini的名稱相同,該文件存在於項目目錄下和$DSHOME目錄下,默認項目首先查找和使用項目目錄下的uvodbc.config文件,如果未找到則使用$DSHOME目錄下uvodbc.config文件,所以使用時注意理解它們的作用和使用范圍。通常配置完后建議在服務端中進行測試,然后再在客戶端中開發使用,這樣可以減少一些未知的錯誤問題。

--The end(2015-09-28)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM