如何在oracle 11g dataguard中使用dgmgrl

分类:编程技术 时间:2024-02-20 15:59 浏览:0 评论:0
0
小编给大家分享一下如何在Oracle 11g dataguard中使用dgmgrl。相信大多数人对此还不是很了解,所以分享这篇文章供大家参考。希望您读完这篇文章后能有所收获。让我们一起来了解一下吧!

1 启用 dgmgrl
相关参数:
dg_broker_start
dg_broker_config_file1

配置:
alter system set dg_broker_start=truescope=both;
此时数据库会添加一个dmon进程

[oracle@12crac2 ~]$ ps -ef|grep -i _dmon|grep -v greporacle 2699 1 0 06:57 ? 00:00:01 ora_dmon_db1

对应日志:$ORACLE_BASE/diag/rdbms/xxx/xxxx/drc$ORACLE_SID.log
但是此时的使用是无法使用的,如图下面:

DGMGRL> 显示配置ORA-16532:Data Guard 代理配置不存在

需要手动配置:

DGMGRL> 帮助创建 DGMGRL> 创建配置'db' 作为主数据库是 db connect identifier is db;DGMGRL>help addDGMGRL>添加数据库“SBDB1”,因为连接标识符为“sbdb1”,维护为物理;DGMGRL>启用配置

注意:添加数据库“SBDB1”,此处 dg 指的是数据库的 dbuniquename,连接标识符为 sbdb1,其中 sbdb1 指连接到备用数据库的 tnsname.ora 的网络服务名称。注意大小差异,默认为小写;
同时查看alert_$ ORACLE_SID.log日志可以看到:

RSM0 started with pid=48,操作系统 id=34551 更改系统设置 log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST','valid_for=(ALL_LOGFILES, ALL_ROLES)' SCOPE=BOTH; ALTER SYSTEM SET log_archive_trace=0 SCOPE=BOTH SID='db1';ALTER SYSTEM SET log_archive_format='%t_%s_%r.dbf' SCOPE=SPFILE SID='db1';ALTER SYSTEM SETstandby_file_management='AUTO' SCOPE=BOTH SID='*';更改系统设置 archive_lag_target=0 范围=两个 SID='*';更改系统设置 log_archive_max_processes=4 范围=两个 SID='*';ALTER SYSTEM SET log_archive_min_succeed_dest=1 SCOPE=BOTH SID='*';

检查 drc$ORACLE_SID.log:

创建 Data Guard Broker 监控进程 (DMON)04/03/2023 23:26:33>> 启动 Data Guard Broker 引导 <<代理配置文件位置:dg_broker_config_file1 = "/u01/app/oracle/product/11.2.0/dbhome_1/dbs/dr1SBDB1.dat" dg_broker_config_file2 = "/u01/app /oracle/product/11.2.0/dbhome_1/dbs/dr2SBDB1.dat "04/03/2023 23:26:38Broker 配置:"db" 保护模式:最大性能快速启动故障转移 (FSFO):禁用,flags=0x0 ,version=0 主数据库:db(0x01010000) 备数据库:SBDB1,启用物理备(0x02010000)

所有配置完成,这个东西只能在企业版使用
第二次检查配置:

DGMGRL> show database sbdb1Object "sbdb1" was not foundDGMGRL> show database SBDB1 Object "sbdb1" was not found

注意大小写

DGMGRL> 显示数据库“SBDB1”数据库 - SBDB1 角色:物理待机 预期状态:APPLY-ON 传输延迟:0 秒(0 秒前计算) 应用延迟:0 秒(0 秒前计算) 应用速率:0 字节/秒 实时查询:ON 实例): SBDB1 数据库状态:SUCCESS

三个相关测试:快照备用、切换
3.1 测试时不开启数据库闪回:< br/>不需要 dgmrl的方法参见:https://blog.51cto.com/snowhill/2047857

DGMGRL>将数据库'SBDB1'转换为快照备用;将数据库“SBDB1”转换为快照备用数据库,请稍候。 ..数据库“SBDB1”转换成功

从alert_sbdb1.log看,数据库没有重启,但是会话被杀了;

SQL> select open_mode,database_role,protection_mode,flashback_on来自 v$数据库; OPEN_MODE DATABASE_ROLE PROTECTION_MODE FASHBACK_ON------------------------------------------------------------------------ -------------------------------------------------- ----------------读写快照备用最大性能 **仅恢复点**SQL> truncate table system.test;表被截断。 SQL> 从 system.test 选择 count(*); COUNT(*)---------- 0 0 DGMGRL>将数据库“SBDB1”转换为物理备用;无法连接到数据库ORA-12545:连接失败,因为目标主机或对象不存在失败。警告:您不再连接到 ORACLE。请完成以下步骤并重新发出 CONVERT 命令: 关闭数据库“SBDB1”的实例“SBDB1” 启动并挂载数据库“SBDB1”的实例“SBDB1”

手动启动备用数据库进行挂载状态,后续的 dgmgrl 会自动恢复到 sbdb1 ,但在打开过程中经常在最后一步死掉。相关日志如下:

ALTER DATABASE CONVERT TO PHYSICAL STANDBY (SBDB1) 终止 pid 为 3013,3017,3019(所有 RFS)的 3 个进程,以禁止当前和未来的 RFS 连接。由操作系统进程 3025Fl 请求ashback Restore StartFlashback Restore CompleteDrop 保证还原点 保证还原点已删除清除备用激活 ID 1736364983 (0x677ed3b7)主数据库控制文件是使用“MAXLOGFILES 192”子句创建的。最多有 188 个备用重做日志文件的空间在备用数据库上使用以下 SQL 命令数据库创建与主数据库匹配的备用重做日志文件:ALTER DATABASE ADD STANDBY LOGFILE 'srl1.f' SIZE 524288 00;ALTER DATABASE ADDSTANDBY LOGFILE 'srl2.f' SIZE 52428800;ALTER DATABASE ADD STANDBY LOGFILE 'srl3.f' SIZE 52428800; ALTER DATABASE ADD STANDBY LOGFILE 'srl4.f' SIZE 52428800;ALTER DATABASE ADD STAND BY LOGFILE 'srl5.f' SIZE 52428800;等待所有非当前 ORL 归档...所有非当前 ORL 已归档。清除online redo logfile 1 /u01/app/oracle/oradata/SBDB1/SBDB1/onlinelog/o1_mf_1_fd4wmho5_.logClearing online log 1 of thread 1 order number 3Clearing online redo logfile 1completeClear online redologfile 2 /u01/app/oracle/oradata/SBDB1/SBDB1/onlinelog/o1_mf_2_fd4wmjq3_.logClearing online log 2 of thread 1equence number 4Clearing online redo logfile 2completeCompleted: alter database conversion tophysicalstandWed Apr 04 01:15:50 2023主数据库处于最大性能模式RFS[3]:分配给 RFS 进程 3029RFS[3]:为线程 1 序列选择日志 5 70 dbid 1729483220 分支 965667412Wed Apr 04 01:16:11 2023RFS[4]:分配给 RFS 进程 3031RFS[4] :为线程 1 序列选择日志 6 69 dbid 1729483220 分支 96566 7412Wed Apr 04 01:16:11 2023扩展控制文件第 11 节从 28 条记录到 203 条记录请求增加 175 条记录;添加了 7 个记录块Archived Logentry 29 添加了线程 1 序列 69 ID 0x6715d4d4 dest 1:Wed Apr 04 01:16:13 2023ARC2:成为活动心跳 ARCHWed Apr 04 01:17:13 2023alter 数据库 openData Guard Broker 正在初始化...< /pre>

最后一步会暂停一段时间,没关系,关闭abort,resta即可rt,就是这样;由于dgmgrl的存在,会自动添加命令,如下图:

SQL> select open_mode,database_role,protection_mode,flashback_on from v$database; OPEN_MODE DATABASE_ROLE PROTECTION_MODE FASHBACK_ON------------------------------------------------------------ - --------------------------------------------------只读并应用物理备用最大性能 NOSQL > select count(*) from system.test; COUNT(*)---------- 15386

为什么是自动的?检查数据库配置:

DGMGRL> show database verbose 'SBDB1';数据库 - SBDB1 角色:物理待机 预期状态:APPLY-ON 传输延迟:0 秒(1 秒前计算) 应用延迟:0 秒(1 秒前计算) 应用速率:0 字节/秒 实时查询:ON

3.2 启用快速启动故障转移

DGMGRL>启用fast_start故障转移错误:ORA-16651:不满足启用快速启动故障转移的要求Failed.DGMGRL>退出[oracle@12crac2 ~]$ oerr ora 1665116651, 0000, "不满足启用快速启动故障转移的要求"// *原因:无法完成启用快速启动故障转移的尝试//因为未满足一项或多项要求:/ // Data Guard 配置必须处于 Maxavailability // 或 MAXPERFORFORMANCE 保护模式。/// 主数据库和 // 快速启动故障转移目标备用数据库的 Logxptmode 属性必须 // 设置为 SYNC,如果配置保护模式设置为// MaxAvailability 模式。// - 如果配置保护模式设置为//,主数据库和// 快速启动故障转移目标备用数据库的 LogXptMode 属性必须设置为 ASYNC。 MaxPerformance 模式。//   - 主数据库和快速启动故障转移目标备用数据库都必须启用闪回。// - 在尝试之前,在主数据库 FastStartF ailoverTarget 属性中未指定有效的目标备用数据库// / 至 埃纳ble fast -start 故障转移,并且 Data Guard 配置中存在多个备用数据库。

简单地说:
1 确保代理配置为在最大可用性模式下运行。
2 在备用机器上启用主数据库和 sFlashback 数据库。当数据库恢复失败时使用此选项。
3启动观察者

启用数据库闪回并再次启用:

DGMGRL>enable fast_startfailoverEnabled.DGMGRL>showconfiguration配置-db保护模式:MaxAvailability数据库:db-主数据库警告:ORA-16819:快速启动故障转移观察器未启动 SBDB1- (*) 物理备用数据库 警告:ORA-16819:快速启动故障转移未启动 快速启动故障转移:已启用 配置状态:警告 
 [oracle@12crac2 ~]$ oerr ora 1681916819, 0000, "快速启动故障转移观察器未启动"// *原因:快速启动故障转移观察器未启动。 // 因此,快速启动故障转移无法在 ca 中发生// 主数据库故障。// *操作:使用例如 DGMGRL START OBSERVER 命令启动快速启动故障转移观察器。

启动观察器:

< pre>DGMGRL> startobserverObserver已启动

再次查看配置:

DGMGRL> show configuration Configuration - db Protection Mode: MaxAvailability Databases: db - Primary database   SBDB1 - (*) Physicalstandby数据库快速启动故障转移:ENABLED 配置状态:SUCCESS

3.3 切换
手动切换步骤:https://blog. 51cto.com/snowhill/1951592
现在简化一下,只需要一个命令就可以使用dgmgrl:SWITCHOVER TO <备用数据库名称>;

DGMGRL> switchover to 'SBDB1';Performing switchover现在,请稍候...操作需要连接到数据库“SBDB1”上的实例“SBDB1”正在连接到实例“SBDB1”...已连接。新主数据库“SBDB1”正在打开...操作需要启动实例“db1” “在数据库“db”上开始 i实例“db1”...无法连接到数据库ORA-12514:TNS:监听器当前不知道连接描述符中请求的服务失败。警告:您不再连接到ORACLE。请完成以下步骤来完成切换:启动数据库“db”的实例“db1”

不用担心此失败。 ,手动启动原主数据库完成切换;
切换完成后,检查:

DGMGRL> show configuration 配置 - db 保护模式:MaxAvailability Databases: SBDB1 - 主数据库 db - (* ) 物理备用数据库快速启动故障转移:已启用 配置状态:成功

切换回:

DGMGRL> 切换到 db 正在执行切换,请稍候...操作需要连接到数据库“db”上的实例“db1”正在连接到实例“db1”...已连接。新主数据库“db”正在打开...操作需要启动数据库“SBDB1”上的实例“SBDB1”启动实例“SBDB1” ...

如果有任何疑问请参考官方参考:https://docs.oracle.com/cd/E11882_01/server.112/e40771/sofo.htm#DGBKR385

四项dgmgrl调整参数:
4.1调整应用延迟
edit database 'SBDB1' set property DelayMins=1;
其实就是下面的命令:< /p>

更改系统设置 log_archive_dest_2='service="sbdb1"','LGWR ASYNC NOAFFIRM 延迟=1 可选压缩=禁用 max_failure=0 max_connections=1 重新打开=300 db_unique_name="SBDB1" net_timeout=30',' valid_for=(all_logfiles,primary_role)' SCOPE=BOTH;ALTER SYSTEM SWITCH ALL LOGFILE start (db1)ALTER SYSTEM SWITCH ALL LOGFILE Complete (db1)

4.2 调整异步同步模式
edit数据库 'SBDB1' set property LogXptMode=sync;
对应命令如下:
ALTER SYSTEM SET log_archive_dest_2='service="sbdb1"','LGWR SYNC AFFIRM 延迟=1 可选压缩=禁用 max_failure=0 max_connections=1reopen=300 db_unique_name="SBDB1" net_timeout=30','valid_for=(all_logfiles,primary_role)' SCOPE=BOTH;
当然都可以用broker配置,参数不要用sqlplus;< br/>五种相关错误处理

Broker错误一般是由case、数据库配置和broker配置不一致引起的。启用broker后,Dataguard相关配置最好由broker管理;
5.1 ora-16541

 DGMGRL> show configuration ORA-16541: database is not启用

该错误发生在一个节点上,一般是配置不一致

[oracle@12crac1 dbs]$ oerr ora 1654116541, 00000, "database is not启用"// *原因:数据库// *操作:选择一个启用的数据库,重新发出请求。

另外一个节点在网站上查看,一般报错不同

DGMGRL> 显示配置配置 - db Protection Mode:MaxAvailability 数据库:db - 主数据库警告:ORA-16792:可配置属性值与数据库设置不一致 SB DB1 - 物理备用数据库警告:ORA-16792:可配置属性值与数据库设置不一致 Fast-StartFailover:DISABLED

此错误是由于参数与dgmgrl不一致造成的。启用dgbroker后检查配置,发现变化是由log_file_name_convert和db_file_name_convert引起的。只需在另一个节点上进行以下配置

DGMGRL>编辑数据库db set property LogFileNameConvert='/u01/app/oracle/oradata/SBDB1/,+data';Property "logfilenameconvert"updatedDGMGRL>编辑数据库db设置属性 DbFileNameConvert='/u01/app/ oracle/oradata/SBDB1/,+data';属性“dbfilenameconvert”updatedDGMGRL> 编辑数据库 'SBDB1' 设置属性 DbFileNameConvert='+data,/u01/app/oracle/oradata/SBDB1 /';属性“dbfilenameconvert”updatedDGMGRL> 编辑数据库'SBDB1' 设置属性 LogFileNameConvert='+data,/u01/app/oracle/oradata/SBDB1/';属性“logfilenameconvert”更新DGMGRL> 启用配置DGMGRL> 显示配置配置 - db 保护模式:MaxAvailability 数据库:db - 主数据库 SBDB1 - 物理备用数据库快速启动故障转移:已禁用 配置状态:成功

5.2 ora-1 6820

DGMGRL> 显示配置
配置- db
保护模式:MaxAvailability
数据库:
SBDB1 - 主数据库
错误:ORA -16820:快速启动故障转移观察者不再观察此数据库
db - (*) 物理备用数据库
错误:ORA-16820:快速启动故障转移观察器不再观察此数据库
快速启动故障转移:已启用
配置状态:
错误

这个错误是废话,停止观察者然后启动观察者即可;

5.3 ora-16661

启用快速failover r后,关闭两者节点异常,重新启动数据库。通常,两个节点都是主节点。此时启动dgmgrl时会报:

DGMGRL> show configuration
Configuration - db
Protection Mode: MaxAvailability
Databases:
SBDB1 - 主数据库
错误:ORA-16820:快速启动故障转移观察器不再观察此数据库
db - (*) 物理备用数据库(已禁用)
ORA-16661:备用数据库需要恢复
快速启动故障转移:已启用

配置状态:
错误
另一个节点报告以下错误:
SQL> alter数据库打开;
更改数据库打开
*
第 1 行出现错误:
ORA-16649:可能的故障转移到另一个数据库会阻止此数据库
被打开
检查数据库状态也不正确:
SQL> select database_role,FLASHBACK_ON from v$database;

DataBase_role Flashback_ON


Primary yes

DGMGRL> 显示配置
ORA-16795:需要重新创建备用数据库
当您看到此错误时,不要实际重新创建备用数据库。确认您的配置没有问题后,直接在另一个数据库中重新创建备用数据库。节点:
DGMGRL>恢复数据库db
正在恢复数据库“db”,请稍候...
恢复数据库“db”成功
此后启动的节点将成为物理备用,再次停止观察者,启动观察者;

5.4 错误:ORA-16525:Data Guard 代理尚不可用
的 db_broker_start 参数主数据库或备份数据库设置不正确;
5.5 ORA-16797: 数据库未使用服务器参数文件
未使用 spfile 启动数据库

< p>5.6 ora-16610 主备库dg_broker_config_file_1/2参数设置不正确

 DGMGRL> show configurationConfiguration - 1 保护模式:Max性能数据库:prod2 - 主数据库备用 - 物理备用数据库快速启动故障转移:禁用配置状态:ORA-16610:命令“代理操作”正在进行DGM-17017:无法确定配置状态

查看 drcstandby.log< /p>

drcx: 无法打开配置文件“/home/oracle/broker/standby2.data” ORA-27037: 无法获取文件状态 Linux-x86_64 错误: 2: 没有这样的文件或目录 附加信息: 308/ 02/2023 10:52:38drcx: 无法打开配置文件“/home/oracle/broker/standby1.dat” ORA-27037: 无法获取文件状态 Linux-x86_64 错误: 2: 没有这样的文件或目录附加信息: 3DMON向侦听器注册服务standby_DGB08/02/2023 10:52:41

解决方案:

dgmgrl>禁用配置;sql>alter system set dg_broker_start=false;sys@备用>更改系统设置 dg_broker_config_file1='/home/oracle /broker/standby1.dat'; sys@standby>更改系统设置 dg_broker_config_file2='/home/oracle/broker/standby2.dat'; DGMGRL> 启用配置DGMGRL> 显示配置 配置 - 1 保护模式:MaxPerformance 数据库:prod2 - 主数据库备用 - 物理备用数据库 快速启动故障转移:DISABLED 配置状态:SUCCESS

以上是《如何在oracle 11g dataguard中使用dgmgrl》文章的全部内容,感谢您的阅读!相信大家都有一定的了解,希望分享的内容对大家有所帮助。如果您想了解更多知识,请关注行业资讯频道!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何在oracle 11g dataguard中使用dgmgrl

用户评论