Oracle 11g透明網關鏈接Sqlserver


Oracle 11g透明網關鏈接Sqlserver
linux

oracle 透明網關是oracle鏈接異構數據庫提供的一種技術。經過Gateway,能夠在Oracle裏透明的訪問其餘不一樣的數據庫,如SQL Server, DB2, Sybase等等,就像遠程Oracle數據庫同樣。配置後的sql查詢的處理流程sql

clipboard

1、環境信息

Oracle11g
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安全

2、Oracle透明網關配置

2.1. gateway安裝

解壓linux.x64_11gR2_gateways.zip,運行setup安裝便可,這裏咱們將透明網關和SQLServer數據庫安在了一臺服務器上服務器

clipboard[1]

clipboard[2]

clipboard[3]

下一步,填寫SQLServer數據庫務器主機名,如:172.17.22.230;數據庫名稱:HRoracle

clipboard[4]

clipboard[5]

安裝完後,會彈出配置監聽界面,由於咱們要手工配置,點擊取消便可。app

安裝完Gateway軟件後,在ORACLE_HOME目錄(D:\product\11.2.0\tg_1)下有一下dg4msql的目錄,這就是Gateway軟件的目錄了。tcp

2.2. 透明網關層配置的SID信息,指明要訪問的MSSQL數據庫

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的數據庫名。由於咱們在安裝過程當中指定了主機名和數據庫名,這裏已經有信息了。

2.3. 透明網關層配置監聽器,處理oracle的查詢請求

透明網關層的監聽配置文件: 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
正常運行時間              00 小時 03 秒
跟蹤級別                  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是否已經啓動

2.4 Oracle服務器配置tns

在須要創建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)

2.5.創建DB link

create public database link HRdbLink connect to sa identified by "admin_123" using 'HR';

2.6 測試

SQL> select 1 from dual@HRdbLink;

1

----------

1

3、遇到的錯誤

錯誤1:initdg4msql.ora錯誤

[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值配置錯誤

錯誤2.透明網關的監聽卡住,沒法重啓

相關進程沒有完全關閉,殺掉相關進程 如dg4msql.exe

參考:

https://docs.oracle.com/cd/B28359_01/gateways.111/b31043/conf_sql.htm

相關文章
相關標籤/搜索