[zt] Oracle與SQL Server的互連
作者:gototop
-------------------------------------------------------------------------
另一篇
http://www.csdn.net/develop/author/columnAuthor/hochihyi/Article/SqlServer/002.htm
-----------------------------------------------------------------------------------
不同資料庫平臺的互連一般稱之為資料庫的異構服務,現在各大資料庫之間都可以實現這樣的異構互連,只是各廠商的具體實現技術不一樣,如:在SQL SERVER裡面叫做LINKED SERVER,透過ODBC實現與其它資料庫的互聯。
而ORACLE實現異構服務的技術叫做透明閘道器(Transparent Gateway),當然之前ORACLE還採用過通用連線技術。目前ORACLE利用透明閘道器可以實現和SQL SERVER、SYBASE、DB2等多種資料庫的互聯。 Oracle For SQL Server的透明閘道器在UNIX下無法實現,目前只支援WIN
透明閘道器的體系結構也很簡單,在ORACLE和SQL SERVER之間使用ORACLE透明閘道器伺服器實現互連互通,其中透明閘道器伺服器可以與ORACLE或SQL SERVER資料庫在同一臺主機上,也可以是在獨立的一臺主機上。
下面是具體步驟:
1、在SQL SERVER資料庫上建立測試賬號和表
這裡我用的是10.16.74.140的PUBS資料庫,賬號cyx,
create table t (c char(10));
2、我測試所用資料庫和透明閘道器是在同一臺機器上,在我本機:10.16.98.16,透明閘道器在oracle預設安裝時是不安裝的,所以如果你想用需要選擇這一選項。
3、安裝透明閘道器for sql server的軟體後,可以在$ORACLE_HOME下看到tg4msql目錄,編輯$ORACLE_HOME/tg4msql/admin/inittg4msql.sql檔案確認這一行正確:
HS_FDS_CONNECT_INFO="SERVER=10.16.74.140;DATABASE=pubs"
4、修改透明閘道器server上的listener.ora,在SID_LIST中加入以下內容:
(SID_NAME = tg4msql) # SID自己命名
(ORACLE_HOME = c:)
(PROGRAM = tg4msql)
5、在oracle server上的tnsnames.ora中加入到透明閘道器的tnsname,內容如下:
sql2k =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.16.98.16)(PORT = 1521)) #此處HOST填的是透明閘道器SERVER的地址
)
(CONNECT_DATA = (SID = tg4msql) ) #此SID應和透明閘道器SERVER上設定的SID相同
(HS=OK)
)
6、修改ORACLE SERVER的初始化引數,將global_names設為false,因為我們並不使用GLOBAL NAME。然後重起資料庫。
7、現在在ORACLE SERVER上建立DB LINK就可以了。下面實驗資料:
------------ ------------- gototop --------------
C:>sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 6月 25 13:29:41 2003
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn sys/change_on_install as sysdba
已連線。
SQL> create user cyx identified by cyx default tablespace users;
使用者已建立
SQL> grant connect to cyx;
授權成功。
SQL> grant resource to cyx;
授權成功。
SQL> conn cyx/cyx
已連線。
SQL> create database link tosql2k connect to cyx identified by cyx using
2 'sql2k';
資料庫連結已建立。
SQL> select * from t@tosql2k;
c
----------
abc
aaa
bbb
cyx
gototop
ncn
11111
已選擇7行。
SQL> insert into t@tosql2k values('ncn.cn');
已建立 1 行。
SQL> commit;
提交完成。
SQL> select * from t@tosql2k;
c
----------
abc
aaa
bbb
cyx
gototop
ncn
11111
ncn.cn
已選擇8行。
------------ ------------- gototop --------------
以上示例,oracle server和透明閘道器server都是在同一臺機器上,像在開始說明的那樣,我們同樣可以在其他下面oracle server中透過透明閘道器來訪問sql server的資料。下面是示例:
現在這個oracle server上新增tnsname。
------------ ------------- gototop --------------
hawk3$sqlplus cyx
SQL*Plus: Release 8.1.7.0.0 - Production on Wed Jun 25 14:00:34 2003
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Enter password:
Connected to:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
SQL> create database link hawk3_sql2k connect to cyx identified by cyx
2 using 'sql2k';
Database link created.
SQL> select * from t@hawk3_sql2k;
c
--------------------
abc
aaa
bbb
cyx
gototop
ncn
11111
ncn.cn
8 rows selected.
------------ ------------- gototop --------------
gototop 2003.7.25注:很多朋友問到關於透明閘道器的一些問題,在此加以說明如下:
1、Oracle For SQL Server的透明閘道器在UNIX下無法實現,目前只支援WIN; 原因很簡單,SQL Server本身不支援UNIX,所以Oracle也無法直接在UNIX下訪問SQL Server。
2、Oracle For其它資料庫的透明閘道器,如SYBASE等有UNIX本版本的資料庫在UNIX可以實現。
3、Oracle透明閘道器軟體在Oracle 8i時是需要花錢另買的,大約1萬$;到Oracle 9i時是作為資料庫的一個元件免費釋出的。安裝時在元件種選擇即可。
4、針對我們的實際應用,如果有需要實現Oracle 到SQL Server的互連,我們需要另外用一臺WIN下的Oracle 9i來做透明閘道器伺服器,其它UNIX下的Oracle透過這個透明閘道器來訪問SQL Server。
5、不同資料庫間的資料處理需使用標準SQL來實現。
6、各資料庫中特殊的資料型別,需要在程式中實現轉換,應儘量避免使用無法轉換的資料型別。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-594481/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server連線SQL Server、SQL Server連線ORACLE 連結伺服器SQLServerOracle伺服器
- 如何使用Linked Server連線Oracle與SQL ServerServerOracleSQL
- SQL Server linked server 連線OracleSQLServerOracle
- SQL Server專題 [zt]SQLServer
- [zt] 使用SQL Server中的Linked Server及Remote ServerSQLServerREM
- SQL SERVER與ORACLE的資料共享SQLServerOracle
- [zt] sql server 死鎖總結SQLServer
- 談asp 與SQL server互操作的時間處理 (轉)SQLServer
- [zt SQL Server2005複製功能實現與Oracle資料庫同步SQLServerOracle資料庫
- oracle 互鎖的sqlOracleSQL
- [zt] 利用 SQL Server 中的 Linked Server 執行 Oracle 中之預儲函式、程式SQLServerOracle函式
- 連線SQL ServerSQLServer
- [zt] Sql Server死鎖的查詢和解除SQLServer
- [zt] SQL Server管理員必備的DBCC用法SQLServer
- SQL in ORACLE and SQL ServerSQLOracleServer
- SQL Deverlop連線SQL ServerSQLdevServer
- SQL Server效能調優札記 [zt]SQLServer
- [zt] SQL Server 2000複製SQLServer
- Oracle 11g的SQL Developer連線SQL Server 2008OracleSQLDeveloperServer
- 也談SQL Server表與Excel、Access資料互導SQLServerExcel
- SQL server 與Oracle開發比較SQLServerOracle
- SQL SERVER 登入問題!該使用者與可信的Sql Server連線無關聯SQLServer
- 升級至SQL Server 2005的理由[zt]SQLServer
- .NET連線SQL ServerSQLServer
- 關於SQL Server 截斷日誌[zt]SQLServer
- [zt] JDBC連線Oracle RAC的連線串配置JDBCOracle
- Oracle SQL optimization-2(zt)OracleSQL
- Oracle Shared Server(OSS)筆記 (zt)OracleServer筆記
- SQL SERVER 自連線、外連線SQLServer
- [zt] 如何解決在 SQL Server 使用連結的伺服器時出現的錯誤 7391SQLServer伺服器
- [zt] 揭祕SQL Server 2000中的Bookmark LookupSQLServer
- 連線SQL SERVER的公共類 (轉)SQLServer
- oracle 11g gateway 連線sql server 2000OracleGatewaySQLServer
- order by在SQL Server與Oracle中的一個區別SQLServerOracle
- SQL Server 2005效能調整二(zt)SQLServer
- SQL Server 2005效能調整一(zt)SQLServer
- [zt] SQL Server匯出匯入資料方法SQLServer
- sql server系統表詳細說明(zt)SQLServer