2013-07-22 31 views
0

我們正在從SQL Server 2005遷移到Oracle 11G。我一直在嘗試使用存儲在SQL Server表中的數據對Oracle中的表進行更新。SQL開發人員:連接來自連接的SQL Server DB和連接的Oracle DB的表格

使用SQL開發人員,我已經完成了以下內容:

  1. 創建Oracle數據庫

    Created Connection name --> e9_crp 
    Supplied User name and Pass 
    Defined Host Name and SID 
    
  2. 我還創建了一個包含引用數據到SQL Server的連接的連接

    Connection Name --> sql_data 
    User Name and Pass 
    Host and Port 
    

用於SQL Server的連接名是sql_data

用於甲骨文的連接名是e9_crp

在SQL Server中的表是在數據庫my_tmp擁有dbo的擁有者,被稱爲tiersmy_tmp.dbo.tiers)。

在SQL Developer中,我可以看到,選擇並查看層表。這個SQL語句也適用使用工作表時,在sql_data連接:

select * from [my_tmp].[dbo].[tiers] 

嘗試連接到該表時在e9_crp連接模式,我一直在試圖做這樣的事情:

select * from [sql_data].[my_tmp].[dbo].[tiers] 

但這返回一個錯誤,指出層級表不存在:

ORA-00903: invalid table name 
00903. 00000 - "invalid table name" 

兩個表都有的「唯一的ID我所以在一個完美的世界中,這應該工作:

select a.itm, b.tier 
from [e9_crp].[crpdta].[itemmaster] a inner join [sql_data].[my_tmp].[dbo].[tiers] b 
    on(a.itm = b.itm) 

這是假設我在表標識符中使用連接名稱。但是,這顯然不起作用。我需要做的是能夠根據需要以相似的方式將這兩個數據庫連接在一起。

如何使用SQL Developer加入這兩個表?我已經嘗試了連接的多個表字符串迭代,但沒有運氣。任何幫助表示讚賞。

回答

1

Oracle具有DBLink的概念,而SQL Server具有鏈接服務器的概念。這兩個功能都可以查詢來自兩個獨立數據庫的數據。

下面是與一個Oracle DBLINK建立到SQL Server DB指令的鏈接...

http://www.dba-oracle.com/t_database_link_sql_server_oracle.htm

下面是與用於SQL Server鏈接服務器設置到Oracle數據庫的指令鏈接...

http://support.microsoft.com/kb/280106

參見本SO發佈...

SQL statement joining Oracle and MS SQL Server