Oracle 11g透明網關鏈接Sqlserverlinux
oracle 透明網關是oracle鏈接異構數據庫提供的一種技術。經過Gateway,能夠在Oracle裏透明的訪問其餘不一樣的數據庫,如SQL Server, DB2, Sybase等等,就像遠程Oracle數據庫同樣。配置後的sql查詢的處理流程sql
IP地址 | 172.17.84.29 |
Oracle根目錄 | /u01/oracle/app/product/11.2.0/dbhome_1 |
Oracle端口 | 1521 |
Oracle gateway11 數據庫
IP地址 | 172.17.22.230 |
gateway11根目錄 | D:\product\11.1.0\tg_1 |
gateway端口 | 1521 |
SID | HR |
Sqlserver2012 windows
IP地址 | 172.17.22.230 |
數據庫名 | HR |
用戶名 | sa |
密碼 | admin_123 |
Oracle透明網關下載地址: http://download.oracle.com/otn/linux/oracle11g/R2/linux.x64_11gR2_gateways.zip安全
解壓linux.x64_11gR2_gateways.zip,運行setup安裝便可,這裏咱們將透明網關和SQLServer數據庫安在了一臺服務器上。服務器
下一步,填寫SQLServer數據庫服務器主機名,如:172.17.22.230;數據庫名稱:HRoracle
安裝完後,會彈出配置監聽界面,由於咱們要手工配置,點擊取消便可。app
安裝完Gateway軟件後,在ORACLE_HOME目錄(D:\product\11.2.0\tg_1)下有一下dg4msql的目錄,這就是Gateway軟件的目錄了。tcp
在D:\Oracle\product\11.2.0\tg_1\dg4msql\admin\initdg4msql.ora目錄下有一個initdg4msql.ora的文件。該文件是Gateway的初始參數文件,描述鏈接的是哪一個SQL Server數據庫。該文件的格式是initSID.ora,這裏的SID在後面須要用到,系統默認的是dg4msql,通常狀況這樣就能夠了。若是更名,如使用HR做爲SID,則文件名變成initHR.ora。文件內容以下ide
# This is a customized agent init file that contains the HS parameters
# that are needed for the Database Gateway for Microsoft SQL Server
#
# HS init parameters
#
HS_FDS_CONNECT_INFO=[172.17.22.230]//HR
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
只要修改HS_FDS_CONNECT_INFO參數就能夠了。格式是:[hostname:port]/serverinstance/databasename,其中hostname是機器名稱或IP,PORT是SQL Server的端口號,SQL Server2005默認爲1433.serverinstance是SQL Server的實例名,通常空着就行。Databasename是SQL Server的數據庫名。由於咱們在安裝過程當中指定了主機名和數據庫名,這裏已經有信息了。
透明網關層的監聽配置文件: D:\Oracle\product\11.2.0\tg_1\NETWORK\ADMIN\listener.ora
這裏PROGRAM指定應用程序名稱,由於實例配置文件在D:\Oracle\product\11.2.0\tg_1\dg4msql\admin\initdg4msql.ora,因此PROGRAM不能改變, SID_NAME就是前面init.ora文件名裏指定的SID
# listener.ora Network Configuration File: D:\product\11.2.0\tg_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = HR)
(PROGRAM = dg4msql)
(SID_NAME = HR)
(ORACLE_HOME = D:\product\11.2.0\tg_1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.22.230)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = D:\product\11.2.0\tg_1
啓動監聽
C:\Users\Administrator>lsnrctl start LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 20-7月 -2016 15:0 8:31 Copyright (c) 1991, 2010, Oracle. All rights reserved. 啓動tnslsnr: 請稍候... TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production 系統參數文件爲D:\product\11.2.0\tg_1\network\admin\listener.ora 寫入d:\product\11.2.0\tg_1\diag\tnslsnr\WIN-158KFV5FSBR\listener\alert\log.xml的 日誌信息 監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.17.22.230)(PORT=1521))) 監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc))) 正在鏈接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.17.22.230)(PORT=1521))) LISTENER 的 STATUS ------------------------ 別名 LISTENER 版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Produ ction 啓動日期 20-7月 -2016 15:08:47 正常運行時間 0 天 0 小時 0 分 3 秒 跟蹤級別 off 安全性 ON: Local OS Authentication SNMP OFF 監聽程序參數文件 D:\product\11.2.0\tg_1\network\admin\listener.ora 監聽程序日誌文件 d:\product\11.2.0\tg_1\diag\tnslsnr\WIN-158KFV5FSBR\li stener\alert\log.xml 監聽端點概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.17.22.230)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc))) 服務摘要.. 服務 "HR" 包含 1 個實例。 實例 "HR", 狀態 UNKNOWN, 包含此服務的 1 個處理程序... 命令執行成功 C:\Users\Administrator>
也能夠去windows的服務中查看OracleOraGtw11g_home1TNSListener是否已經啓動
在須要創建dblink的Oracle數據庫所在服務器,配置/u01/oracle/app/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
HR =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =172.17.22.230)(PORT = 1521))
(CONNECT_DATA=(SID=HR))
(HS=OK)
)
測試tns
[oracle@elearningtest admin]$ tnsping HR TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 20-JUL-2016 15:14:22 Copyright (c) 1997, 2013, Oracle. All rights reserved. Used parameter files: /u01/oracle/app/product/11.2.0/dbhome_1/network/admin/sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =172.17.22.230)(PORT = 1521)) (CONNECT_DATA=(SID=HR)) (HS=OK)) OK (10 msec)
create public database link HRdbLink connect to sa identified by "admin_123" using 'HR';
SQL> select 1 from dual@HRdbLink; 1 ---------- 1
[SQL]Select 1 from dual@HRdbLink
[Err] ORA-28545: 鏈接代理時 Net8 診斷到錯誤
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: 緊接着 2 lines (起自 HRDBLINK)
緣由:
D:\Oracle\product\11.2.0\tg_1\dg4msql\admin\initdg4msql.ora的HS_FDS_CONNECT_INFO值配置錯誤
相關進程沒有完全關閉,殺掉相關進程 如dg4msql.exe
https://docs.oracle.com/cd/B28359_01/gateways.111/b31043/conf_sql.htm