oracle使用的11g,在一臺windows服務器;mysql使用的是5.7版本,在另一臺windows服務器,這兩個服務器之間的網絡是互通的。做BI時,要獲取不同數據源的數據,這些數據源可能是Oracle,也可能是sqlserver、mysql。當使用Oracle作為數倉歸集數據時,可以使用專門的ETL工具,從其他類型的數據源獲取數據,也可以直接使用Oracle的網關技術+dblink,直連這些非oracle的關系型數據庫。
注意:使用這種方式時,會因為個別數據類型不兼容、oracle對標識長度限制等而報錯,可以在mysql中建立視圖轉換解決。
準備
環境
oracle服務器環境:windows?server?2012R2 x64、oracle?11.2.0.4
mysql服務器環境:
oracle網關
oracle通過dblink訪問非oracle數據庫,需要使用oracle的gateway組件。oracle數據庫的gateway提供了一種能力,能夠從oracle環境透明無障礙地訪問在非oracle數據庫中的數據。
gateway技術是由兩部分組件組成:組件一,使用通用的技術連接非oracle數據庫,對于所有非oracle數據庫而言,都一樣,稱之為多樣化服務(Heterogeneous Services);組件二,因oracle gateway連接的非oracle數據庫的不同而不同。詳見下圖。使用gateway與odbc驅動,可以訪問非oracle數據庫,該驅動必須和gateway在同一臺機器上。
下載
gateway網關
已被包含在oracle的安裝包之中。
odbc驅動
mysql的版本5.7.40,下載對應的ODBC。
https://downloads.mysql.com/archives/c-odbc/
配置
ODBC
如上所示,目前沒有mysql?odbc驅動,安裝下載的odbc即可。
安裝odbc時,可以使用默認設置,一直下一步,直至安裝完成。
安裝完后,沿著之前的路徑,打開odbc配置界面
測試成功,保存。
gateway
檢查確認是否已經安裝gateway,cmd啟動命令行,輸入db4odbc或hsodbc,查看是否已經安裝。如下圖所示,說明已經安裝。
按照路徑E:\app\Administrator\product\11.2.0\dbhome_2\hs\admin,找到initdg4odbc.ora文件,將該文件復制出來,改名為initodbc_?,本實驗中是initdg4odbc_bpm.ora。
注意:每個使用dg4odbc的實例,都必須單獨一個”init*.ora”文件,文件命名規則:init+<網關sid>+.ora
HS_FDS_CONNECT_INFO = ODBC數據源管理中的DSN名稱【本實驗為bpmds】HS_FDS_TRACE_LEVEL = OFF 【追蹤級別參數,出于性能影響一般不配置或者配置為"OFF",若遇到網關問題需要跟蹤日志,則配置為"Debug",跟蹤日志文件存放在"ORACLE_HOME\hs\trace"目錄下】
在路徑:E:\app\Administrator\product\11.2.0\dbhome_2\NETWORK\ADMIN,找到監聽文件,并調整。
重啟監聽
提示:監聽是動態注冊,稍后就能看到orcl
創建dblink,測試。mysql用戶密碼必須雙引號,host是oracle服務器ip,port是oracle端口。
測試效果