这篇文章主要介绍“使用Data Guard Broker进行Data Guard物理备用库配置的方法是什么”,在日常操作中,相信很多人在使用Data Guard Broker进行Data Guard物理备用库配置的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”使用Data Guard Broker进行Data Guard物理备用库配置的方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1、主服务器配置1.1 归档模式

检查主数据库是否处于归档日志模式。

SELECTlog_modeFROMv$database;LOG_MODE------------NOARCHIVELOGSQL>

如果是NOARCHIVELOG 模式,则切换到 ARCHIVELOG 模式。

SHUTDOWNIMMEDIATE;STARTUPMOUNT;ALTERDATABASEARCHIVELOG;ALTERDATABASEOPEN;

通过发出以下命令启用强制日志记录。

ALTERDATABASEFORCELOGGING;--确保至少存在一个日志文件。ALTERSYSTEMSWITCHLOGFILE;

在主数据库上创建备用重做日志(在切换的情况下)。备用重做日志应该至少和最大的联机重做日志一样大,并且与联机重做日志相比,每个线程应该有一个额外的组。在我的例子中,必须在两台服务器上创建以下备用重做日志。

--如果使用OracleManagedFiles(OMF)。ALTERDATABASEADDSTANDBYLOGFILESIZE50M;ALTERDATABASEADDSTANDBYLOGFILESIZE50M;ALTERDATABASEADDSTANDBYLOGFILESIZE50M;ALTERDATABASEADDSTANDBYLOGFILESIZE50M;--如果未使用OracleManagedFiles(OMF)。ALTERDATABASEADDSTANDBYLOGFILE('/u01/oradata/cdb1/standby_redo01.log')SIZE50M;ALTERDATABASEADDSTANDBYLOGFILE('/u01/oradata/cdb1/standby_redo02.log')SIZE50M;ALTERDATABASEADDSTANDBYLOGFILE('/u01/oradata/cdb1/standby_redo03.log')SIZE50M;ALTERDATABASEADDSTANDBYLOGFILE('/u01/oradata/cdb1/standby_redo04.log')SIZE50M;

如果您想使用闪回数据库,请立即在主数据库上启用它,因此它也将在备用数据库上启用。它非常有用,你可以使用以下命令启用闪回:

ALTERDATABASEFLASHBACKON;

1.2 初始化参数

检查DB_NAME 和 DB_UNIQUE_NAME 参数的设置。在这种情况下,在主数据库上都设置为 “cdb1”。

SQL>showparameterdb_nameNAMETYPEVALUE-----------------------------------------------------------------------------db_namestringcdb1SQL>showparameterdb_unique_nameNAMETYPEVALUE-----------------------------------------------------------------------------db_unique_namestringcdb1SQL>

备用数据库的DB_NAME 与主数据库的 DB_NAME 相同,但它必须具有不同的DB_UNIQUE_NAME 值。对于此示例,备用数据库的值为 “cdb1_stby”。

确保已设置STANDBY_FILE_MANAGEMENT 参数。可以使用以下命令进行设置:

ALTERSYSTEMSETSTANDBY_FILE_MANAGEMENT=AUTO;

1.3 服务配置

两台服务器上的“$ORACLE_HOME/network/admin/tnsnames.ora” 文件中都需要主数据库和备用数据库的条目。您可以使用网络配置实用程序(netca)或手动创建这些。在本示例都使用以下条目。请注意在条目中使用 SID 而不是 SERVICE_NAME。这很重要,因为代理在关闭时需要连接到数据库,因此服务将不存在。

cdb1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=ol7-19-dg1)(PORT=1521)))(CONNECT_DATA=(SID=cdb1)))cdb1_stby=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=ol7-19-dg2)(PORT=1521)))(CONNECT_DATA=(SID=cdb1)))

主服务器上的“$ORACLE_HOME/network/admin/listener.ora” 文件包含以下配置。

LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ol7-19-dg1)(PORT=1521))(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))))SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=cdb1_DGMGRL)(ORACLE_HOME=/u01/app/oracle/product/19.0.0/db_1)(SID_NAME=cdb1)))ADR_BASE_LISTENER=/u01/app/oracle

备用服务器上的“$ORACLE_HOME/network/admin/listener.ora” 文件包含以下配置。由于代理在关闭时需要连接到数据库,因此我们不能依赖于监听器的自动注册,因此数据库的显式条目。

LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ol7-19-dg2)(PORT=1521))(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))))SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=cdb1_stby_DGMGRL)(ORACLE_HOME=/u01/app/oracle/product/19.0.0/db_1)(SID_NAME=cdb1)))ADR_BASE_LISTENER=/u01/app/oracle


完成listener.ora 修改后,请使用以下命令在两台服务器上重新启动监听器。

lsnrctlstoplsnrctlstart

2、备用服务器配置2.1 准备 DUPLICATE

为备用数据库创建名为“/tmp/initcdb1” 的参数文件,内容如下:

*.db_name='cdb1'

在备用服务器上创建必要的目录。

mkdir-p/u01/app/oracle/oradata/cdb1/pdbseedmkdir-p/u01/app/oracle/oradata/cdb1/pdb1mkdir-p/u01/app/oracle/fast_recovery_area/cdb1mkdir-p/u01/app/oracle/admin/cdb1/adump

创建密码文件,SYS密码与主数据库的密码匹配。

$orapwdfile=/u01/app/oracle/product/19.0.0/db_1/dbs/orapwcdb1password=Password1entries=10

2.2 使用 DUPLICATE 创建备用

使用临时“init.ora” 文件启动备用服务器上的辅助实例。

$exportORACLE_SID=cdb1$sqlplus/assysdbaSQL>STARTUPNOMOUNTPFILE='/tmp/initcdb1_stby.ora';

连接到RMAN,为 TARGET 和 AUXILIARY 实例指定完整的连接字符串。请勿尝试使用 OS 身份验证。

$rmanTARGETsys/Password1@cdb1AUXILIARYsys/Password1@cdb1_stby

现在发出以下DUPLICATE 命令:

DUPLICATETARGETDATABASEFORSTANDBYFROMACTIVEDATABASEDORECOVERSPFILESETdb_unique_name='cdb1_stby'COMMENT'Isstandby'NOFILENAMECHECK;

如果需要转换文件位置或更改任何初始化参数,可以在DUPLICATE 期间使用 SET 命令执行此操作。如下所示:

DUPLICATETARGETDATABASEFORSTANDBYFROMACTIVEDATABASEDORECOVERSPFILESETdb_unique_name='cdb1_stby'COMMENT'Isstandby'SETdb_file_name_convert='/original/directory/path2/','/new/directory/path2/','/original/directory/path3/','/new/directory/path3/'SETlog_file_name_convert='/original/directory/path2/','/new/directory/path2/','/original/directory/path3/','/new/directory/path3/'SETjob_queue_processes='0'NOFILENAMECHECK;

命令中各个项的简要说明如下:

·FOR STANDBY:这告诉 DUPLICATE 命令将用于备用数据库,因此它不会强制更改 DBID。

·FROM ACTIVE DATABASE:DUPLICATE 将直接从源数据文件创建,无需额外的备份步骤。

·DORECOVER:DUPLICATE 将包括恢复步骤,使待机状态达到当前时间点。

·SPFILE:允许我们在从源服务器复制 spfile 时重置它。

·NOFILENAMECHECK:不检查目标文件位置。

以上命令完成后,我们就可以开始使用Broker 了。

3、启用 Broker

此时我们有一个主数据库和一个备用数据库,所以现在我们需要开始使用Data Guard Broker 来管理它们。连接到两个数据库(主数据库和备用数据库)并发出以下命令:

ALTERSYSTEMSETdg_broker_start=true;

在主服务器上,发出以下命令以向代理注册主服务器:

$dgmgrlsys/Password1@cdb1DGMGRLforLinux:Release19.0.0.0.0-ProductiononTueFeb2622:39:332018Version19.2.0.0.0Copyright(c)1982,2019,Oracleand/oritsaffiliates.Allrightsreserved.WelcometoDGMGRL,type"help"forinformation.ConnectedasSYSDBA.DGMGRL>CREATECONFIGURATIONmy_dg_configASPRIMARYDATABASEIScdb1CONNECTIDENTIFIERIScdb1;Configuration"my_dg_config"createdwithprimarydatabase"cdb1"DGMGRL>

现在添加备用数据库。

DGMGRL>ADDDATABASEcdb1_stbyASCONNECTIDENTIFIERIScdb1_stbyMAINTAINEDASPHYSICAL;Database"cdb1_stby"addedDGMGRL>

现在我们启用新配置。

DGMGRL>ENABLECONFIGURATION;Enabled.DGMGRL>

以下命令显示如何从broker 检查数据库的配置和状态:

DGMGRL>SHOWCONFIGURATION;Configuration-my_dg_configProtectionMode:MaxPerformanceMembers:cdb1-Primarydatabasecdb1_stby-PhysicalstandbydatabaseFast-StartFailover:DISABLEDConfigurationStatus:SUCCESS(statusupdated26secondsago)DGMGRL>SHOWDATABASEcdb1;Database-cdb1Role:PRIMARYIntendedState:TRANSPORT-ONInstance(s):cdb1DatabaseStatus:SUCCESSDGMGRL>SHOWDATABASEcdb1_stby;Database-cdb1_stbyRole:PHYSICALSTANDBYIntendedState:APPLY-ONTransportLag:0seconds(computed1secondago)ApplyLag:0seconds(computed1secondago)AverageApplyRate:5.00KByte/sRealTimeQuery:OFFInstance(s):cdb1DatabaseStatus:SUCCESSDGMGRL>

4、数据库切换

数据库可以是两种互斥模式之一(主用或备用)。可以在运行时更改这些角色,而不会丢失数据或重置日志。此过程称为“切换”,可以使用以下命令执行。连接到主数据库(cdb1)并切换到备用数据库(cdb1_stby)。

$dgmgrlsys/Password1@cdb1DGMGRLforLinux:Release19.0.0.0.0-ProductiononTueFeb2622:39:332018Version19.2.0.0.0Copyright(c)1982,2019,Oracleand/oritsaffiliates.Allrightsreserved.WelcometoDGMGRL,type"help"forinformation.ConnectedasSYSDBA.DGMGRL>SWITCHOVERTOcdb1_stby;PerformingswitchoverNOW,pleasewait...Operationrequiresaconnectiontoinstance"cdb1"ondatabase"cdb1_stby"Connectingtoinstance"cdb1"...ConnectedasSYSDBA.Newprimarydatabase"cdb1_stby"isopening...Operationrequiresstartupofinstance"cdb1"ondatabase"cdb1"Startinginstance"cdb1"...ORACLEinstancestarted.Databasemounted.Switchoversucceeded,newprimaryis"cdb1_stby"DGMGRL>

让我们切换回原来的主数据库。连接到新主服务器(cdb1_stby)并切换到新的备用数据库(cdb1)。

$dgmgrlsys/Password1@cdb1_stbyDGMGRLforLinux:Release19.0.0.0.0-ProductiononTueFeb2622:53:362018Version19.2.0.0.0Copyright(c)1982,2019,Oracleand/oritsaffiliates.Allrightsreserved.WelcometoDGMGRL,type"help"forinformation.ConnectedasSYSDBA.DGMGRL>SWITCHOVERTOcdb1;PerformingswitchoverNOW,pleasewait...Operationrequiresaconnectiontoinstance"cdb1"ondatabase"cdb1"Connectingtoinstance"cdb1"...ConnectedasSYSDBA.Newprimarydatabase"cdb1"isopening...Operationrequiresstartupofinstance"cdb1"ondatabase"cdb1_stby"Startinginstance"cdb1"...ORACLEinstancestarted.Databasemounted.Switchoversucceeded,newprimaryis"cdb1"DGMGRL>5、数据库故障转移

如果主数据库不可用,则可以使用以下语句将备用数据库激活为主数据库。连接到备用数据库(cdb1_stby)并进行故障转移。

$dgmgrlsys/Password1@cdb1_stbyDGMGRLforLinux:Release19.0.0.0.0-ProductiononTueFeb2622:53:362018Version19.2.0.0.0Copyright(c)1982,2019,Oracleand/oritsaffiliates.Allrightsreserved.WelcometoDGMGRL,type"help"forinformation.ConnectedasSYSDBA.DGMGRL>FAILOVERTOcdb1_stby;PerformingfailoverNOW,pleasewait...Failoversucceeded,newprimaryis"cdb1_stby"DGMGRL>

由于备用数据库现在是主数据库,因此应立即进行数据库备份。

现在可以将原始主数据库配置为备用数据库。如果在主数据库上启用了闪回数据库,则可以使用以下命令相对轻松地完成此操作。

DGMGRL>REINSTATEDATABASEcdb1;Reinstatingdatabase"cdb1",pleasewait...Operationrequiresshutdownofinstance"cdb1"ondatabase"cdb1"Shuttingdowninstance"cdb1"...ORACLEinstanceshutdown.Operationrequiresstartupofinstance"cdb1"ondatabase"cdb1"Startinginstance"cdb1"...ORACLEinstancestarted.Databasemounted.Continuingtoreinstatedatabase"cdb1"...Reinstatementofdatabase"cdb1"succeededDGMGRL>

如果未启用闪回数据库,则必须手动将cdb1 重新创建为备用数据库。基本过程与您之前所做的相反。如下命令:

#1)清理旧实例。sqlplus/assysdba<<EOFSHUTDOWNIMMEDIATE;EXIT;EOFrm-Rf/u01/app/oracle/oradata/cdb1/*rm-Rf/u01/app/oracle/fast_recovery_area/cdb1rm-Rf/u01/app/oracle/fast_recovery_area/cdb1_stbyrm-Rf/u01/app/oracle/admin/cdb1mkdir-p/u01/app/oracle/fast_recovery_area/cdb1mkdir-p/u01/app/oracle/admin/cdb1/adumpmkdir-p/u01/app/oracle/oradata/cdb1/pdbseedmkdir-p/u01/app/oracle/oradata/cdb1/pdb1rm$ORACLE_HOME/dbs/spfilecdb1.oraexportORACLE_SID=cdb1sqlplus/assysdba<<EOFSTARTUPNOMOUNTPFILE='/tmp/initcdb1_stby.ora';EXIT;EOF#2)连接到RMAN.$rmanTARGETsys/Password1@cdb1_stbyAUXILIARYsys/Password1@cdb1#3)复制数据库。DUPLICATETARGETDATABASEFORSTANDBYFROMACTIVEDATABASEDORECOVERSPFILESETdb_unique_name='cdb1'COMMENT'Isstandby'NOFILENAMECHECK;#4)连接到当前主节点上的DGMDRL。$dgmgrlsys/Password1@cdb1_stby#5)启用新备用数据库。DGMGRL>ENABLEDATABASEcdb1;

6、闪回数据库

在上一节中已经提到过,但值得再次关注闪回数据库。虽然切换/切换对主数据库和备用数据库都是安全的,但故障转移会使原始主数据库无法转换为备用数据库。如果未启用闪回数据库,则必须废弃原始主数据库并将其重新创建为备用数据库。

另一种方法是在主服务器上启用闪回数据库(如果需要,还可以启用备用数据库),以便在发生故障转移时,可以将主数据库闪回到故障转移之前的时间并快速转换为备用数据库,如上所示。

7、只读备用和 Active Data Guard

配置备用数据库后,可以以只读模式打开它以允许查询访问。这通常用于将报告卸载到备用服务器,从而释放主服务器上的资源。以只读模式打开时,归档日志传送将继续,但托管恢复将停止,因此备用数据库将逐渐过时,直到恢复管理恢复。

要将备用数据库切换到只读模式,请执行以下操作。

SHUTDOWNIMMEDIATE;STARTUPMOUNT;ALTERDATABASEOPENREADONLY;

重置管理恢复,请执行以下操作。

SHUTDOWNIMMEDIATE;STARTUPMOUNT;ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEDISCONNECTFROMSESSION;

在11g 中,Oracle 引入了活动数据保护功能。这允许备用数据库以只读模式打开,但仍应用重做信息。这意味着一个备用系统可以用于查询,但仍然是最新的。此功能存在许可问题,但以下命令显示如何启用活动数据保护。

SHUTDOWNIMMEDIATE;STARTUPMOUNT;ALTERDATABASEOPENREADONLY;ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEDISCONNECTFROMSESSION;

由于托管恢复继续使用Active Data Guard,因此在这种情况下无需从只读模式切换回托管恢复。

8、快照备用

在11g 中引入,快照备用允许备用数据库以读写模式打开。当切换回备用模式时,在读写模式下所做的所有更改都将丢失。这是使用闪回数据库实现的,可以正常工作,备用数据库不需要显式启用闪回数据库来利用此功能。

连接到主(cdb1)数据库并将备用数据库(cdb1_stby)转换为快照备用数据库。

$dgmgrlsys/Password1@cdb1DGMGRLforLinux:Release19.0.0.0.0-ProductiononTueFeb2622:53:362018Version19.2.0.0.0Copyright(c)1982,2019,Oracleand/oritsaffiliates.Allrightsreserved.WelcometoDGMGRL,type"help"forinformation.ConnectedasSYSDBA.DGMGRL>CONVERTDATABASEcdb1_stbyTOSNAPSHOTSTANDBY;Convertingdatabase"cdb1_stby"toaSnapshotStandbydatabase,pleasewait...Database"cdb1_stby"convertedsuccessfullyDGMGRL>

完成快照备用后,将其转换回备用数据库。

$dgmgrlsys/Password1@cdb1DGMGRLforLinux:Release19.0.0.0.0-ProductiononTueFeb2622:53:362018Version19.2.0.0.0Copyright(c)1982,2019,Oracleand/oritsaffiliates.Allrightsreserved.WelcometoDGMGRL,type"help"forinformation.ConnectedasSYSDBA.DGMGRL>CONVERTDATABASEcdb1_stbyTOPHYSICALSTANDBY;Convertingdatabase"cdb1_stby"toaPhysicalStandbydatabase,pleasewait...Operationrequiresshutdownofinstance"cdb1"ondatabase"cdb1_stby"Shuttingdowninstance"cdb1"...Databaseclosed.Databasedismounted.ORACLEinstanceshutdown.Operationrequiresstartupofinstance"cdb1"ondatabase"cdb1_stby"Startinginstance"cdb1"...ORACLEinstancestarted.Databasemounted.Continuingtoconvertdatabase"cdb1_stby"...Database"cdb1_stby"convertedsuccessfullyDGMGRL>

备用数据库再次处于托管恢复状态,并恢复归档日志传送。请注意,闪回数据库仍未启用。

DGMGRL>SHOWCONFIGURATION;Configuration-my_dg_configProtectionMode:MaxPerformanceMembers:cdb1-Primarydatabasecdb1_stby-PhysicalstandbydatabaseFast-StartFailover:DISABLEDConfigurationStatus:SUCCESS(statusupdated38secondsago)DGMGRL>

到此,关于“使用Data Guard Broker进行Data Guard物理备用库配置的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!