Oracle

如何在 TNS 中創建到具有故障轉移的數據庫的數據庫連結

  • October 15, 2019

您能否幫助我了解我的 DB LINK 創建 sql 對於 tns 條目中具有故障轉移選項的數據庫(RAC env、Oracle 12c)的外觀?

我從 Oracle 閱讀了以下文章-(由於我沒有 Oracle 支持會員資格,因此無法查看以下 url)

不要使用為故障轉移配置的 TNS 連接字元串創建 DBLink。#Database 連結不支持 TAF 或故障轉移。請參閱以下內容:數據庫連結:使用 TAF 或 SCAN TNS 連接字元串創建 DBLink(文件 ID 399453.1) https://support.oracle.com/knowledge/Oracle%20Database%20Products/399453_1.html

這是否意味著我們必須從 tns 條目中刪除故障轉移、連接等選項,然後創建數據庫連結?我的 TNS 條目如下(只是一個範例)

panda.host.com=
(DESCRIPTION =(FAILOVER=ON)(LOAD_BALANCE=OFF)
(CONNECT_TIMEOUT=3)(RETRY_COUNT=10)(RETRY_DELAY=1)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP )(HOST = panda.host.com )(PORT = 1521)) 
(ADDRESS = (PROTOCOL = TCP )(HOST = panda-sb.host.com )(PORT = 1521)))
(CONNECT_DATA = (SERVICE_NAME = panda_app.host.com ))))

我現在正在嘗試在另一個數據庫中創建一個指向該數據庫的數據庫連結,因此基於上述事實**,以下哪個 sql 是正確的並且可以正常工作?**在“使用”子句中,我提供了連接描述符,因為不允許我在 tnsnames.ora 中進行更改。

1. 

  CREATE DATABASE LINK TEST_LINK connect to REMOTE_SCHEMA identified by "MyPass" using
'(DESCRIPTION =(FAILOVER=ON)(LOAD_BALANCE=OFF)
   (CONNECT_TIMEOUT=3)(RETRY_COUNT=10)(RETRY_DELAY=1)
   (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP )(HOST = panda.host.com )(PORT = 1521)) 
   (ADDRESS = (PROTOCOL = TCP )(HOST = panda-sb.host.com )(PORT = 1521)))
   (CONNECT_DATA = (SERVICE_NAME = panda_app.host.com ))))';



2. 

CREATE DATABASE LINK TEST_LINK connect to REMOTE_SCHEMA identified by "MyPass" using
'(DESCRIPTION =
   (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP )(HOST = panda.host.com )(PORT = 1521)) 
   (ADDRESS = (PROTOCOL = TCP )(HOST = panda-sb.host.com )(PORT = 1521)))
   (CONNECT_DATA = (SERVICE_NAME = panda_app.host.com ))))';

//failover and connect options are removed.

引用的 MOS 僅說明以下內容:

  • Dblink 不支持 TAF。這是指FAILOVER_MODE參數,而不是FAILOVER. 第一個參數是關於 TAF,第二個是關於連接時故障轉移。
  • 在 RAC 的情況下,不建議對 dblinks 使用 SCAN 地址。使用 VIP 地址代替 SCAN 地址。

刪除FAILOVER參數不會改變任何東西,它的預設參數是ON.

故障轉移

您不需要刪除連接時故障轉移參數。

引用自:https://dba.stackexchange.com/questions/250804