新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍“使用Data Guard Broker进行Data Guard物理备用库配置的方法是什么”,在日常操作中,相信很多人在使用Data Guard Broker进行Data Guard物理备用库配置的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”使用Data Guard Broker进行Data Guard物理备用库配置的方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
创新互联是一家专业提供龙潭企业网站建设,专注与网站设计、成都网站建设、H5开发、小程序制作等业务。10年已为龙潭众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
检查主数据库是否处于归档日志模式。
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;
检查 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;
两台服务器上的 “$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
为备用数据库创建名为 “/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
使用临时 “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 了。
此时我们有一个主数据库和一个备用数据库,所以现在我们需要开始使用 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): cdb1 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): cdb1 Database Status: SUCCESS DGMGRL>
数据库可以是两种互斥模式之一(主用或备用)。可以在运行时更改这些角色,而不会丢失数据或重置日志。此过程称为“切换”,可以使用以下命令执行。连接到主数据库(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>
如果主数据库不可用,则可以使用以下语句将备用数据库激活为主数据库。连接到备用数据库(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 <ENABLE DATABASE cdb1;
在上一节中已经提到过,但值得再次关注闪回数据库。虽然切换/切换对主数据库和备用数据库都是安全的,但故障转移会使原始主数据库无法转换为备用数据库。如果未启用闪回数据库,则必须废弃原始主数据库并将其重新创建为备用数据库。
另一种方法是在主服务器上启用闪回数据库(如果需要,还可以启用备用数据库),以便在发生故障转移时,可以将主数据库闪回到故障转移之前的时间并快速转换为备用数据库,如上所示。
配置备用数据库后,可以以只读模式打开它以允许查询访问。这通常用于将报告卸载到备用服务器,从而释放主服务器上的资源。以只读模式打开时,归档日志传送将继续,但托管恢复将停止,因此备用数据库将逐渐过时,直到恢复管理恢复。
要将备用数据库切换到只读模式,请执行以下操作。
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,因此在这种情况下无需从只读模式切换回托管恢复。
在 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物理备用库配置的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!