Oracle DataGuard 之--客户端TAF 配置

简介:

系统环境:

操作系统:RedHat EL5

Oracle: Oracle 11gR2


wKioL1NXhaGysLtaAAIEl99FSRw112.jpg

 系统架构图

如图所示:

主数据库(生产库): BJDB

备        库 (容灾库): SHDB


DG的架构模式为Physical DG,数据保护模式为:Max Protection。

1、系统架构

主库:

04:44:13 SYS@ TestDB12>show parameter name

NAME                                 TYPE        VALUE

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

db_name                              string           TestDB12

db_unique_name                       string      bjdb

instance_name                        string          TestDB12

service_names                        string             bjdb


04:46:22 SYS@ TestDB12>select name,dbid,database_role,protection_mode from v$database;

NAME                                 DBID DATABASE_ROLE    PROTECTION_MODE

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

TESTDB12                       2811829300 PRIMARY          MAXIMUM PERFORMANCE

主库归档配置:

log_archive_dest_1                   string      LOCATION=/dsk4/arch_bj

                                                                     VALID_FOR=(ALL_LOGFILES,ALL_

                                                                     ROLES)

                                                                     DB_UNIQUE_NAME=bjdb

log_archive_dest_2                   string      SERVICE=shdb ASYNC

                                                                     VALID_FOR=(ONLINE_LOGFILES,P

                                                                     RIMARY_ROLE)

                                                                     DB_UNIQUE_NAME=shdb

备库:

04:44:02 SYS@ shdb>show parameter name

NAME                                 TYPE        VALUE

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

db_name                              string               TestDB12

db_unique_name                       string         shdb

instance_name                        string             shdb

service_names                        string              shdb

05:20:19 SYS@ shdb>select name,dbid,database_role,protection_mode from v$database;

NAME            DBID DATABASE_ROLE    PROTECTION_MODE

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

TESTDB12  2811829300 PHYSICAL STANDBY MAXIMUM PERFORMANCE

备库归档日志:

log_archive_dest_1                   string      LOCATION=/dsk4/arch_sh

                                                                     VALID_FOR=(ALL_LOGFILES,ALL_

                                                                     ROLES)

                                                                     DB_UNIQUE_NAME=shdb

log_archive_dest_2                   string      SERVICE=bjdb ASYNC

                                                                     VALID_FOR=(ONLINE_LOGFILES,P

                                                                      RIMARY_ROLE)

                                                                      DB_UNIQUE_NAME=bjdb

主备库网络配置:

BJDB =

 (DESCRIPTION =

   (ADDRESS_LIST =

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

   )

   (CONNECT_DATA = (SERVER = DEDICATED)

     (SERVICE_NAME = bjdb)

   )

 )


SHDB =

 (DESCRIPTION =

   (ADDRESS_LIST =

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

   )

   (CONNECT_DATA = (SERVER = DEDICATED)

     (SERVICE_NAME = shdb)

   )

 )

2、客户端TAF 配置

 1)首先在主库上配置一个TAF的service

此服务在数据库出现故障时会发送通知给客户端,允许查询语句在故障转移发生后继续运行。  

04:08:02 SYS@ TestDB12>begin

04:11:00   2   DBMS_SERVICE.CREATE_SERVICE

04:11:00   3   (service_name=> 'dg_sw',

04:11:00   4   network_name => 'dg_sw',

04:11:00   5   aq_ha_notifications =>TRUE,

04:11:00   6   failover_method => 'BASIC',

04:11:00   7  failover_type =>'SELECT',

04:11:00   8  failover_retries => 30,

04:11:00   9  failover_delay => 5);

04:11:00  10  end;

04:11:00  11  /

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.15

2)建立一个存储过程,用于调用service,确保只在主库运行

我们创建一个存储过程来实现此目的,如果当前数据库是主库它就启动此服务,如果是备库就停止。

04:15:42 SYS@ TestDB12>create or replace procedure dg_taf_proc

04:15:43   2  is v_role

04:15:43   3  VARCHAR(30);

if v_role = 'PRIMARY'

begin

select DATABASE_ROLE into v_role from V$DATABASE;

04:15:43   6  if v_role = 'PRIMARY'

04:15:43   7  then

04:15:43   8  DBMS_SERVICE.START_SERVICE('dg_sw');

04:15:43   9  else

04:15:43  10  DBMS_SERVICE.STOP_SERVICE('dg_sw');

04:15:43  11  end if;

04:15:43  12  end;

04:15:43  13  /

Procedure created.

3)创建2个触发器来确保服务可以运行    

创建两个触发器,让数据库在启动和角色转换时运行此存储过程。

04:15:44 SYS@ TestDB12>

create or replace TRIGGER

04:17:02   2  dg_taf_trg_startup

after startup on database

04:17:02   4  begin

04:17:02   5  dg_taf_proc;

04:17:02   6  end;

04:17:02   7  /

Trigger created.

Elapsed: 00:00:00.08

用于当数据库open时,如果是主库则执行存储过程。

04:17:03 SYS@ TestDB12>

04:18:19 SYS@ TestDB12>create or replace TRIGGER

04:18:21   2  dg_taf_trg_rolechange

04:18:21   3  after db_role_change on database

04:18:21   4  begin

04:18:21   5  dg_taf_proc;

04:18:21   6  end;

04:18:21   7  /

Trigger created.

当数据库切换后,如果是主库则执行存储过程。

4)客户端tnsnames 配置

DG_SW =

 (DESCRIPTION =

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

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

   (LOAD_BALANCE = yes)

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = dg_sw)

     (FAILOVER_MODE =

       (TYPE = session)

       (METHOD = basic)

       (RETRIES = 180)

       (DELAY = 5)

     )

   )

 )

注:8.120 是主库,8.130 是备库


3、验证客户端的TAF

1)首先在主库上执行该存储过程

04:19:09 SYS@ TestDB12>execute dg_taf_proc;

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.06

04:22:55 SYS@ TestDB12>show parameter name

NAME                                 TYPE        VALUE

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

db_name                              string      TestDB12

db_unique_name                       string      bjdb

instance_name                        string      TestDB12

service_names                        string      dg_sw

注:service_name 变为dg_sw

04:23:01 SYS@ TestDB12> alter system switch logfile;

在主库做日志的切换,将变化应用到备库

2)在备库查询

04:27:30 SYS@ shdb>select trigger_name,trigger_name from dba_triggers

04:28:00   2   where trigger_name like '%DG%';

TRIGGER_NAME                   TRIGGER_NAME

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

DG_TAF_TRG_STARTUP             DG_TAF_TRG_STARTUP

DG_TAF_TRG_ROLECHANGE          DG_TAF_TRG_ROLECHANGE

3)客户端连接测试

C:\Documents and Settings\tiany>sqlplus sys/oracle@dg_sw as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期三 4月 23 16:35:28 2014

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

连接到:

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

With the Partitioning, Oracle Label Security, OLAP, Data Mining,

Oracle Database Vault and Real Application Testing options

SQL>

此时应连接到主库!


4、主备库切换后的TAF测试

1)主备库切换

主库切换后:

04:41:31 SYS@ TestDB12>select database_role ,switchover_status from v$database;

DATABASE_ROLE    SWITCHOVER_STATUS

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

PHYSICAL STANDBY RECOVERY NEEDED

备库切换后:

04:31:17 SYS@ shdb>select database_role ,switchover_status from v$database;

DATABASE_ROLE    SWITCHOVER_STATUS

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

PRIMARY          NOT ALLOWED

Elapsed: 00:00:00.02


2)客户端连接测试

C:\Documents and Settings\tiany>sqlplus sys/oracle@dg_sw as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期三 4月 23 16:43:49 2014

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

连接到:

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

With the Partitioning, Oracle Label Security, OLAP, Data Mining,

Oracle Database Vault and Real Application Testing options

SQL> show parameter name

NAME                                 TYPE        VALUE

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

db_name                              string      TestDB12

db_unique_name                       string      shdb

instance_name                        string      shdb

service_names                        string      dg_sw

切换后,在备库上存储过程启动了TAF的service ,客户端再连接时,自动连接到了当前的主库(原备库)。

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










本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/1401289,如需转载请自行联系原作者
目录
相关文章
|
5月前
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Dept实体类和对应的配置信息
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Dept实体类和对应的配置信息
|
2月前
|
Oracle 关系型数据库 数据库
手把手教你Oracle DataGuard主备切换(switchover)
手把手教你Oracle DataGuard主备切换(switchover)
247 4
|
5月前
|
运维 Oracle 容灾
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
|
1月前
|
Ubuntu Oracle 关系型数据库
Oracle VM VirtualBox之Ubuntu 22.04LTS双网卡网络模式配置
这篇文章是关于如何在Oracle VM VirtualBox中配置Ubuntu 22.04LTS虚拟机双网卡网络模式的详细指南,包括VirtualBox网络概述、双网卡网络模式的配置步骤以及Ubuntu系统网络配置。
50 3
|
2月前
|
Oracle 网络协议 安全
Oracle 11g DataGuard搭建保姆级教程
Oracle 11g DataGuard搭建保姆级教程
102 4
|
2月前
|
Oracle 网络协议 关系型数据库
Oracle DataGuard主备切换之自动切换
Oracle DataGuard主备切换之自动切换
55 2
|
2月前
|
Oracle 关系型数据库 BI
ORACLE Apex: EBS多组织结构 理解与配置
【8月更文挑战第11天】在Oracle Apex中理解和配置与EBS多组织结构相关内容需掌握:1) EBS多组织结构概念及组成部分,如法律实体、业务单位与库存组织;2) Oracle Apex与EBS集成的目的与方式,包括提供友好界面及自定义业务流程;3) 在Apex中配置多组织结构应用,涉及数据访问控制、页面报表设计及业务流程集成。整体而言,需精通EBS架构与Apex开发技术,以实现高效灵活的企业解决方案。
|
5月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之可以通过配置Oracle数据库的schema注册表来监测表结构的变化吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
44 1
|
5月前
|
敏捷开发 人工智能 Oracle
Oracle PLM Agile936 单点登录配置方式
Oracle PLM Agile936 单点登录配置方式
|
5月前
|
JavaScript Java 数据库连接
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Emp实体类和对应的配置信息
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Emp实体类和对应的配置信息

推荐镜像

更多
下一篇
无影云桌面