Oracle連接odbc數據源
oracle連接ODBC數據源有兩種方式,hsodbc和dg4odbc,簡單說dg4odbc是hsodbc的升級。兩種連接方法大致一樣,現將連接步驟說明如下:
方法如下:
在Oracle服務器上,cmd窗口中執行命令(dg4odbc或hsodbc)
ODBC數據源必須在系統DSN中配置,注意ODBC數據源必須與應用程序架構位數一致,要不然會出現64 位版本和 32 位版本不匹配的問題。
64-bit ODBC 默認的位置:
C:\Windows\System32\odbcad32.exe
32-bit ODBC 默認的位置:
C:\Windows\SysWOW64\odbcad32.exe
本例ODBC數據源名稱為 testodbc
在"ORACLE_HOME\hs\admin"目錄下,默認存在名為"initdg4odbc.ora"/"inithsodbc.ora"的文件,復制"initdg4odbc.ora"/"inithsodbc.ora"文件,新文件名稱改為"initodbc_test.ora",
【每個使用DG4ODBC的實例,都必須單獨一個"init*.ora"文件,文件命名規則:init+<網關sid>+.ora】
HS_FDS_CONNECT_INFO = ODBC數據源管理中的DSN名稱【本實驗為testodbc】
HS_FDS_TRACE_LEVEL = OFF 【追蹤級別參數,出於性能影響一般不配置或者配置為"OFF",若遇到網關問題需要跟蹤日志,則配置為"Debug",跟蹤日志文件存放在"ORACLE_HOME\hs\trace"目錄下】
網關監聽可配置的參數如下:
SID_NAME: 網關的SID
ORACLE_HOME:目錄
PROGRAM:指定監聽服務響應ODBC連接請求的可執行程序
參考配置:
# listener.ora Network Configuration File: C:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(SID_NAME = odbc_test)
(ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = dg4odbc(或hsodbc))
)
)
lsnrctl stop
lsnrctl start
打開 "ORACLE_HOME\network\admin\tnsnames.ora"文件
需要配置的參數如下:
connect_descriptor:填寫自定義的TNS連接名稱
ADDRESS:填寫透明網關的IP地址和端口
SID:指定連接網關的SID
HS :指定連接的是非ORACLE數據庫
odbc_test=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=127.0.0.1)
(PORT=1521)
)
(CONNECT_DATA=
(SID=odbc_test))
(HS=OK))
以sqlplus、PLSQL Developer或TOAD連接到OracleDB,執行以下DDL語句創建DBLink
在"create database link"語句中,用戶名和密碼,建議以雙引號括起來,避免Oracle在大小寫上做自動轉換。一般來說,excel數據源可以不要密碼,sql server需要密碼。
create database link odbc_test
connect to "2222"
identified by "2222" using ' odbc_test ';