oracle搭建DATA GUARD并设置observer快速切换主备

准备工作

安装包准备

操作系统安装包
官网下载操作系统安装包
里面需要安装的rpm包如下

oracle-rdbms-server-11gR2-preinstall-1.0-13.el6.x86_64.rpm

oracle软件安装包(11.2.0.4)

p13390677_112040_Linux-x86-64_1of7.zip: 下载地址
p13390677_112040_Linux-x86-64_2of7.zip: 下载地址

安装

安装rpm包

挂载操作系统iso文件至某目录,如/media/cdrom

# cd /media/cdrom/Packages
# yum install oracle-rdbms-server-11gR2-preinstall-1.0-13.el6.x86_64.rpm

oracle软件安装

注:主库安装oracle并添加实例、设置监听,备库只需要安装oracle软件并添加监听,无需创建数据库。

主库安装

安装oracle软件
netca添加监听
dbca添加数据库

备库安装

安装oracle软件
netca创建监听

搭建data guard

  1. 主库开启 force logging
SQL> ALTER DATABASE FORCE LOGGING;
  1. 如果数据库没有开启归档模式 开启归档模式
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;

3.根据redo log 创建standby redo log

SQL> SELECT GROUP#, BYTES FROM V$LOG;

    GROUP#	BYTES
---------- ----------
	 1   52428800
	 2   52428800
	 3   52428800

SQL> alter database add standby logfile ('/home/oracle/app/oracle/oradata/orcl/standby_redo01.log') size 50M;
Database altered.
SQL> alter database add standby logfile ('/home/oracle/app/oracle/oradata/orcl/standby_redo02.log') size 50M;
Database altered.
SQL> alter database add standby logfile ('/home/oracle/app/oracle/oradata/orcl/standby_redo03.log') size 50M;
Database altered.
SQL> alter database add standby logfile ('/home/oracle/app/oracle/oradata/orcl/standby_redo04.log') size 50M;
Database altered.

SQL> SELECT GROUP#, BYTES FROM V$STANDBY_LOG;

    GROUP#	BYTES
---------- ----------
	 4   52428800
	 5   52428800
	 6   52428800
	 7   52428800
  1. 开启flashback
SQL> ALTER DATABASE FLASHBACK ON;
  1. 修改主库参数
Database	DB_UNIQUE_NAME	Oracle Net Service Name
Primary	chicago    		chicago
Physical standby boston			boston

SQL> alter system set DB_UNIQUE_NAME=pri scope=spfile;

**重启数据库**

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=std NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=std';

System altered.

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;

System altered.

SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

System altered.
  1. 在主库和备库上配置$ORACLE_HOME/network/admin/tnsnames.ora
pri =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = pri.wenzhou)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = orcl)
    )
  )

std =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = std.wenzhou)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = orcl)
    )
  )
  1. 在主库上配置$ORACLE_HOME/network/admin/listener.ora
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = pri.wenzhou)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = chicago_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = ORCL)
    )
  )
  1. 在备库上配置$ORACLE_HOME/network/admin/listener.ora
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = std.wenzhou)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )


SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = std_DGMGRL)
      (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = orcl)
    )
  )
  1. 配置备库
vi /tmp/initboston.ora
*.db_name='orcl'

$ mkdir -p /home/oracle/app/oracle/oradata/orcl
$ mkdir -p /home/oracle/app/oracle/fast_recovery_area/orcl
$ mkdir -p /home/oracle/app/oracle/admin/orcl/adump

$ orapwd file=/u01/app/oracle/product/11.2.0.4/db_1/dbs/orapwORCL password=tdr123456 entries=10
  1. 用rman复制备库
$ export ORACLE_SID=ORCL
$ sqlplus / as sysdba


SQL> STARTUP NOMOUNT PFILE='/tmp/initboston.ora';

$ rman TARGET sys/tdr123456@pri AUXILIARY sys/tdr123456@std


DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER SPFILE SET db_unique_name='std' COMMENT 'Is standby'  NOFILENAMECHECK;
  1. 启用 broker

在主库和备库上执行

ALTER SYSTEM SET dg_broker_start=true;

连接主库执行

dgmgrl sys/tdr123456@chicago

DGMGRL> CREATE CONFIGURATION dg_config AS PRIMARY DATABASE IS pri CONNECT IDENTIFIER IS pri;
Configuration "dg_config" created with primary database "pri"

DGMGRL> ADD DATABASE std AS CONNECT IDENTIFIER IS std MAINTAINED AS PHYSICAL;
Database "std" added

DGMGRL> ENABLE CONFIGURATION;
Enabled.

DGMGRL> SHOW CONFIGURATION;

Configuration - dg_config

  Protection Mode: MaxPerformance
  Databases:
    chicago - Primary database
    boston  - Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS


DGMGRL> SHOW DATABASE pri;

Database - pri

  Role:            PRIMARY
  Intended State:  TRANSPORT-ON
  Instance(s):
    orcl

Database Status:
SUCCESS


DGMGRL> SHOW DATABASE std;

Database - std

  Role:            PHYSICAL STANDBY
  Intended State:  APPLY-ON
  Transport Lag:   0 seconds (computed 1 second ago)
  Apply Lag:       0 seconds (computed 1 second ago)
  Apply Rate:      0 Byte/s
  Real Time Query: OFF
  Instance(s):
    orcl

Database Status:
SUCCESS
  1. 开启ADG
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE OPEN READ ONLY;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
  1. 开启Fast-Start Failover
DGMGRL> EDIT DATABASE 'chicago' SET PROPERTY 'LogXptMode'='SYNC';
Property "LogXptMode" updated

DGMGRL> EDIT DATABASE 'boston' SET PROPERTY 'LogXptMode'='SYNC';
Property "LogXptMode" updated

DGMGRL> EDIT DATABASE 'chicago' SET PROPERTY FastStartFailoverTarget='boston';
Property "faststartfailovertarget" updated

DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;
Succeeded.
  1. 开启flashback
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE FLASHBACK ON;
ALTER DATABASE OPEN;
  1. 启动 observer
DGMGRL> START OBSERVER;
Observer started
  1. 启用 FAST_START FAILOVER
DGMGRL> ENABLE FAST_START FAILOVER;
Enabled.

DGMGRL> SHOW FAST_START FAILOVER;

Fast-Start Failover: ENABLED

  Threshold:          30 seconds
  Target:             boston
  Observer:           ol6-11g-ob
  Lag Limit:          30 seconds (not in use)
  Shutdown Primary:   TRUE
  Auto-reinstate:     TRUE
  Observer Reconnect: (none)
  Observer Override:  FALSE

Configurable Failover Conditions
  Health Conditions:
    Corrupted Controlfile          YES
    Corrupted Dictionary           YES
    Inaccessible Logfile            NO
    Stuck Archiver                  NO
    Datafile Offline               YES

  Oracle Error Conditions:
    (none)


SHOW DATABASE 'chicago' FastStartFailoverTarget;

SHOW DATABASE 'boston' FastStartFailoverTarget;
  1. 测试

关闭主库

shutdown abort

观察observer

11:57:09.35  Thursday, January 10, 2019
Initiating Fast-Start Failover to database "std"...
Performing failover NOW, please wait...
Failover succeeded, new primary is "std"
11:57:16.03  Thursday, January 10, 2019

11:58:46.14  Thursday, January 10, 2019
Initiating reinstatement for database "pri"...
Reinstating database "chicago", please wait...
Operation requires shutdown of instance "ORCL" on database "chicago"
Shutting down instance "ORCL"...
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.
Operation requires startup of instance "ORCL" on database "chicago"
Starting instance "ORCL"...
ORACLE instance started.
Database mounted.
Continuing to reinstate database "chicago" ...
Reinstatement of database "chicago" succeeded
11:59:46.13  Thursday, January 10, 2019

DGMGRL> SHOW FAST_START FAILOVER;

Fast-Start Failover: ENABLED

  Threshold:          30 seconds
  Target:             chicago
  Observer:           ol6-11g-ob
  Lag Limit:          30 seconds (not in use)
  Shutdown Primary:   TRUE
  Auto-reinstate:     TRUE
  Observer Reconnect: (none)
  Observer Override:  FALSE

Configurable Failover Conditions
  Health Conditions:
    Corrupted Controlfile          YES
    Corrupted Dictionary           YES
    Inaccessible Logfile            NO
    Stuck Archiver                  NO
    Datafile Offline               YES

  Oracle Error Conditions:
    (none)

DGMGRL> show configuration

Configuration - dg_config

  Protection Mode: MaxAvailability
  Databases:
    boston  - Primary database
    chicago - (*) Physical standby database

Fast-Start Failover: ENABLED

Configuration Status:
SUCCESS

主备切换成功

the end

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle Data Guard 的 fast failover 是一种自动故障转移的机制,用于在主库宕机时快速地将备库提升为主库,从而实现数据库的高可用性。要设置 fast failover,您可以按照以下步骤进行操作: 1. 确保 Data Guard 配置正确,并且主库和备库之间的网络连接稳定。 2. 在备库上启用 fast-start failover,并设置故障转移的阈值和检测间隔。例如: ``` DGMGRL> enable fast_start failover; DGMGRL> edit fast_start failover; Set threshold = 30 seconds; Set pollinginterval = 5 seconds; Set observerreconnectinterval = 60 seconds; ``` 这里的 threshold 指定了主库宕机的最大容忍时间,如果在这个时间内无法恢复主库,备库会自动进行故障转移;而 pollinginterval 则指定了检测主库是否可用的时间间隔。 3. 配置 Observer,在备库服务器上启动 Observer 进程,并将它配置为自动启动。例如: ``` DGMGRL> add observer observer1 type "observer" enabled; DGMGRL> edit observer observer1 set property ConnectIdentifier= '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))'; DGMGRL> edit observer observer1 set property FastStartFailoverThreshold=30; DGMGRL> edit observer observer1 set property ObserverReconnectInterval=60; DGMGRL> enable observer observer1; ``` 这里的 ConnectIdentifier 指定了 Observer 连接的地址和服务名,而 FastStartFailoverThreshold 和 ObserverReconnectInterval 参数则与步骤 2 中的参数相同。 4. 配置主库和备库的监听器,确保它们能够接收来自 Observer 的连接请求。例如: ``` DGMGRL> edit database 'orcl' set property ListenerAddress='(ADDRESS=(PROTOCOL=tcp)(HOST=hostname)(PORT=1521))'; ``` 这里的 ListenerAddress 指定了监听器的地址和端口号。 5. 测试 fast failover 是否正常工作。您可以模拟主库宕机,观察备库是否能够自动进行故障转移,并且系统能否正常恢复。 以上就是设置 Oracle Data Guard fast failover 的基本步骤。需要注意的是,fast failover 需要一些复杂的配置和管理,建议在实际应用中慎重考虑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值