Oracle数据库DataGuard(配置broker)与FSFO配置

一、 概述:
本文主要从oracle数据库的DG(DATA GUARD)搭建,DG_BROKER和FSFO(Fast-Start Failover)配置等方面阐述了oracle数据库高可用环境的搭建,从而实现数据库透明failover,减少数据库故障带来的影响。
注:文中各命令的执行如没有特别注明,均在主库上执行。

二、 Data Guard环境搭建

1 . 设置归档模式
DG环境的搭建必须要把数据库启动到归档模式,并且为了避免开发人员使用nologging语句,我们还要把数据库设置为force logging。
查看数据库是否运行在归档模式:

#su - oracle
$sqlplus / as sysdba
SQL>archive log list;

在这里插入图片描述
如图所示,数据库运行在非归档模式,下面我们开始操作,把数据库修改为归档模式:首先关闭数据库

SQL>shutdown immediate;

启动数据库到mount状态下

SQL>startup mount;
SQL>select open_mode from v$database;

查询结果必须是MOUNTED哦,如果输出的是其它方式,证明操作有误,请重新关闭数据库进行操作
在这里插入图片描述
把数据库修改为归档模式并打开数据库:

SQL>alter database archivelog;
SQL>alter database open;
SQL>archive log list;

在这里插入图片描述
图中可以看到我们数据库已经运行在归档模式了,其中Archive destination就是归档日志存放的路径,稍后我们会修改下存放路径。
数据库打开后,我们需要把数据库设为force logging:

SQL>alter database force logging;
SQL> select name,log_mode,force_logging from v$database; 

在这里插入图片描述

2 .添加standby日志:
standby logfile的数量和大小均要与redo logfile相同
查询主库当前redo logfile的数量

SQL> select thread#,group#,members,bytes/1024/1024 from v$log;

在这里插入图片描述
从图中可以看到我们主库有三组大小为50M的redo logfile,故我们也需要创建同样数量和大小的standby logfile:

SQL> alter database add standby logfile group 11 ('/data/oradata/ocrl/redo/redo11_stb01.log') size 50M;
SQL> alter database add standby logfile group 12 ('/data/oradata/ocrl/redo/redo12_stb01.log') size 50M;
SQL> alter database add standby logfile group 13 ('/data/oradata/ocrl/redo/redo13_stb01.log') size 50M;
SQL> select group#,thread#,sequence#,archived,status from v$standby_log;

在这里插入图片描述
3.设置数据库口令文件的使用模式
执行以下命令查看remote_login_passwordfile的值是否EXCLUSIVE

SQL>show parameter remote_login_passwordfile;

在这里插入图片描述
如果不是,执行以下命令进行设置,并且重启数据库,使其生效:

SQL>alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile;
SQL>shutdown immediate;
SQL>startup;

4.参数设置
DG的搭建需要修改许多数据库的参数,并且部分参数主备库之间有点区别,这需要各位在配置过程细心一点。
a) 主库的参数配置

SQL>show parameter db_unique_name
SQL> alter system set log_archive_config='dg_config=(ocrl,ocrls)' scope=spfile;

在这里插入图片描述
其中dg_config填写的是主备库的db_unique_name。
设置归档日志的存放位置:

SQL>alter system set log_archive_dest_1='LOCATION=/data/oradata/ocrl/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=ocrl' scope=spfile;
SQL>alter system set log_archive_dest_2='SERVICE=ocrls ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ocrls' scope=spfile;

注:第一个ocrls是tnsname.ora的连接名,第二个ocrls是DB_UNIQUE_NAME
启用设置的日志路径:

SQL>alter system set log_archive_dest_state_1=enable scope=spfile;
SQL>alter system set log_archive_dest_state_2=enable scope=spfile;

设置归档日志进程的最大数量(视实际情况调整):

SQL>alter system set log_archive_max_processes=30 scope=both;

设置standby库从哪个数据库获取归档日志(只对standby库有效,在主库上设置是为了在故障切换后,主库可以成为备库使用):

SQL>alter system set fal_server=ocrls scope=both;

启用OMF功能:

SQL> alter system set db_create_file_dest='/data/oradata/ocrl/datafile' scope=spfile;

如果主备库文件的存放路径不同,还需要设置以下两个参数(需要重启数据库生效):

SQL> alter system set db_file_name_convert='/data/oradata/ocrls/datafile','/data/oradata/ocrl/datafile','/data/oradata/ocrls/tempfile','/data/oradata/ocrl/tempfile' scope=spfile;
SQL> alter system set log_file_name_convert='/data/oradata/ocrls/redo','/data/oradata/ocrl/redo' scope=spfile;

这步路径的先后顺序在主备库上的设置是不一样的,大家要注意!

b) 备库参数设置
完成了以上步骤后,通过以下命令生成一个pfile文件给备库使用:

SQL> create pfile  from spfile;

在这里插入图片描述
打开生成的文件
在这里插入图片描述
修改部分参数,具体如下:

*.audit_file_dest='/u01/app/oracle/admin/ocrls/adump'
*.audit_trail='db'
*.compatible='12.1.0.2.0'
*.control_files='/data/oradata/ocrls/control/control01.ctl','/data/oradata/ocrls/control/control02.ctl'#Restore Controlfile
*.db_block_size=8192
*.db_create_file_dest='/data/oradata/ocrls/datafile'
*.db_domain=''
*.db_file_name_convert='/data/oradata/ocrl/datafile','/data/oradata/ocrls/datafile','/data/oradata/ocrl/tempfile','/data/oradata/ocrls/tempfile'
*.db_name='ocrl' //(这个保持跟主库一样,不能修改)
*.db_unique_name='ocrls' //(设置备库的名字)
*. fal_server=ocrl
*.db_recovery_file_dest_size=10737418240
*.db_recovery_file_dest='/data/oradata/ocrls/flashback'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ocrlsXDB)'
*.fal_server='OCRL'
*.log_archive_config='dg_config=(ocrl,ocrls)'
*.log_archive_dest_1='LOCATION=/data/oradata/ocrls/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=ocrls'
*.log_archive_dest_2='SERVICE=ocrl ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ocrl' 
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_archive_format='%t_%s_%r.arc'
*.log_archive_max_processes=30
*.log_file_name_convert='/data/oradata/ocrl/redo','/data/oradata/ocrls/redo'
*.memory_target=718m
*.open_cursors=300
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'

配置参数的时候要注意,有些地方跟主库的不一样哦!

c) 密码文件配置
密码文件是创建DG不可缺少的一部分,主库的密码文件一般在$ORACLE_HOME/dbs,命名格式是:orapw+db_unique_name
在这里插入图片描述
上图是主库的密码文件,如果不存在此文件,我们可以通过以下命令生成一个:

#su - oracle
$cd $ORACLE_HOME/dbs
$orapwd file=orapwocrl password=oracle

我们将密码文件和刚才修改好的pfile一起拷贝到备库的$ORACLE_HOME/dbs目录下,并重命名密码文件的名字:

主库上copy到备库的方法
在这里插入图片描述
备库上修改密码文件名和参数文件
在这里插入图片描述

5 .listener.ora与tnsnames.ora配置
这两个文件均在$ORACLE_HOME/network/admin目录下,如果没有,可以自行创建一下
a) 备库配置
listener.ora内容如下:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.180.44)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ocrls)
      (ORACLE_HOME = /u01/app/oracle/product/12.1.0/db_1)
      (SID_NAME = ocrls)
    )
   )
ADR_BASE_LISTENER =/u01/app/oracle/

在这里插入图片描述
tnsname.ora内容如下:

ocrls =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.180.44)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ocrls)
    )
  )

在这里插入图片描述
重启一下监听:

$lsnrctl stop
$lsnrctl start

在这里插入图片描述
做完以上配置后,在主备库上执行以下命令,确保两个主机之间网络相通:

$tnsping oratest
$tnsping testdg

主库上执行:
在这里插入图片描述

备库上执行:
在这里插入图片描述

b) 主库配置
listener.ora内容如下:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.180.44)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ocrls)
      (ORACLE_HOME = /u01/app/oracle/product/12.1.0/db_1)
      (SID_NAME = ocrls)
    )
   )
ADR_BASE_LISTENER =/u01/app/oracle/

在这里插入图片描述
tnsname.ora内容如下:

ocrl =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.180.43)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ocrl)
    )
  )

ocrls =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.180.44)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ocrls)
    )
  )

在这里插入图片描述
执行以下命令重启监听,使配置生效:

$lsnrctl stop
$lsnrctl start

在这里插入图片描述
6. 目录创建
参数和网络配置好后,我们需要为备库dump文件创建相应的目录(对照主库$ORACLE_BASE/admin):

ocrls:/home/oracle@standby>mkdir -p $ORACLE_BASE/admin/ocrls/adump
ocrls:/home/oracle@standby>mkdir -p $ORACLE_BASE/admin/ocrls/dpdump

为数据库文件创建目录(就是之前db_file_name_convert和log_file_name_convert的目录)

ocrls:/data/oradata/ocrls@standby>mkdir -p /data/oradata/ocrls/redo/
ocrls:/data/oradata/ocrls@standby>mkdir -p /data/oradata/ocrls/datafile/
ocrls:/data/oradata/ocrls@standby>mkdir -p /data/oradata/ocrls/control/

7 .RMAN复制创建 standby库
准备工作都完成了,那我们可以开始standby库的创建了。
注:以下操作在备库完成
a) 文件复制
首先,我们使用之前修改的pfile把备库启动到nomount状态,生成spfile:

$echo $ORACLE_SID (确认SID是否我们设置的)
$sqlplus / as sysdba
SQL> startup nomount pfile='/u01/app/oracle/product/12.1.0/db_1/dbs/initocrls.ora'
SQL> create spfile from pfile;

在这里插入图片描述

SQL>shutdown immediate;
SQL>exit;

从spfile启动:
在这里插入图片描述
复制数据文件,在备库上操作

ocrls:/home/oracle@standby>rman target sys/oracle@ocrl auxiliary sys/oracle@ocrls

在这里插入图片描述
确认我们已经连接上主库和备库后,执行以下命令:

RMAN> duplicate target database for standby from active database;

命令执行完后,可以看到主库在开始复制文件到备库中
在这里插入图片描述
耐心等待任务的完成,如果中间有错误导致异常退出,需要根据错误信息进行分析。
在这里插入图片描述

以下表示执行成功:
在这里插入图片描述
复制完成后,打开数据库开启实时同步:

SQL> alter database open;
SQL> alter database recover managed standby database using current logfile disconnect from session;

在这里插入图片描述
查看数据库状态

$sqlplus / as sysdba
SQL>select database_role from v$database;

在这里插入图片描述
登录到备库上查看:

$sqlplus / as sysdba
SQL>select database_role from v$database;

在这里插入图片描述
检查归档日志是否能正常传输(日志的序号必须是一样的):
主库

SQL> select SEQUENCE#, FIRST_TIME, NEXT_TIME, APPLIED, ARCHIVED from V$ARCHIVED_LOG;

在这里插入图片描述
备库

SQL> select SEQUENCE#, FIRST_TIME, NEXT_TIME, APPLIED, ARCHIVED from V$ARCHIVED_LOG;

在这里插入图片描述
b) 切换日志测试
主库

SQL> alter system switch logfile;
SQL> select SEQUENCE#, FIRST_TIME, NEXT_TIME, APPLIED, ARCHIVED from V$ARCHIVED_LOG;

在这里插入图片描述
备库

SQL> select max(sequence#) from v$archived_log;

在这里插入图片描述
这样,我们的DG已经配置成功了!

8 .故障切换
我们配置DG的目的就是为了在主库出现故障时,备库能够提供服务,保证业务的正常运行。DG的故障切换分为switchover和failover两种:
a) SWITCHOVER
switchover是用户有计划的进行停机切换,能够保证不丢失数据,下面我们来看下switchover是怎样操作的:

登录主库:

$sqlplus / as sysdba
SQL> select switchover_status from v$database;(查看主库状态)

在这里插入图片描述
查询结果是TO STANDBY 或 SESSIONS ACTIVE表明可以进行切换;

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

在这里插入图片描述

SQL>shutdown immediate;
SQL> startup mount;
SQL> select database_role from v$database;

在这里插入图片描述
登录备库:

$sqlplus / as sysdba
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

在这里插入图片描述
TO PRIMARY 或 SESSIONS ACTIVE表明可以切换成主库;
现在可以把备库切换成主库了

SQL> alter database commit to switchover to primary with session shutdown;
SQL> ALTER DATABASE OPEN;
SQL> select switchover_status,database_role,open_mode from v$database;

在这里插入图片描述
从上图可以看出,我们已经switchover切换成功了!
记住:这时候要在现在的备库上开启同步:

SQL> alter database recover managed standby database using current logfile disconnect from session;

在这里插入图片描述
b) FAILOVER
为了能够在failover后能够恢复DG,需要在主库上开启flashback,如果不开启flashback的话,DG只能重新构建相对比较麻烦。

由于主库已经不可访问,我们所有的操作都在备库完成:

SQL> alter database recover managed standby database cancel;
SQL> alter database recover managed standby database finish force;
SQL> select database_role from v$database;
SQL> alter database commit to switchover to primary;
SQL> alter database open; 或者 shutdown immediate+startup

在这里插入图片描述
现在利用flashback重建DG
在新的主库上执行下面操作:

SQL> select to_char(standby_became_primary_scn) from v$database;

在这里插入图片描述
在之前的主库上,也就是现在的备库上执行下面的操作:

SQL> startup mount	
SQL> flashback database to scn 9978113; //这个值为在新主库上查询到的SCN值
SQL> alter database convert to physical standby;
SQL> shutdown immediate
SQL> startup
SQL> alter database recover managed standby database using current logfile disconnect from session;

在这里插入图片描述
至此failover 切换和切换过如何恢复就已经完成

三、 DG_broker配置
上面给大家讲解了DG切换的过程,是不是感觉DG的切换特别麻烦,步骤比较多,有没有办法实现就敲一条命令就可以完成所有的配置呢?答案是肯定的,DG_broker就是为此而诞生的,下面给大家演示下DG_broker使用:
DG_broker其实就是dgmgrl工具,安装数据库软件或数据库管理客户端都可以获取到这个工具,本文中是另外使用一台主机安装数据库软件进行配置。
首先我们配置dgmgrl主机的tnsnames.ora配置,具体参考上文DG配置部分,使其可以访问到主备库,接下来就是dgmgrl的配置了(之前我们做过switchover,所以下面的演示,主备库跟上文是相反的,大家要注意):

a) 配置broker
在主库上进行配置,也可以在备库上或者另找一台机器上配置都可以
修改dg_broker_config_file参数。如果是在RAC环境中,这个把这个文件把到共享的存储上面,如果有ASM可以放到ASM中。
修改一下监听
主库:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.180.43)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
SID_LIST_LISTENER =
 (SID_LIST =
   (SID_DESC =
     (GLOBAL_DBNAME = ocrl)
     (ORACLE_HOME = /u01/app/oracle/product/12.1.0/db_1)
     (SID_NAME = ocrl)
   )
   (SID_DESC =
     (GLOBAL_DBNAME = ocrl_DGMGRL)
     (ORACLE_HOME = /u01/app/oracle/product/12.1.0/db_1)
     (SID_NAME = ocrl)
   )
 )   

在这里插入图片描述
备库

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.180.44)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
SID_LIST_LISTENER =
 (SID_LIST =
   (SID_DESC =
     (GLOBAL_DBNAME = ocrls)
     (ORACLE_HOME = /u01/app/oracle/product/12.1.0/db_1)
     (SID_NAME = ocrls)
   )
   (SID_DESC =
     (GLOBAL_DBNAME = ocrls_DGMGRL)
     (ORACLE_HOME = /u01/app/oracle/product/12.1.0/db_1)
     (SID_NAME = ocrls)
   )
 )

在这里插入图片描述
记住要重启监听
主库和备库上都要执行

SQL> show parameter dg_broker_config_file

在这里插入图片描述
这里就用默认的路径,也可以自己指定。
启用BROKER
在两个数据库上都执行:

SQL> alter system set dg_broker_start=true;

在这里插入图片描述
在其中任意一台做下面的操作就可以了,另它安装了client的客户端也是可以的.
这里选择在主库上执行

ocrl:/home/oracle@oracle1>dgmgrl
DGMGRL> connect sys/oracle@ocrl  //连接数据库

在这里插入图片描述

DGMGRL> help create //help是帮助命令
DGMGRL> create configuration dg as primary database is ocrl connect identifier is ocrl;

在这里插入图片描述
这里报错:
这个错误可以通过在Primary 和 Standby上取消log_archive_dest_n参数来解决,实际这一块的参数应当是交给DG broker 来管理了,不再需要人为介入设置。
在主备库上执行下面的命令

SQL> alter system set log_archive_dest_2='';

在这里插入图片描述
再次执行:create configuration dg as primary database is ocrl connect identifier is ocrl;
在这里插入图片描述
启用配置文件

DGMGRL> enable configuration

在这里插入图片描述
增加备库到配置文件中

DGMGRL> help add
DGMGRL> add database ocrls as connect identifier is ocrls;

在这里插入图片描述
查看配置文件

DGMGRL> show configuration

在这里插入图片描述
查看某个数据库的配置消息

DGMGRL> show database verbose ocrl
DGMGRL> show database verbose ocrls

在这里插入图片描述
在这里插入图片描述
#这里要注意了。broker里面的连接的service_name是<db_unique_name>_DGMGRL,因为我们静态监听中的GLOBAL_NAME是DB_UNIQUE_NAME,所以这里我们要修改
StaticConnectIdentifier #不然在切换的时候会报错的。
所以上面要修改监听文件,如果不修改监听文件的话,那也可以执行下面的命令来修改StaticConnectIdentifier//这也是一种方法

DGMGRL>edit database corl set property StaticConnectIdentifier= '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.168.43)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ocrl)(INSTANCE_NAME=ocrl)(SERVER=DEDICATED)))'; 
DGMGRL> edit database ocrls set property  StaticConnectIdentifier    = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.168.44)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ocrls)(INSTANCE_NAME=ocrls)(SERVER=DEDICATED)))';

b) 开始切换

DGMGRL> switchover to ocrls;

在这里插入图片描述
再次查看配置文件

DGMGRL> show configuration

在这里插入图片描述
发现主备已经成功完成切换了

四、 FSFO(fast start failover 快速启动故障)
DG_broker已经配置完了,可是还是需要我们进行手动切换,如果我们想让数据库自动切换,那么还需要配置FSFO了。
a) 启用闪回
FSFO 将闪回数据库用作将故障主数据库恢复为备用数据库流程的一部分,所以我们需要启用数据库的闪回功能:
主库和备库操作一样
设置闪回区的大小,这个大小要足够大,不然闪回区满了会导致数据库宕机

b) 启用FSFO
启用了主备库的闪回功能后,我们就可以启动FSFO了,登录dgmgrl连接主库:

ocrl:/home/oracle@oracle1>dgmgrl
DGMGRL> connect sys/oracle@ocrl
DGMGRL> show configuration
DGMGRL> enable fast_start failover;

在这里插入图片描述
可是我们发现DGMGRL告警了,那是因为我们没有启动观察器(observer)的原因,那我们接下来就启动观察器吧!(由于observer的启动会一直占用session 窗口的,所以建议写成脚本挂后台)
这里我们在备库上执行
登录dgmgrl主机执行以下命令:

nohup dgmgrl sys/oracle@ocrl "start observer file=FSFO.dat">>fsfo.log 2>&1 &

在这里插入图片描述
启动observer后,我们再看一下配置状态

DGMGRL> show configuration

在这里插入图片描述
这样我们的FSFO就配置完成了,下面我们模拟主库宕机后,FSFO的切换:

  1. 直接把主库的关掉
SQL> shutdown abort
  1. 查看我们observer的日志//在备库上
    在这里插入图片描述
    从日志中可以发现FSFO已经切换备库的角色了!

附录:
db_name:数据库名。数据库创建完成后,参数db_name被写入参数文件,格式如下:db_name=oratest
SID:实例标识(OS环境变量中$ORACLE_SID)
db_unique_name:在Data Guard里,主从服务器中的数据库,都有一样的DB_NAME。然而它们和RAC环境下不一样,不代表同一个库(主备机中均有自己的数据库文件,不像RAC环境中通过多个实例通过磁盘阵列共享一个库)。但是它们的db_unique_name 是不一样的,用以标识不同的数据库,这个可以自己定义的。
service_name:服务名。service name是连接数据库的时候使用的别名。需要注意的是,service_name主要用于数据库网络连接时,可以有多个,可以随意命名,可以通过系统初始化参数service_name设置。一般情况下,service_name的缺省值为db_name.db_domain,同global_name相同。
Net service name:网络服务名,即连接描述符。是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库的位置透明的特性。网络服务名被记录在tnsnames.ora文件中,由自己随意命名。
global_name:全局数据库名。在windows操作系统中,利用Database Configuration Assistant创建数据库时,要求输入就是全局数据库名。通常,它的名字是由db_name.db_domain构成。
DG(DATA GUARD):是oracle数据库实现高可用的一种方式,主库通过redo apply(针对物理standby库)或sql apply(针对逻辑standby库)方式实现主库与备库的同步,本文中的standby库均为物理standby。
DG_BROKER:由于DG的切换需要管理员输入一堆命令,并且切换步骤繁琐,影响数据库主备切换的速度。此工具可以帮助管理员只输入一条指令即可实现数据库的主备切换。
FSFO(Fast-Start Failover快速启动故障切换):依赖于DG_BROKER,实现DG环境自动故障切换(在未配置前,DG的主备切换需要人工干预)

发布了57 篇原创文章 · 获赞 85 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41944882/article/details/103437587