使用Data Guard Broker进行Data Guard物理备用库配置的方法是什么

53次阅读
没有评论

共计 12133 个字符,预计需要花费 31 分钟才能阅读完成。

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

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

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

SELECT log_mode FROM v$database; 
LOG_MODE
------------
NOARCHIVELOG 
SQL

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

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

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

ALTER DATABASE FORCE LOGGING;
--  确保至少存在一个日志文件。ALTER SYSTEM SWITCH LOGFILE;

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

--  如果使用 Oracle Managed Files(OMF)。ALTER DATABASE ADD STANDBY LOGFILE SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE SIZE 50M;
--  如果未使用 Oracle Managed Files(OMF)。ALTER DATABASE ADD STANDBY LOGFILE (/u01/oradata/cdb1/standby_redo01.log) SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE (/u01/oradata/cdb1/standby_redo02.log) SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE (/u01/oradata/cdb1/standby_redo03.log) SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE (/u01/oradata/cdb1/standby_redo04.log) SIZE 50M;

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

ALTER DATABASE FLASHBACK ON;

1.2 初始化参数

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

SQL  show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string cdb1
SQL  show parameter db_unique_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_unique_name string cdb1SQL

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

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

ALTER SYSTEM SET STANDBY_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 修改后,请使用以下命令在两台服务器上重新启动监听器。

lsnrctl stop
lsnrctl start

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

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

*.db_name= cdb1

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

mkdir -p /u01/app/oracle/oradata/cdb1/pdbseed
mkdir -p /u01/app/oracle/oradata/cdb1/pdb1
mkdir -p /u01/app/oracle/fast_recovery_area/cdb1
mkdir -p /u01/app/oracle/admin/cdb1/adump

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

$ orapwd file=/u01/app/oracle/product/19.0.0/db_1/dbs/orapwcdb1 password=Password1 entries=10

2.2 使用 DUPLICATE 创建备用

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

$ export ORACLE_SID=cdb1
$ sqlplus / as sysdba 
SQL  STARTUP NOMOUNT PFILE= /tmp/initcdb1_stby.ora

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

$ rman TARGET sys/Password1@cdb1 AUXILIARY sys/Password1@cdb1_stby

现在发出以下  DUPLICATE 命令:

DUPLICATE TARGET DATABASE
 FOR STANDBY
 FROM ACTIVE DATABASE
 DORECOVER
 SPFILE
SET db_unique_name= cdb1_stby  COMMENT  Is standby 
 NOFILENAMECHECK;

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

DUPLICATE TARGET DATABASE
 FOR STANDBY
 FROM ACTIVE DATABASE
 DORECOVER
 SPFILE
SET db_unique_name= cdb1_stby  COMMENT  Is standby 
SET db_file_name_convert= /original/directory/path2/ , /new/directory/path2/ , /original/directory/path3/ , /new/directory/path3/ 
SET log_file_name_convert= /original/directory/path2/ , /new/directory/path2/ , /original/directory/path3/ , /new/directory/path3/ 
SET job_queue_processes= 0 
 NOFILENAMECHECK;

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

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

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

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

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

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

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

3、启用 Broker

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

ALTER SYSTEM SET dg_broker_start=true;

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

$ dgmgrl sys/Password1@cdb1
DGMGRL for Linux: Release 19.0.0.0.0 - Production on Tue Feb 26 22:39:33 2018
Version 19.2.0.0.0
 
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
 
Welcome to DGMGRL, type  help  for information.
Connected as SYSDBA.
DGMGRL  CREATE CONFIGURATION my_dg_config AS PRIMARY DATABASE IS cdb1 CONNECT IDENTIFIER IS cdb1;
Configuration  my_dg_config  created with primary database  cdb1 
DGMGRL

现在添加备用数据库。

DGMGRL  ADD DATABASE cdb1_stby AS CONNECT IDENTIFIER IS cdb1_stby MAINTAINED AS PHYSICAL;
Database  cdb1_stby  added
DGMGRL

现在我们启用新配置。

DGMGRL  ENABLE CONFIGURATION;
Enabled.
DGMGRL

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

DGMGRL  SHOW CONFIGURATION;
 
Configuration - my_dg_config
 
Protection Mode: MaxPerformance
Members:
cdb1 - Primary database
cdb1_stby - Physical standby database
 
Fast-Start Failover: DISABLED
 
Configuration Status:SUCCESS (status updated 26 seconds ago)
 
DGMGRL  SHOW DATABASE cdb1;
 
Database - cdb1
 
Role: PRIMARY
Intended State: TRANSPORT-ON
Instance(s):
 
Database Status:
SUCCESS
 
DGMGRL  SHOW DATABASE cdb1_stby;
 
Database - cdb1_stby
 
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: 0 seconds (computed 1 second ago)
Apply Lag: 0 seconds (computed 1 second ago)
Average Apply Rate: 5.00 KByte/s
Real Time Query: OFF
Instance(s):
 
Database Status:
SUCCESS
 
DGMGRL

4、数据库切换

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

$ dgmgrl sys/Password1@cdb1
DGMGRL for Linux: Release 19.0.0.0.0 - Production on Tue Feb 26 22:39:33 2018Version 19.2.0.0.0
 
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
 
Welcome to DGMGRL, type  help  for information.
Connected as SYSDBA.
DGMGRL  SWITCHOVER TO cdb1_stby;
Performing switchover NOW, please wait...
Operation requires a connection to instance  cdb1  on database  cdb1_stby 
Connecting to instance  cdb1 ...
Connected as SYSDBA.
New primary database  cdb1_stby  is opening...
Operation requires start up of instance  cdb1  on database  cdb1 Starting instance  cdb1 ...ORACLE instance started.Database mounted.Switchover succeeded, new primary is  cdb1_stby 
DGMGRL

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

$ dgmgrl sys/Password1@cdb1_stby
DGMGRL for Linux: Release 19.0.0.0.0 - Production on Tue Feb 26 22:53:36 2018Version 19.2.0.0.0
 
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
 
Welcome to DGMGRL, type  help  for information.
Connected as SYSDBA.
DGMGRL  SWITCHOVER TO cdb1;
Performing switchover NOW, please wait...
Operation requires a connection to instance  cdb1  on database  cdb1 
Connecting to instance  cdb1 ...
Connected as SYSDBA.
New primary database  cdb1  is opening...
Operation requires start up of instance  cdb1  on database  cdb1_stby Starting instance  cdb1 ...ORACLE instance started.Database mounted.Switchover succeeded, new primary is  cdb1 
DGMGRL

5、数据库故障转移

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

$ dgmgrl sys/Password1@cdb1_stby
DGMGRL for Linux: Release 19.0.0.0.0 - Production on Tue Feb 26 22:53:36 2018Version 19.2.0.0.0
 
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
 
Welcome to DGMGRL, type  help  for information.
Connected as SYSDBA.
DGMGRL  FAILOVER TO cdb1_stby;
Performing failover NOW, please wait...
Failover succeeded, new primary is  cdb1_stby 
DGMGRL

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

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

DGMGRL  REINSTATE DATABASE cdb1;
Reinstating database  cdb1 , please wait...
Operation requires shut down of instance  cdb1  on database  cdb1 
Shutting down instance  cdb1 ...
ORACLE instance shut down.
Operation requires start up of instance  cdb1  on database  cdb1 Starting instance  cdb1 ...ORACLE instance started.Database mounted.
Continuing to reinstate database  cdb1  ...
Reinstatement of database  cdb1  succeeded
DGMGRL

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

# 1)  清理旧实例。sqlplus / as sysdba  EOF
SHUTDOWN IMMEDIATE;
EXIT;
 
rm -Rf /u01/app/oracle/oradata/cdb1/*
rm -Rf /u01/app/oracle/fast_recovery_area/cdb1
rm -Rf /u01/app/oracle/fast_recovery_area/cdb1_stby
rm -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/pdb1
rm $ORACLE_HOME/dbs/spfilecdb1.ora
 
export ORACLE_SID=cdb1
sqlplus / as sysdba  EOF
STARTUP NOMOUNT PFILE= /tmp/initcdb1_stby.ora 
EXIT;
# 2)  连接到  RMAN.
$ rman TARGET sys/Password1@cdb1_stby AUXILIARY sys/Password1@cdb1
# 3)  复制数据库。DUPLICATE TARGET DATABASE
FOR STANDBY
FROM ACTIVE DATABASE
DORECOVER
SPFILE
SET db_unique_name= cdb1  COMMENT  Is standby 
NOFILENAMECHECK;
# 4)  连接到当前主节点上的  DGMDRL。$ dgmgrl sys/Password1@cdb1_stby
# 5)  启用新备用数据库。DGMGRL  ENABLE DATABASE cdb1;

6、闪回数据库

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

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

7、只读备用和 Active Data Guard

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

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

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE OPEN READ ONLY;

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

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

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

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE OPEN READ ONLY;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

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

8、快照备用

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

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

$ dgmgrl sys/Password1@cdb1
DGMGRL for Linux: Release 19.0.0.0.0 - Production on Tue Feb 26 22:53:36 2018Version 19.2.0.0.0
 
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
 
Welcome to DGMGRL, type  help  for information.
Connected as SYSDBA.
DGMGRL  CONVERT DATABASE cdb1_stby TO SNAPSHOT STANDBY;
Converting database  cdb1_stby  to a Snapshot Standby database, please wait...
Database  cdb1_stby  converted successfully
DGMGRL

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

$ dgmgrl sys/Password1@cdb1
DGMGRL for Linux: Release 19.0.0.0.0 - Production on Tue Feb 26 22:53:36 2018Version 19.2.0.0.0
 
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
 
Welcome to DGMGRL, type  help  for information.
Connected as SYSDBA.
DGMGRL  CONVERT DATABASE cdb1_stby TO PHYSICAL STANDBY;
Converting database  cdb1_stby  to a Physical Standby database, please wait...
Operation requires shut down of instance  cdb1  on database  cdb1_stby 
Shutting down instance  cdb1 ...
Database closed.
Database dismounted.
ORACLE instance shut down.
Operation requires start up of instance  cdb1  on database  cdb1_stby Starting instance  cdb1 ...ORACLE instance started.Database mounted.
Continuing to convert database  cdb1_stby  ...Database  cdb1_stby  converted successfully
DGMGRL

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

DGMGRL  SHOW CONFIGURATION;
 
Configuration - my_dg_config
 
Protection Mode: MaxPerformance
Members:
cdb1 - Primary database
cdb1_stby - Physical standby database
 
Fast-Start Failover: DISABLED
 
Configuration Status:SUCCESS (status updated 38 seconds ago)
 
DGMGRL

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

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-26发表,共计12133字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)