專案需求:這裡暫且叫A公司吧,A公司有一套人事管理軟體,需要與我們公司的軟體做人員資訊同步,A公司用的是SQL server資料庫,我們公司用的Oracle,介面都不會開發(一萬句“fuck you”),就單單給我們公司提供了一個SQL server的賬戶和密碼,還有一個檢視。後來百度一番,可以通過DBLink跨資料庫訪問,然後做資料資訊同步功能。
安裝過程中,踩了不少的坑,需要配置很多的東西,QQ群裡也請教不少人,都很少人聽說還有這玩意,現在做資料對接,都是走到介面,傳JSON字串過來,回答我的人,也是寥寥無幾,一萬句“fuck you”,真的是坑啊,最終花了一天的時間把搗鼓出來,所以把整個安裝步驟記錄下來。
第一步:需要去下載一個透明網管,相當於一箇中介軟體(我們用的Oracle 11g,可能不同的資料庫版本要安裝不同的透明網管)
需要的朋友請到我的百度雲盤上下載
連結:https://pan.baidu.com/s/1pLsPI8jw7e5JiTazPJpFwQ
提取碼:m7od
第二步:安裝透明閘道器
1、解壓安裝包後,點選setup.exe安裝
2、下一步(注:貌似一定要和Oracle資料庫安裝目錄一致,第一次安裝的時候,就和Oracle安裝在不同地方了,最終百度很久發現,要和Oracle安裝同一個位置)
3、選擇組建,選擇SQL Server
4、填寫SQL SERVER的主機名和資料庫名稱
5、開始安裝
6、安裝完成後就退出,然後開始配置監聽,下面是重點!!!!
第三步:透明閘道器配置
配置說明:
本地Oracle安裝目錄:D:\Oracle\product\11.2.0\dbhome_1
本地DBLink安裝目錄:D:\Oracle\product\11.2.0\dbhome_1
SQL Server:賬號:sa;密碼:password;IP地址:127.0.0.1
1、來到:D:\Oracle\product\11.2.0\dbhome_1\dg4msql\admin;開啟initdg4msql.ora
1 這個目錄下可以看到以下initdg4msql.ora檔案,上面在安裝透明閘道器的時候有配置的要連結SQL SERVER資料的地址和資料庫名稱,在這裡都可以體現:
配置檔案:initdg4msql.ora
1 # This is a customized agent init file that contains the HS parameters 2 # that are needed for the Database Gateway for Microsoft SQL Server 3 4 # 5 # HS init parameters 6 # 7 HS_FDS_CONNECT_INFO=[127.0.0.1]:1433//DEMO 注:連線其他的SQL Server可修改此處 8 HS_FDS_TRACE_LEVEL=OFF 9 HS_FDS_RECOVERY_ACCOUNT=RECOVER 10 HS_FDS_RECOVERY_PWD=RECOVER
檢查一下HS_FDS_CONNECT_INFO是否是我們想要連結的地址,格式為:目標資料庫的IP地址:埠//資料庫名。SQL SERVER的預設埠是1433。
配置檔案:listener.ora.sample(localhost是監聽的IP地址,這裡我們連的是本地,127.0.0.1也是可以的)
1 # This is a sample listener.ora that contains the NET8 parameters that are 2 # needed to connect to an HS Agent 3 4 LISTENER = 5 (ADDRESS_LIST= 6 (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)) 7 ) 8 9 SID_LIST_LISTENER= 10 (SID_LIST= 11 (SID_DESC= 12 (SID_NAME=dg4msql) 13 (ORACLE_HOME=D:\Oracle\product\11.2.0\dbhome_1) 14 (PROGRAM=dg4msql) 15 ) 16 ) 17 18 #CONNECT_TIMEOUT_LISTENER = 0
配置檔案:tnsnames.ora.sample
1 # This is a sample tnsnames.ora that contains the NET8 parameters that are 2 # needed to connect to an HS Agent 3 4 dg4msql = 5 (DESCRIPTION= 6 (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)) 7 (CONNECT_DATA=(SID=dg4msql)) 8 (HS=OK) 9 )
2、配置透明閘道器的監聽,來到:D:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN(開始配置這3個檔案)
配置檔案:listener.ora
1 # This is a sample listener.ora that contains the NET8 parameters that are 2 # needed to connect to an HS Agent 3 SID_LIST_LISTENER = 4 (SID_LIST = 5 (SID_DESC = 6 (SID_NAME = CLRExtProc) 7 (ORACLE_HOME = D:\Oracle\product\11.2.0\dbhome_1) 8 (PROGRAM = extproc) 9 (ENVS = "EXTPROC_DLLS=ONLY:D:\Oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll") 10 ) 11 (SID_DESC= 12 (SID_NAME=dg4msql) 13 (ORACLE_HOME=D:\Oracle\product\11.2.0\dbhome_1) 14 (PROGRAM=dg4msql) 15 ) 16 ) 17 18 LISTENER = 19 (DESCRIPTION_LIST = 20 (DESCRIPTION = 21 (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 22 (ADDRESS = (PROTOCOL = TCP)(HOST = YRDLG5GS4G3ODYI)(PORT = 1521)) 23 (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)) 24 ) 25 ) 26 27 ADR_BASE_LISTENER = D:\Oracle 28 29 #CONNECT_TIMEOUT_LISTENER = 0
1 這裡需要注意的主要是一下幾點: 2 PROGRAM為dg4msql:因為例項的配置檔案在dg4msql目錄下,就是上面的initdg4msql.ora檔案所在的目錄 3 SID_NAME為dg4msql:這個sid就是上面的檔名中的sid,initdg4msql.ora的sid為dg4msql 4 ORACLE_HOME就是我們透明閘道器的安裝目錄 5 ORACLE的監聽埠是1521,我的oracle和透明閘道器是安裝在同一臺機器上的,所以透明閘道器的監聽埠設定為1522。 6 一個initSID.ora檔案就對應一個SID_DESC,可以根據想要連結的資料庫來配置。
配置檔案:sqlnet.ora
1 # sqlnet.ora Network Configuration File: D:\Oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora 2 # Generated by Oracle configuration tools. 3 4 # This file is actually generated by netca. But if customers choose to 5 # install "Software Only", this file wont exist and without the native 6 # authentication, they will not be able to connect to the database on NT. 7 8 SQLNET.AUTHENTICATION_SERVICES= (NONE) 9 10 NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
配置檔案:tnsnames.ora
1 # This is a sample tnsnames.ora that contains the NET8 parameters that are 2 # needed to connect to an HS Agent 3 ORCL = 4 (DESCRIPTION = 5 (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) 6 (CONNECT_DATA = 7 (SERVER = DEDICATED) 8 (SERVICE_NAME = orcl) 9 ) 10 ) 11 12 dg4msql = 13 (DESCRIPTION= 14 (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)) 15 (CONNECT_DATA=(SID=dg4msql)) 16 (HS=OK) 17 )
配置完之後,一定不要忘記重啟監聽!!!!!!一定不要忘記重啟監聽!!!!!!一定不要忘記重啟監聽!!!!!!
1 命令:lsnrctl reload
檢視監聽狀態:
第四步:Oracle配置DBLink
1、先檢視哪些使用者可以使用DBLink,沒有則建立許可權
賦許可權配置命令
1 如:grant create public database link to system ; 2 格式:grant create public database link to 使用者名稱 ;
2、建立DBLink(使用者要一定要許可權才可以繼續往下執行哦!沒有的往上看,給使用者配置許可權)
1 create database link DBTEST1 2 connect to SA identified by "password" 3 using 'dg4msql'; 4 5 6 7 格式: 8 create database link DBLink名稱 9 connect to SQL Server賬戶 identified by "SQL Server密碼" 10 using 'SID';
搞定!!!!
下面這個報錯資訊,QQ群問一個遍,很少人知道DBLink這玩意,百度上資料也很少,搗鼓一下午,終於搞定了
出現這個問題是因為這6個檔案導致的!!!!!!
搗鼓一下午,問題找到是因為這6個檔案配置出問題了,這次就不再敘述了,修改那個配置檔案了,配置檔案因人而異,剩下的自己百度去查吧~~~~好了,搗鼓一天了,洗洗睡了,拜~~