【DATAGUARD】物理dg配置客戶端無縫切換 (八.3)--客戶端TAF 配置

Appleses發表於2016-01-30

DATAGUARD】物理dg配置客戶端無縫切換 (.3)--客戶端TAF 配置

1.1  BLOG文件結構圖

wps55A4.tmp 

 

 

1.2  前言部分

 

1.2.1  導讀

各位技術愛好者,看完本文後,你可以掌握如下的技能,也可以學到一些其它你所不知道的知識,~O(∩_∩)O~:

 Data Guard Broker 的配置

Fast-Start Failover 的配置

Oracle DataGuard 之客戶端TAF 配置

④ 使用DGMGRL 來管理資料庫

 物理dg管理和維護的一些sql

⑥ DataGuard 客戶端特級配置

 

注意:本篇BLOG中程式碼部分需要特別關注的地方我都用黃色背景和紅色字型來表示,比如下邊的例子中,thread 1的最大歸檔日誌號為33thread 2的最大歸檔日誌號為43是需要特別關注的地方。

  List of Archived Logs in backup set 11

  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time

  ---- ------- ---------- ------------------- ---------- ---------

  1    32      1621589    2015-05-29 11:09:52 1625242    2015-05-29 11:15:48

  1    33      1625242    2015-05-29 11:15:48 1625293    2015-05-29 11:15:58

  2    42      1613951    2015-05-29 10:41:18 1625245    2015-05-29 11:15:49

  2    43      1625245    2015-05-29 11:15:49 1625253    2015-05-29 11:15:53

 

 

 

 

 

本文如有錯誤或不完善的地方請大家多多指正,ITPUB留言或QQ皆可,您的批評指正是我寫作的最大動力。

1.2.2  實驗環境介紹

 

 專案

主庫

dg

db 型別

單例項

單例項

db version

11.2.0.3

11.2.0.3

db 儲存

FS type

FS type

ORACLE_SID

oradg11g

oradgphy

db_name

oradg11g

oradg11g

主機IP地址:

192.168.59.130

192.168.59.130

OS版本及kernel版本

RHEL6.5 64位,2.6.32-504.16.2.el6.x86_64

RHEL6.5 64位,2.6.32-504.16.2.el6.x86_64

OS hostname

rhel6_lhr

rhel6_lhr

 

 

 

1.2.3  相關參考文章連結

 

dg的系列文章參考:

【DATAGUARD】 基於同一個主機建立物理備庫和邏輯備庫(一): http://blog.itpub.net/26736162/viewspace-1448197/
【DATAGUARD】 基於同一個主機建立物理備庫和邏輯備庫(二 ):  http://blog.itpub.net/26736162/viewspace-1448207/
【DATAGUARD】 基於同一個主機建立物理備庫和邏輯備庫(三 ):  http://blog.itpub.net/26736162/viewspace-1481972/
【DATAGUARD】 基於同一個主機建立物理備庫和邏輯備庫 (四)--新增一個物理dg節點 :http://blog.itpub.net/26736162/viewspace-1484878/

【DATAGUARD】物理dg的switchover切換(五) http://blog.itpub.net/26736162/viewspace-1753111/

【DATAGUARD】物理dg的failover切換(六)   http://blog.itpub.net/26736162/viewspace-1753130/

【DATAGUARD】物理dg在主庫丟失歸檔檔案的情況下的恢復(七)  http://blog.itpub.net/26736162/viewspace-1780863/

DATAGUARD】物理dg配置客戶端無縫切換 (八.1)--Data Guard Broker 的配置:http://blog.itpub.net/26736162/viewspace-1811839/

【DATAGUARD】物理dg配置客戶端無縫切換 (八.2)--Fast-Start Failover 的配置http://blog.itpub.net/26736162/viewspace-1811936/

 

 

 

 

1.2.4  本文簡介

 

本篇blog是基於cuug的公開課內容,我自己進行實踐的操作,影片可以參考:http://blog.itpub.net/26736162/viewspace-1624453/ ,簡介我就不多寫了,把cuug的內容直接copy過來吧,覺得還是比較有用的。

 

這個技術如果你不知道,不能算是ORACLE高手

這個技術如果你不知道,就不能說你會DataGuard

這個技術如果你不知道,......

 

本次網路課程,研究當主備庫發生切換時,如何在主庫啟動一個service,保證客戶端的連線能夠繼續,而且還能夠繼續select查詢操作,而不管主備庫是在哪臺伺服器上;同時保證新的客戶連線沒有任何的問題。本課程網路上的例子不多,陳老師花了將近一年的時間人肉搜尋,最近才找到,急不可待的要分享給大家。

 

1DataGuard的配置(快速)

2、建立service

3、建立觸發器

4、主備庫切換測試

 

由於內容較多,我打算分為4個章節來共享給大家,貼個圖,不要奇怪,還有一個章節是實驗過程中配到的問題解決。

wps55B4.tmp 

 

本篇為第二節,Fast-Start Failover配置

 

 

 

1.3  實驗部分

 

1.3.1  實驗目標

 

完成Oracle DataGuard 之客戶端TAF 配置,並測試無縫切換。

 

1.3.2  客戶端TAF 配置

1.3.2.1  首先在主庫上配置一個TAFservice

此服務在資料庫出現故障時會傳送通知給客戶端,允許查詢語句在故障轉移發生後繼續執行。

在主庫端執行:

14:51:45 SQL> begin

14:52:10   2    DBMS_SERVICE.CREATE_SERVICE(service_name        => 'dg_taf_lhr',

14:52:10   3                                network_name        => 'dg_taf_lhr',

14:52:10   4                                aq_ha_notifications => TRUE,

14:52:10   5                                failover_method     => 'BASIC',

14:52:10   6                                failover_type       => 'SELECT',

14:52:10   7                                failover_retries    => 30,

14:52:10   8                                failover_delay      => 5);

14:52:10   9  end;

14:52:10  10  /

 

PL/SQL 過程已成功完成。

 

已用時間:  00: 00: 00.07

14:52:10 SQL>

 

 

 

1.3.2.2  建立一個儲存過程,用於呼叫service,確保只在主庫執行

我們建立一個儲存過程來實現此目的,如果當前資料庫是主庫它就啟動此服務,如果是備庫就停止。

 

主庫執行:

14:54:58 SQL> create or replace procedure dg_taf_proc_lhr is

14:59:46   2    v_role VARCHAR(30);

14:59:46   3  begin

14:59:46   4    select DATABASE_ROLE into v_role from V$DATABASE;

14:59:46   5    if v_role = 'PRIMARY' then

14:59:46   6      DBMS_SERVICE.START_SERVICE('dg_taf_lhr');

14:59:46   7    else

14:59:46   8      DBMS_SERVICE.STOP_SERVICE('dg_taf_lhr');

14:59:46   9    end if;

14:59:46  10  end;

14:59:46  11  /

 

過程已建立。

 

已用時間:  00: 00: 00.07

 

1.3.2.3  建立1個觸發器來確保服務可以執行

建立兩個觸發器,讓資料庫在啟動和角色轉換時執行此儲存過程。用於當資料庫open時,不需要重啟資料庫,如果是主庫則執行儲存過程。當資料庫切換後,如果是主庫則執行儲存過程。

 

主庫執行:

14:59:47 SQL> create or replace TRIGGER dg_taf_trg_startup_lhr

14:59:53   2    after startup or db_role_change on database

14:59:53   3  begin

14:59:53   4    dg_taf_proc_lhr;

14:59:53   5  end;

14:59:53   6  /

 

觸發器已建立

 

已用時間:  00: 00: 00.26

14:59:54 SQL>

 

1.3.2.4  啟動新建立的service

 在主庫上執行該儲存過程(或者重啟資料庫,在啟動資料庫時會觸發執行dg_taf_proc的觸發器)在主庫做日誌的切換,將變化應用到備庫

 

 

主庫執行:

14:59:54 SQL> exec dg_taf_proc_lhr ;

 

PL/SQL 過程已成功完成。

 

已用時間:  00: 00: 00.01

15:06:57 SQL> alter system switch logfile;

 

系統已更改。

 

已用時間:  00: 00: 01.02

15:20:01 SQL>

[oracle@rhel6_lhr ~]$ lsnrctl status

 

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 29-9月 -2015 15:07:32

 

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

 

正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.59.130)(PORT=1521)))

LISTENER 的 STATUS

------------------------

別名                      LISTENER

版本                      TNSLSNR for Linux: Version 11.2.0.3.0 - Production

啟動日期                  29-9月 -2015 12:14:49

正常執行時間              0 天 2 小時 52 分 43 秒

跟蹤級別                  off

安全性                    ON: Local OS Authentication

SNMP                      OFF

監聽程式引數檔案          /u01/app/grid/11.2.0/network/admin/listener.ora

監聽端點概要...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.59.130)(PORT=1521)))

服務摘要..

服務 "+ASM" 包含 1 個例項。

  例項 "+ASM", 狀態 READY, 包含此服務的 1 個處理程式...

服務 "PLSExtProc" 包含 1 個例項。

  例項 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...

服務 "dg_taf_lhr.lhr.com" 包含 1 個例項。

  例項 "oradg11g", 狀態 READY, 包含此服務的 1 個處理程式...

服務 "ora11g" 包含 1 個例項。

  例項 "ora11g", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...

服務 "oradg11g" 包含 1 個例項。

  例項 "oradg11g", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...

服務 "oradg11g.lhr.com" 包含 2 個例項。

  例項 "oradg11g", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...

  例項 "oradg11g", 狀態 READY, 包含此服務的 1 個處理程式...

服務 "oradg11gXDB.lhr.com" 包含 2 個例項。

  例項 "oradg11g", 狀態 READY, 包含此服務的 1 個處理程式...

  例項 "oradgphy", 狀態 READY, 包含此服務的 1 個處理程式...

服務 "oradg11g_DGB.lhr.com" 包含 1 個例項。

  例項 "oradg11g", 狀態 READY, 包含此服務的 1 個處理程式...

服務 "oradg11g_DGMGRL.lhr.com" 包含 1 個例項。

  例項 "oradg11g", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...

服務 "oradglg" 包含 1 個例項。

  例項 "oradglg", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...

服務 "oradgphy" 包含 1 個例項。

  例項 "oradgphy", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...

服務 "oradgphy.lhr.com" 包含 2 個例項。

  例項 "oradgphy", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...

  例項 "oradgphy", 狀態 READY, 包含此服務的 1 個處理程式...

服務 "oradgphy_DGB.lhr.com" 包含 1 個例項。

  例項 "oradgphy", 狀態 READY, 包含此服務的 1 個處理程式...

服務 "oradgphy_DGMGRL.lhr.com" 包含 1 個例項。

  例項 "oradgphy", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...

服務 "oradgss" 包含 1 個例項。

  例項 "oradgss", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...

服務 "orclasm.lhr.com" 包含 1 個例項。

  例項 "orclasm", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...

命令執行成功

 

1.3.2.5  在備庫查詢確認觸發器和存過已經應用到備庫

 

15:21:21 SQL> select trigger_name, trigger_name

15:22:09   2    from dba_triggers where trigger_name = 'DG_TAF_TRG_STARTUP_LHR';

 

TRIGGER_NAME                   TRIGGER_NAME

------------------------------ ------------------------------

DG_TAF_TRG_STARTUP_LHR         DG_TAF_TRG_STARTUP_LHR

 

已用時間:  00: 00: 00.09

15:22:09 SQL>

15:24:28 SQL> select d.owner,d.OBJECT_NAME

15:24:54   2    from dba_procedures d

15:24:54   3   where d.OBJECT_NAME = 'DG_TAF_PROC_LHR';

 

OWNER                          OBJECT_NAME

------------------------------ ------------------------------

SYS                            DG_TAF_PROC_LHR

 

已用時間:  00: 00: 00.05

15:24:54 SQL>

 

 

1.3.2.6  客戶端tnsnames 配置

dg_taf =

    (DESCRIPTION =

        (ADDRESS = (PROTOCOL = tcp)(HOST = 192.168.59.130)(PORT = 1521))

        (ADDRESS = (PROTOCOL = tcp)(HOST = 192.168.59.130)(PORT = 1521))

            (LOAD_BALANCE = yes)

                (CONNECT_DATA =

                    (SERVER = DEDICATED)

                    (SERVICE_NAME = dg_taf_lhr.lhr.com)

                (FAILOVER_MODE =

                    (TYPE = session)

                    (METHOD = basic)

                    (RETRIES = 180)

                    (DELAY = 5)

               )

        )

)

 

注:我的dg環境由於部署在同一臺機器,所以host一樣,生產環境下必然不一樣。

 

1.3.3  驗證客戶端的TAF

先說說測試過程,首先我們在windows環境下新增tnsnames,然後cmd中連線到dg環境,執行一個長久的查詢(select * from (select * from sys.dba_objects);),此時在dgmgrl中手動shutdown abort掉主庫,那麼連線的cmd中會停頓一會,等待fast-start failover切換完成後,則繼續返回結果。

主備切換不影響使用者的select操作,但是如果是dml操作,則所有事務回滾:

 

 

D:\Users\xiaomaimiao>sqlplus lhr/lhr@dg_taf

 

SQL*Plus: Release 11.2.0.1.0 Production on Tue Sep 29 15:37:20 2015

 

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

 

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL> set line 9999

SQL> col name format a10

SQL> col FS_FAILOVER_OBSERVER_HOST format a20

SQL> col DB_UNIQUE_NAME format a15

SQL> select dbid,name, DB_UNIQUE_NAME,RESETLOGS_CHANGE#,current_scn,protection_mode,protection_level,database_role,force_logging,open_mode,switchover_status from v$database;

 

      DBID NAME       DB_UNIQUE_NAME  RESETLOGS_CHANGE# CURRENT_SCN PROTECTION_MODE      PROTECTION_LEVEL     DATABASE_ROLE    FOR OPEN_MODE            SWITCHOVER_STATUS

---------- ---------- --------------- ----------------- ----------- -------------------- -------------------- ---------------- --- -------------------- --------------------

1403587593 ORADG11G   oradg11g                  2575356     2604578 MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY PRIMARY          YES READ WRITE           TO STANDBY

 

SQL> SELECT d.DBID,

  2         d.DB_UNIQUE_NAME,

  3         d.FORCE_LOGGING,

  4         d.FLASHBACK_ON,

  5         DATAGUARD_BROKER,

  6         d.FS_FAILOVER_STATUS,

  7         d.FS_FAILOVER_CURRENT_TARGET,

  8         d.FS_FAILOVER_THRESHOLD,

  9         d.FS_FAILOVER_OBSERVER_PRESENT,

10         d.FS_FAILOVER_OBSERVER_HOST

11    FROM v$database d;

 

      DBID DB_UNIQUE_NAME  FOR FLASHBACK_ON       DATAGUAR FS_FAILOVER_STATUS     FS_FAILOVER_CURRENT_TARGET     FS_FAILOVER_THRESHOLD FS_FAIL FS_FAILOVER_OBSERVER

---------- --------------- --- ------------------ -------- ---------------------- ------------------------------ --------------------- ------- --------------------

1403587593 oradg11g        YES YES                ENABLED  SYNCHRONIZED           oradgphy                                  30 YES     rhel6_lhr

 

SQL>

 

可以看到連線到的是主庫。

 

wps55B5.tmp 

Cmd卡住了,等待observer切換完成後cmd介面繼續查詢:

15:44:42.75  2015929日 星期二

正在為資料庫 "oradgphy" 啟動快速啟動故障轉移...

立即執行故障轉移, 請稍候...

故障轉移成功, 新的主資料庫為 "oradgphy"

15:44:49.93  2015929日 星期二

 

 

wps55C6.tmp 

SQL> set line 9999

SQL> col name format a10

SQL> col FS_FAILOVER_OBSERVER_HOST format a20

SQL> col DB_UNIQUE_NAME format a15

SQL> select dbid,name, DB_UNIQUE_NAME,RESETLOGS_CHANGE#,current_scn,protection_mode,protection_level,database_role,force_logging,open_mode,switchover_status from v$database;

 

      DBID NAME       DB_UNIQUE_NAME  RESETLOGS_CHANGE# CURRENT_SCN PROTECTION_MODE      PROTECTION_LEVEL     DATABASE_ROLE    FOR OPEN_MODE            SWITCHOVER_STATUS

---------- ---------- --------------- ----------------- ----------- -------------------- -------------------- ---------------- --- -------------------- --------------------

1403587593 ORADG11G   oradgphy                  2605058     2605468 MAXIMUM AVAILABILITY RESYNCHRONIZATION   PRIMARY          YES READ WRITE           NOT ALLOWED

 

SQL> SELECT d.DBID,

  2         d.DB_UNIQUE_NAME,

  3         d.FORCE_LOGGING,

  4         d.FLASHBACK_ON,

  5         DATAGUARD_BROKER,

  6         d.FS_FAILOVER_STATUS,

  7         d.FS_FAILOVER_CURRENT_TARGET,

  8         d.FS_FAILOVER_THRESHOLD,

  9         d.FS_FAILOVER_OBSERVER_PRESENT,

10         d.FS_FAILOVER_OBSERVER_HOST

11    FROM v$database d;

 

      DBID DB_UNIQUE_NAME  FOR FLASHBACK_ON       DATAGUAR FS_FAILOVER_STATUS     FS_FAILOVER_CURRENT_TARGET     FS_FAILOVER_THRESHOLD FS_FAIL FS_FAILOVER_OBSERVER

---------- --------------- --- ------------------ -------- ---------------------- ------------------------------ --------------------- ------- --------------------

1403587593 oradgphy        YES YES                ENABLED  REINSTATE REQUIRED     oradg11g                                  30 YES     rhel6_lhr

 

SQL>

 

 

 切換後,在備庫上儲存過程啟動了TAF的service ,客戶端再連線時,自動連線到了當前的主庫(原備庫)。

 

@至此,在DG環境下客戶端的TAF配置基本完成。

1.3.4  題外話:Java中的配置

 

1.3.4.1  使用tnsnames 配置

原文連結:http://aijuans.iteye.com/blog/1488998

 

 

格式一:  Oracle JDBC Thin using a ServiceName:

jdbc:oracle:thin:@//<host>:<port>/<service_name>
Example: jdbc:oracle:thin:@//192.168.2.1:1521/XE

 

注意這裡的格式,@後面有//, 這是與使用SID的主要區別。

這種格式是Oracle 推薦的格式,因為對於叢集來說,每個節點的SID 是不一樣的,但是SERVICE_NAME 確可以包含所有節點。

 

格式二: Oracle JDBC Thin using an SID:

jdbc:oracle:thin:@<host>:<port>:<SID>
Example: jdbc:oracle:thin:192.168.2.1:1521:X01A

Note: Support for SID is being phased out. Oracle recommends that users switch over to usingservice names.

 

 

格式三:Oracle JDBC Thin using a TNSName:

jdbc:oracle:thin:@<TNSName>
Example: jdbc:oracle:thin:@GL

Note:
Support for TNSNames was added in the driver release 10.2.0.1

 

 

 

二.測試

 

2.1 準備工作:

 

Oracle 是11gR2

 

Listener.ora

SID_LIST_LISTENER =

(SID_LIST =

   (SID_DESC =

     (GLOBAL_DBNAME = dave)

         (ORACLE_HOME =D:\app\Administrator\product\11.2.0\dbhome_1)

     (SID_NAME = NEWCCS)

    )

  )

 

Tnsnames.ora

DVD =

(DESCRIPTION =

   (ADDRESS_LIST =

     (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))

    )

   (CONNECT_DATA =

     (SERVICE_NAME = dave)

    )

  )

 

2.3 使用 service_namedave

將2.2 節的dbUrl 改成如下:

String dbUrl = "jdbc:oracle:thin:@//127.0.0.1:1521/dave";

 

輸出結果:

MGMT_VIEW--97

ANQING--94

DVD--93

SYSMAN--95

 

如果在11g裡遇到如下錯誤:

測試執行Java 類,報錯:

java.sql.SQLException: The Network Adapter could not establish the connection

 

可以嘗試更換對應的 jdbc connection driver,官網的說明如下:

 

JDBC Thin Driver 11g Causes"Java.Sql.Sqlexception: Io Exception: The Network Adapter Could NotEstablish The Connection" While Connecting to Oracle Database 11g [ID947653.1]

 

Change the JDBC connection driver class inyour application server from:

oracle.jdbc.driver.OracleDriver

to

oracle.jdbc.OracleDriver

 

 

2.4 使用TNS namedvd

String dbUrl = "jdbc:oracle:thin:@dvd";

 

報錯如下:

java.sql.SQLException: Unknown host specified

 

該問題是因為JVM 沒有oracle.net.tns_admin的system property。 解決方法有2種:

 

方法一:在啟動VM 時新增如下引數:

-Doracle.net.tns_admin=D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN
wps55C7.tmp


方法二:在java 程式碼裡新增:

System.setProperty("oracle.net.tns_admin","D:\\app\\Administrator\\product\\11.2.0\\dbhome_1\\NETWORK\\ADMIN");

 

新增之後,就可以正常在JDBC中使用tnsnama了。

 

 

 

Java程式碼  wps55C8.tmp

1. 2.2 測試1,使用SID:newccs 

2.   

3. [java] view plaincopy 

4.  

5. import java.sql.*;   

6.     

7. public class jdbc {   

8.     String dbUrl = "jdbc:oracle:thin:@127.0.0.1:1521:newccs";   

9.     String theUser = "dave";   

10.     String thePw = "dave";   

11.     Connection c = null;   

12.     Statement conn;   

13.     ResultSet rs = null;   

14.     

15.     public jdbc() {   

16.        try {   

17.            Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();   

18.            c = DriverManager.getConnection(dbUrl, theUser, thePw);   

19.            conn = c.createStatement();   

20.        } catch (Exception e) {   

21.            e.printStackTrace();   

22.        }   

23.     }   

24.     

25.     public boolean executeUpdate(String sql) {   

26.        try {   

27.            conn.executeUpdate(sql);   

28.            return true;   

29.        } catch (SQLException e) {   

30.            e.printStackTrace();   

31.            return false;   

32.        }   

33.     }   

34.     

35.     public ResultSet executeQuery(String sql) {   

36.        rs = null;   

37.        try {   

38.            rs = conn.executeQuery(sql);   

39.        } catch (SQLException e) {   

40.            e.printStackTrace();   

41.        }   

42.        return rs;   

43.     }   

44.     

45.     public void close() {   

46.        try {   

47.            conn.close();   

48.            c.close();   

49.        } catch (Exception e) {   

50.            e.printStackTrace();   

51.        }   

52.     }   

53.     

54.     public static void main(String[] args) {   

55.        ResultSet rs;   

56.        jdbc conn = new jdbc();   

57.        rs = conn.executeQuery("select * from dave where rownum<5");   

58.        try {   

59.            while (rs.next()) {   

60.               System.out.println(rs.getString("username")+"--"+rs.getString("user_id"));   

61.            }   

62.        } catch (Exception e) {   

63.            e.printStackTrace();   

64.        }   

65.     }   

66. }   

67.     

68. ---輸出正常:   

69. MGMT_VIEW--97   

70. ANQING--94   

71. DVD--93   

72. SYSMAN--95   

 

 

1.3.4.2  不使用tnsname

jdbc:oracle:thin:@ 
(description=
(ADDRESS_LIST =
(address=(protocol=tcp)(host=192.168.1.44)(port=1521))
(address=(protocol=tcp)(host=192.168.1.45)(port=1521))
(address=(protocol=tcp)(host=192.168.1.46)(port=1521))
(load_balance=yes)
)
(connect_data =
(service_name=ORACMS)
(failover_mode =
(type=session)
(method=basic)
(retries=5)
(delay=15)
)
)
)

-- 加上註釋後的TNS
連線串 
jdbc:oracle:thin:@
(description=
(ADDRESS_LIST =
(address=(protocol=tcp)(host=192.168.1.44)(port=1521))
(address=(protocol=tcp)(host=192.168.1.45)(port=1521))
(address=(protocol=tcp)(host=192.168.1.46)(port=1521))
(load_balance=yes)//表示是否負載均衡 
)
(connect_data =
//(server = dedicated)//該參數列示專用伺服器模式 
(service_name=ORACMS)//要運算元據庫的服務名 
(failover_mode =//連線失敗後處理的方式 
(type=session)//TYPE =SESSION表示當一個連線好的會話的例項發生故障,系統會自動將會話切換到其他可用的例項,前臺應用無須再度發起連線,但會話正在執行的SQL 需要重新執行。 
(method=basic)//表示初始連線就連線一個接點 
(retries=5)//連線失敗後重試連線的次數 
(delay=15)//連線失敗後重試的延遲時間(以秒為單位)
)
)
)

 

1.4  總結

 

本篇為第三節,請檢視第四節: dgmgrl維護中的常見錯誤。

 






About Me

.............................................................................................................................................

● 本文作者:小麥苗,只專注於資料庫的技術,更注重技術的運用

● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/viewspace-1811944/

● 本文部落格園地址:http://www.cnblogs.com/lhrbest

● 本文pdf版、個人簡介及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/

● DBA寶典今日頭條號地址:

.............................................................................................................................................

● QQ群號:230161599(滿)、618766405

● 微信群:可加我微信,我拉大家進群,非誠勿擾

● 聯絡我請加QQ好友646634621,註明新增緣由

● 於 2015-09-28 09:00~ 2015-09-29 23:00 在魔都完成

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

.............................................................................................................................................

小麥苗的微店

小麥苗出版的資料庫類叢書http://blog.itpub.net/26736162/viewspace-2142121/

.............................................................................................................................................

使用微信客戶端掃描下面的二維碼來關注小麥苗的微信公眾號(xiaomaimiaolhr)及QQ群(DBA寶典),學習最實用的資料庫技術。

   小麥苗的微信公眾號      小麥苗的DBA寶典QQ群1     小麥苗的DBA寶典QQ群2        小麥苗的微店

.............................................................................................................................................

【DATAGUARD】物理dg配置客戶端無縫切換 (八.3)--客戶端TAF 配置
DBA筆試面試講解群1
DBA筆試面試講解群2
歡迎與我聯絡



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

相關文章