oracle 11.2.0.4 db link建立之sid語法一點淺談之一

wisdomone1發表於2017-06-26
測試背景
   在近期的資料庫遷移中,進一步梳理DB LINK的定義時,發現其定義存在類似如下語句


(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL 
= TCP)(HOST =xxxxx)(PORT = 1521)))(CONNECT_
DATA =(SID = xx)))                              


我們知道,一般DB LINK的定義是透過SERVICE_NAME實現訪問資料庫達到其功能的


測試結論
1,DB LINK透過SERVICE_NAME可以建立成功
create database link link_using_sid connect to user_zxy identified by system 
using '(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.39)(PORT = 1521))
    )
    (CONNECT_DATA =
      (service_name = esbdb)
    )
  )';




2,db link也可以透過SID建立成功
create database link link_using_sid connect to user_zxy identified by system 
using '(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.39)(PORT = 1521))
    )
    (CONNECT_DATA =
      (sid = esbdb)
    )
  )';




3,總結一下:
 A,SID好像是資料庫舊版本保留下來的
 B,為了使用資料庫新版本的一些新功能,比如客戶端負載均衡以及應用連線時故障切換,ORACLE建議用SERVICE_NAME替換SID


 C,關於ORACLE為何建議用SERVICE_NAME替換SID,請進一步參考官方手冊 Oracle Database Net Services Administrator






測試明細
1,DB LINK使用方與提供方的資料庫概況


DB LINK使用方資料庫名稱         db LINK使用方資料庫版本     DB LINK提供方資料庫名稱   db link提供方資料庫版本 
mygirl                           10.0.0.5                esbdb                    10.0.0.39


2,在DB LINK使用方建立基於SID的DB LINK
                             


SQL> show user
USER is "SYS"


create database link link_using_sid connect to user_zxy identified by system 
using '(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.39)(PORT = 1521))
    )
    (CONNECT_DATA =
      (sid = esbdb)
    )
  )';




3,在DB LINK使用方驗證DB LINK功能


SQL> select * from t_test@link_using_sid;


         A
----------
         1




4,透過在oracle官方手冊  Database Net Services Reference之tnsnames.ora未找到關於SID的進一步定義


繼續採用關鍵字 tns sid查閱到在官方手冊
Database Net Services Reference, 11g Release 2 (11.2)


發現如下資訊


Connect descriptors that are currently configured with the SID parameter can remain. However, to take advantage of new features, 
such as client load balancing and connect-time failover, Oracle recommends replacing SID with SERVICE_NAME


See Also:
Oracle Database Net Services Administrator's Guide for additional information about database identification by SERVICE_NAME rather than SID




總結一下:
 A,SID好像是資料庫舊版本保留下來的
 B,為了使用資料庫新版本的一些新功能,比如客戶端負載均衡以及應用連線時故障切換,ORACLE建議用SERVICE_NAME替換SID


 C,關於ORACLE為何建議用SERVICE_NAME替換SID,請進一步參考官方手冊 Oracle Database Net Services Administrator




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

相關文章