DG之主库、备库切换(物理备库)

本文详细介绍了在Oracle Data Guard环境下,如何进行主库与备库的切换操作,包括启动关闭顺序、关键步骤和检查点,确保在切换过程中数据的一致性和系统的可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DG之主库、备库切换


一.开库与关库顺序

开库顺序

先启备库,再启主库(启动监听、打开告警日志)

关库顺序

先关主库,再关备库

 

二.主备库切换

1、操作过程一览

步骤1:启动备库、监听、告警;
步骤2:启动主库、监听、告警;
步骤3:主库(bj)查询信息

SQL>selectname,dbid,database_role,protection_mode from v$database;




步骤4:备库(sh)上做recover

SQL>recovermanaged standby database disconnect from session;

步骤5:备库上插入数据

SQL>insert into scott.emp1 select * from scott.emp;

报错



虽然备库处于open状态,但它是一个read-only状态。

步骤6:查看主库(bj)、备库(sh)日志是否一致

SQL>selectmax(sequence#) from v$archived_log where name is not null;

或SQL>selectmax(sequence#) from v$archived_log

举例:

主库:


备库:

<think>我们正在处理用户关于DG缺少RFS进程的问题。根据用户需求,我们需要提供解决方案。首先,我们需要理解RFS进程的作用:RFS(RemoteFileServer)进程在DataGuard环境中用于接收来自主库的redo数据并写入到standbyredolog文件中。如果缺少RFS进程,那么主库的redo传输将无法完成,导致数据同步中断。可能的原因和解决方案如下:1.**检查日志传输模式**:-确认主库的日志传输模式(ARCH或LGWR)。如果是ARCH模式,则上应该有一个ARCH进程负责接收;如果是LGWR,则需要RFS进程。-如果是使用LGWR异步传输(ASYNC)或同步传输(SYNC),则必须启动RFS进程。2.**检查网络连接和监听**:-确保主库之间的网络连接正常,并且的监听器正常运行。-检查主库的`LOG_ARCHIVE_DEST_n`参数配置是否正确,特别是`SERVICE`指向的TNS别名是否正确。3.**检查状态**:-使用`ps-ef|greprfs`在操作系统上检查RFS进程是否存在。如果没有,可能是由于redo传输服务没有启动。-检查的alertlog,查看是否有相关错误信息。4.**启动的MRP进程**:-如果处于物理模式,需要启动托管恢复进程(MRP)。RFS进程通常由MRP进程启动。-在上执行:`ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEUSINGCURRENTLOGFILEDISCONNECT;`5.**检查DataGuardBroker配置(如果使用Broker)**:-如果使用了DataGuardBroker,检查Broker状态:`dgmgrl/showconfiguration`-确保状态为`APPLY-ON`,如果不是,可以尝试重新启用:`dgmgrl/enabledatabase<standby_db_name>`6.**重启的监听和实例**:-尝试重启的监听器:`lsnrctlstop`然后`lsnrctlstart`-重启实例(如果允许的话)。7.**检查主库的归档进程**:-在主库上,检查归档进程状态:`ps-ef|grep-earc-eora_`-确保主库的ARCn进程或LGWR进程正在运行。8.**检查参数文件中的设置**:-在上,检查参数`FAL_SERVER`和`FAL_CLIENT`是否设置正确(FAL指FetchArchiveLog,用于主动获取缺失的日志)。-检查`LOG_ARCHIVE_CONFIG`参数,确保DG_CONFIG设置正确。9.**尝试手动注册**:-在上,可以尝试手动注册到主库:`ALTERSYSTEMREGISTER;`10.**检查防火墙和权限**:-确保主库之间的端口(通常为1521)没有被防火墙阻止。-确保Oracle用户有足够的权限。如果以上步骤无法解决问题,可能需要进一步分析日志文件。引用说明:[^1]:参考了ORA-16552错误可能与DataGuardBroker进程启动失败相关,但用户问题中未直接出现此错误,因此作为背景参考。[^2]:提到了FlashbackDatabase,但与本问题无直接关联,故不引用。根据用户需求,我们提供了上述解决方案。接下来生成相关问题。§§相关问题§§1.如何检查DataGuard环境中主库的日志传输状态?2.RFS进程在DataGuard中具体负责什么工作?3.无法接收主库的redo数据可能有哪些原因?</think>### DG缺失RFS进程的解决方案 RFS(Remote File Server)进程是Oracle Data Guard的关键组件,负责在接收主库传输的Redo数据。缺失该进程会导致数据同步中断。以下是系统化的排查与解决方案: --- #### **1. 检查基础配置** - **验证`LOG_ARCHIVE_DEST_n`参数** 在主库执行: ```sql SELECT dest_name, status, error FROM v$archive_dest WHERE dest_id = [目标ID]; ``` 确认: - `STATUS`为`VALID` - `SERVICE`指向正确的TNS别名(如`SERVICE=standby_svc`) - 传输模式(`SYNC`/`ASYNC`)与网络匹配 - **检查监听状态** 在执行: ```bash lsnrctl status ``` 确保监听器正常运行,且主库能通过TNS别名连接。 --- #### **2. 启动RFS进程** - **手动激活MRP进程** 在执行: ```sql ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT; ``` MRP(Managed Recovery Process)会自动启动RFS进程接收Redo数据。 - **检查进程状态** 在操作系统执行: ```bash ps -ef | grep rfs # Linux/Unix tasklist | findstr rfs # Windows ``` 正常应显示类似: ```plaintext oracle 12345 1 0 10:00 ? 00:00:00 ora_rfs_stdby ``` --- #### **3. 诊断网络问题** - **测试主连通性** 在主库用`tnsping`验证TNS连接: ```bash tnsping standby_svc ``` 若超时,检查: - 防火墙是否开放1521端口 - `tnsnames.ora`中服务名的配置一致性 - 网络延迟(`ping`IP) - **查看日志错误** 检查主库`alert.log`和`alert_stdby.log`,定位类似错误: ```plaintext ORA-12541: TNS:no listener ORA-12170: TNS:Connect timeout occurred ``` --- #### **4. Data Guard Broker状态修复** 若使用Broker: 1. 检查配置状态: ```bash dgmgrl / DGMGRL> SHOW CONFIGURATION; ``` 2. 重启Broker进程: ```sql ALTER SYSTEM SET DG_BROKER_START=FALSE; -- 停止 ALTER SYSTEM SET DG_BROKER_START=TRUE; -- 启动 ``` 3. 重新启用: ```bash DGMGRL> ENABLE DATABASE <standby_db_name>; ``` --- #### **5. 高级排查** - **强制注册服务** 在执行: ```sql ALTER SYSTEM REGISTER; -- 刷新服务注册 ``` - **重置Redo传输** 在主库重启日志传输: ```sql ALTER SYSTEM ARCHIVE LOG CURRENT; -- 触发归档 ALTER SYSTEM SWITCH LOGFILE; -- 切换日志 ``` --- #### **根本原因总结** | 原因 | 解决方案 | |---------------------|-----------------------------------| | 主库参数配置错误 | 修正`LOG_ARCHIVE_DEST_n`的`SERVICE` | | 监听器故障 | 重启监听或检查`listener.ora` | | MRP进程未启动 | 执行`RECOVER MANAGED STANDBY` | | 网络阻塞 | 开放端口/检查路由 | | Broker进程异常 | 重启DG Broker[^1] | > **关键提示**:90%的RFS缺失问题由网络中断或参数配置错误引起。优先检查`tnsping`连通性和主库归档目标状态。 [^1]: 参考DG Broker进程启动失败的处理方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值