Oracle&SQLServer中實現跨庫查詢

1、在SQLServer中鏈接另外一個SQLServer庫數據html

在SQL中,要想在本地庫中查詢另外一個數據庫中的數據表時,能夠建立一個連接服務器:sql

EXEC master.dbo.sp_addlinkedserver @server = N'別名', @srvproduct=N'庫名',@provider=N'SQLOLEDB', @datasrc=N'服務器地址'數據庫

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'別名', @locallogin = NULL ,@useself = N'False', @rmtuser = N'用戶名', @rmtpassword = N'密碼'服務器

建立完後,就能夠經過「Select * from別名.庫名.dbo.表名」來查詢了。oracle

或者也能夠手工建立:ide

Oracle&SQLServer中實現跨庫查詢



Oracle&SQLServer中實現跨庫查詢



 

 

 

 

2、在Oracle中鏈接另外一個Oracle庫數據工具

在Oracle中,其實也相似,要鏈接到其餘庫時,也須要建立一個相似這樣的鏈接:sqlserver

create database link 別名 connect to 模式名(用戶名) identified by "密碼" using 'TNS名';開發工具

注意:這裏面的TNS名就是你須要鏈接的另外一個庫的TNS名,並且是必需是在你當前鏈接的庫的服務器端所配置的TNS名。url

建立完後,咱們也就能夠訪問了:「Select * from表名@別名」

若是使用的是PL/SQL開發工具,那麼咱們也能夠直接在工具裏建立:

Oracle&SQLServer中實現跨庫查詢



Oracle&SQLServer中實現跨庫查詢



 

 

 

 

3、在SQL Server中鏈接Oracle數據

一樣,也建立一個數據庫鏈接便可,這時咱們採用Ole DB方式鏈接數據庫:

EXEC master.dbo.sp_addlinkedserver @server = N'別名', @srvproduct=N'庫名',@provider=N'MSDAORA', @datasrc=N'TNS名'

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'別名', @locallogin = NULL ,@useself = N'False', @rmtuser = N'模式名', @rmtpassword = N'密碼'

注意:這裏面的TNS名,是在該SQL Server器端所配置的TNS名,不是在客戶端本地哦。

建立好了後,使用「select * from openquery(別名,'select * from模式名.表名」來執行查詢。

要鏈接到其餘類型的數據庫時,其實方式也類同,只要用相應的provider來鏈接便可。

 

4、在Oracle中鏈接SQL Server數據

在oracle中鏈接SQLServer也很相似,建立一個DBLink,但問題是,建立DBLink裏,裏面用的TNS名稱都是鏈接到Oracle的,沒有配置鏈接到SQL Server中的。

因而想到採用Oracle中的透明網關來實現,首先在Oracle的安裝名中裝上,Oracle Net Services和Oracle Transparent Gateways, 並在此項下選擇Oracle Transparent Gateway for Microsoft SQL Server。

配置透明網關,編輯%ORACLE_HOME%/tg4msql/admin/init%ORACLE_SID%.ora, 該文件包含了TG for SQL Server的配置信息, 其中%ORACLE_SID%是給TG的"SID", 默認爲tg4msql. 修改文件中的行HS_FDS_CONNECT_INFO="SERVER=SQL服務器地址;DATABASE=庫名"。

而後建立監聽器:編輯%ORACLE_HOME%/network/admin/listener.ora, 編輯對應listener的SID_LIST:

SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC= 
(SID_NAME=%ORACLE_SID%)
(ORACLE_HOME=oracle_home_directory)
(PROGRAM=tg4msql)
)
)

其中%ORACLE_SID%爲第二布中設置的SID, 默認值爲tg4msql. 修改listener.ora文件後需重啓listener使修改生效.

最後就能夠配置TNS名了,若是直接修改Tnsname.ora文件的話,添加的格式是:

TNS名=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=sqlserver)(PORT=1521))
(CONNECT_DATA=(SID=網關ID))
(HS=OK))

這樣,TNS名後就能夠建立DB Links,而後查詢的方式與前面一至。

相關文章
相關標籤/搜索