Oracle DG强制激活 备库

本文介绍如何在Oracle 10g及11g中激活StandbyDB进行测试,同时保持其容灾能力。通过设置Flash Recovery Area、创建还原点、激活与闪回StandbyDB,以及利用11g的Snapshot Standby Database特性,实现测试与生产环境隔离的同时,保证数据安全性。
部署运行你感兴趣的模型镜像

在实际运营环境中,我们经常碰到类似这样的需求,譬如想不影响现网业务评估DB补丁在现网环境中运行的时间,或者是想在做DB切换前想连接Standby DB做实际业务运行的测试,如果在9i版本的时候,想做到这样,在不搭建新测试环境的前提下,可以将Standby DB激活后进行测试,但是激活后的Standby DB将不能再用于容灾,必须重建Standby DB。在10g以及11g之后,可以利用新特性很好的解决这个问题,激活的Standby DB可以闪回到激活前的状态,继续参与容灾,而不需要重建。


下面简单说明下实施的步骤:
1:确保设置了Flash Recovery Area。
SQL> show parameter db_recovery


NAME                                TYPE                  VALUE
------------------------------------ ---------------------- ------------------------------
db_recovery_file_dest                string                /data1/flash_recovery_area
db_recovery_file_dest_size          big integer            80G


如果没设置,请使用alter system命令进行设置,需要重启DB。
2:取消Standby DB的同步,创建可保障的还原点。
SQL> alter database recover managed standby database cancel;
SQL> create restore point beforetest guarantee flashback database;


3:激活Standby库进行测试
SQL> alter database activate standby database;
SQL> alter database open;
测试Standby DB已激活并可写打开,之后可以开始进行测试。


4:将激活的Standby 库闪回并重新转换为Standby DB。
SQL> startup mount force
SQL> flashback database to restore point beforetest;
SQL> alter database convert to physical standby ;


5:删除之前创建的还原点并重新开启同步
SQL> startup mount force
SQL> drop restore point beforetest;
SQL>  alter database recover managed standby database disconnect from session;


说明在这个过程中,主库到备库的日志传输会报错,建议在主库上将到Standby DB的日志传输先停止:
SQL> alter system set log_archive_dest_state_2=defer;
等闪回后再重新启用日志传输:
SQL> alter system set log_archive_dest_state_2=enable;


oracle 11g环境下:
步骤更简单,11g中加入了Snapshot Standby Database的新特性,其实也就是上面10g功能的一个包装而已,唯一不同的是在转换为读写模式后任然可以继续接受主库过来的归档日志。
步骤如下:
1:取消日志应用
SQL> alter database recover managed standby database cancel;


2:重启并转换成Snapshot Standby Database。
SQL> shutdown immediate;
SQL> startup mount
SQL> alter database convert to snapshot standby;


3:打开后可进行读写相关测试
SQL> alter database open;


4:重新转换成physical Standby并开启同步
SQL > shutdown immediate
SQL> startup mount
SQL> alter database convert to physical standby;
SQL> shutdown immediate;
SQL> startup nomount
SQl> alter database mount standby database;
SQL> alter database open;
SQL> alter database recover managed standby database disconnect from session;


需要注意的点:
创建的还原点必须在闪回后进行删除,否则闪回恢复区可能会被撑满,导致DB Hang住。11g中不用担心这个问题,在重新转换为physical standby时会自动进行还原点删除。

转载于:https://www.cnblogs.com/youngerger/p/8578006.html

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<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、付费专栏及课程。

余额充值