Oracle Gateways透明閘道器訪問SQL Server
自己的本機安裝了Oracle 12c,公司的平臺需要同時支援Oracle與SQL Server,很多時候都有將資料從Oracle同步到SQL Server的需求。通過SQL Server的link Server可以達到目的,但是因為SQL Server都是64位版本,試過很多次都失敗了。再安裝32位SQL Server也懶得折騰。
因Oracle是12c, 安裝的Gateways也是12c。嘗試過在Oracle資料庫伺服器(本機)安裝11g的gateways, 但是配置都失敗了。
Oracle Gateways 12c的下載地址也在Oracle Database 12c的下載頁。找到與自己資料庫版本的對應的Gateways。
安裝前,設定了一下環境變數ORACLE_HOME,我的是:C:\oracle\product\12.1.0\dbhome_1
安裝時,選擇自己需要訪問的資料庫,這裡是SQL Server.這裡將Gateways安裝到了與Oracle資料庫軟體相同的目錄。\
安裝過程:
配置是重點。網上找到的都是10g的配置。12c的目錄名稱與10g的稍有區別:
listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\oracle\product\12.1.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\oracle\product\12.1.0\dbhome_1\bin\oraclr12.dll")
)
(SID_DESC =
(SID_NAME = dg4msql)
(ORACLE_HOME = C:\oracle\product\12.1.0\dbhome_1)
(PROGRAM = dg4msql)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
在tnsnames.ora新增以下內容:
dg4msql =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SID = dg4msql)
)
(HS = OK)
)
在ORACLE_HOME/dg4msql/admin/initdg4msql.ora
確認檔案initdg4msql.ora中有以下內容():
HS_FDS_CONNECT_INFO=server name,port number//database name
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
或者: [192.168.1.242]:1433//middle_db
建立一個DB Link:
create public database link MS_LINK
connect to sa identified by password
using 'dg4msql';
重啟監聽。
使用select * from table@ms_link的形式訪問SQL Server表。不可以直接使用insert into table@ms_link select * from table向SQL Server表插入資料。錯誤提示是源表與目標表都應在同一個資料庫。
我的解決方法是使用一段匿名指令碼一次一條資料。不知道有沒有更好的辦法。
至此,已經可以成功在Oracle資料庫中訪問SQL Server的資料了。
因Oracle是12c, 安裝的Gateways也是12c。嘗試過在Oracle資料庫伺服器(本機)安裝11g的gateways, 但是配置都失敗了。
Oracle Gateways 12c的下載地址也在Oracle Database 12c的下載頁。找到與自己資料庫版本的對應的Gateways。
安裝前,設定了一下環境變數ORACLE_HOME,我的是:C:\oracle\product\12.1.0\dbhome_1
安裝時,選擇自己需要訪問的資料庫,這裡是SQL Server.這裡將Gateways安裝到了與Oracle資料庫軟體相同的目錄。\
安裝過程:
配置是重點。網上找到的都是10g的配置。12c的目錄名稱與10g的稍有區別:
listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\oracle\product\12.1.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\oracle\product\12.1.0\dbhome_1\bin\oraclr12.dll")
)
(SID_DESC =
(SID_NAME = dg4msql)
(ORACLE_HOME = C:\oracle\product\12.1.0\dbhome_1)
(PROGRAM = dg4msql)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
在tnsnames.ora新增以下內容:
dg4msql =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SID = dg4msql)
)
(HS = OK)
)
在ORACLE_HOME/dg4msql/admin/initdg4msql.ora
確認檔案initdg4msql.ora中有以下內容():
HS_FDS_CONNECT_INFO=server name,port number//database name
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
或者: [192.168.1.242]:1433//middle_db
建立一個DB Link:
create public database link MS_LINK
connect to sa identified by password
using 'dg4msql';
重啟監聽。
使用select * from table@ms_link的形式訪問SQL Server表。不可以直接使用insert into table@ms_link select * from table向SQL Server表插入資料。錯誤提示是源表與目標表都應在同一個資料庫。
我的解決方法是使用一段匿名指令碼一次一條資料。不知道有沒有更好的辦法。
至此,已經可以成功在Oracle資料庫中訪問SQL Server的資料了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21251711/viewspace-1274175/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle透過透明閘道器訪問sql serverOracleSQLServer
- 從Oracle訪問SQL Server(GATEWAYS)OracleSQLServerGateway
- ORACLE 透明閘道器訪問 MYSQL 表OracleMySql
- Oracle透明閘道器訪問Mysql—luckyfriendsOracleMySql
- ORACLE 9i 建立透明閘道器訪問SQL Server 2008OracleSQLServer
- Oracle配置透明閘道器訪問sql2000OracleSQL
- Oracle 通過透明閘道器訪問mysqlOracleMySql
- Oracle 透過透明閘道器 訪問 mysqlOracleMySql
- oracle通過透明閘道器(Oracle Transparent Geteways),訪問ms sql server和其他資料庫OracleSQLServer資料庫
- Oracle透明閘道器訪問SQLServer資料庫OracleSQLServer資料庫
- Oracle透明閘道器訪問MySQL資料庫OracleMySql資料庫
- 配置Oracle Gateways透明閘道器連線多個MSSQL資料庫OracleGatewaySQL資料庫
- Oracle 通過透明閘道器訪問mysql配置步驟OracleMySql
- 10g透明閘道器訪問sqlserverSQLServer
- Oracle 11.2.0.4 透過透明閘道器訪問mysql 8.0.16OracleMySql
- oracle透明閘道器之異構資料庫的訪問Oracle資料庫
- ORACLE透明閘道器的配置Oracle
- Oracle 透明閘道器連線MySQLOracleMySql
- Oracle10g中通過透明閘道器、DBLink訪問MySQL資料OracleMySql
- 【磐維資料庫】Oracle(透明閘道器)訪問磐維資料庫(PanWeiDB)資料庫Oracle
- 通過Oracle Gateways 訪問SybaseOracleGateway
- oracle連線teradata透明閘道器配置Oracle
- sql server透明閘道器dblink在alert裡報recover登入失敗SQLServer
- transparent gateway 透明閘道器配置Gateway
- 安全閘道器 透明加解密解密
- oracle通過透明閘道器連線mysql的配置OracleMySql
- ORACLE通過透明閘道器連線DB2OracleDB2
- oracle9i透明閘道器到sqlserver的配置OracleSQLServer
- ORACLE9i 的透明閘道器的配置 (轉)Oracle
- 透明閘道器 oracle 10g for sqlserver 和sybase的配置Oracle 10gSQLServer
- SQL Server建立Linked Server訪問OracleSQLServerOracle
- ORACLE通過透明閘道器建dblink連線Postgresql的幾個問題OracleSQL
- ADSL+RH8.0透明閘道器指南(轉)
- 時代億信檔案共享訪問控制閘道器概述
- 不設定預設閘道器,可訪問網路
- 透明閘道器一些特殊場景的配置
- 透明閘道器的安裝配置及一般使用
- SQL Server通過dblink訪問Oracle資料SQLServerOracle