如何在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 字节/秒 实时查询:ON3.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启用 pre>该错误发生在一个节点上,一般是配置不一致
[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 pre>此错误是由于参数与dgmgrl不一致造成的。启用dgbroker后检查配置,发现变化是由log_file_name_convert和db_file_name_convert引起的。只需在另一个节点上进行以下配置 p>
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 代理尚不可用
< p>5.6 ora-16610 主备库dg_broker_config_file_1/2参数设置不正确
的 db_broker_start 参数主数据库或备份数据库设置不正确;
5.5 ORA-16797: 数据库未使用服务器参数文件
未使用 spfile 启动数据库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》文章的全部内容,感谢您的阅读!相信大家都有一定的了解,希望分享的内容对大家有所帮助。如果您想了解更多知识,请关注行业资讯频道!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何在oracle 11g dataguard中使用dgmgrl