oracle透過透明閘道器訪問sql server

lsl031發表於2011-08-25

今天需要考慮監控服務從win移到到一臺linux伺服器上,但是發現一個問題,以前win上是裝了sql server客戶端來進行對遠端簡訊閘道器資料庫的資料寫入,從而實現簡訊報警的,如果監控的伺服器移到linux,貌似無法安裝sql server客戶端了。

於是考慮是否可以透過透明閘道器,透過異構的dblink方式,由oracle資料庫檢測出故障時,直接呼叫dblink來實現遠端sql的資料插入,從而實現簡訊報警,避免使用客戶端呼叫的問題。

安裝步驟如下:

1.先要安裝透明閘道器的安裝包,這個在10g裡面應該是要單獨下載安裝的(oracle效能越來越好,功能越來越強,安裝包越來越小,安裝越來越簡單,很大程度上就是由於oracle對很多功能進行了剝離,預設請況下不使用,這就扯遠了)。

2.安裝好後,在$oracle_home\tg4msql\admin目錄下,有這樣一個檔案inittg4msql.ora,複製生成另外的名字,為init.ora,這裡的sid就是後面監聽及tns配置裡面需要使用的名字了,如果預設原來的檔案,那麼,sid就是tg4msql。在init.ora檔案走ing進行如下編輯:

HS_FDS_CONNECT_INFO="SERVER=callcenter;DATABASE=pubs"
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
其中server為遠端sql的主機名,這裡我是用了host檔案進行配置之後,在本機的別名。database及時sqlserver裡面的資料庫名字。我的檔名命名為initsms.ora.

3.配置監聽及tns:

監聽檔案中加入:

(SID_DESC=
         (SID_NAME= sms)
         (ORACLE_HOME=E:\oracle\product\10.2.0\db_1)
         (PROGRAM=tg4msql)
     )  

tnsname檔案中加入

sms =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 本機ip)(PORT = 1521))
    (CONNECT_DATA =
      (SID = sms)
      )
      (HS = OK)
  )

 

4.再建立dblink
create database link "SQLSERVER"
connect to 使用者名稱 identified by "12345677888888"
using 'sms';

5.訪問select * from 即可。

6.在前期配置中,由於tnsnames檔案寫得有一點問題:

sms =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 本機ip)(PORT = 1521))
    (CONNECT_DATA =
      (SID = sms)
       (HS = OK )    -----這裡括號的位置有問題,所以在tnsping沒問題的請款下,頻繁報錯,報錯為ORA-02068: 以下嚴重錯誤源於 SQLSERVER ORA-03135: 連線失去聯絡
     )
  )

 

另外,如果需要連線到另外的資料庫或者配置有所變化,即便重啟了監聽,也需要重新建立dblink。否則改動無法體現。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/288166/viewspace-705758/,如需轉載,請註明出處,否則將追究法律責任。

相關文章