首页 > 数据库 >Oracle 11g物理备库转换Snapshot Standby压力测试步骤

Oracle 11g物理备库转换Snapshot Standby压力测试步骤

来源:互联网 2026-07-09 12:36:02

物理备库转换为SnapshotStandby前,需停止日志应用并处于MOUNT状态,必须配置FRA但无需开启闪回。转换后执行OPEN进入读写模式,完成压测后切回前,务必确保归档日志完整,否则恢复可能卡死。

先说几个核心判断:物理备库转Snapshot Standby这件事,流程本身不算复杂,但踩坑的人真不少。大部分报错其实都源于两个问题——操作顺序乱了、前置条件没卡死。下面就把物理备库转Snapshot Standby的流程从头拆解一遍,把最容易出问题的节点单独拎出来说。

物理备库转Snapshot Standby:先停日志应用,必须严格遵守顺序

第一步,把日志应用停下来。这是铁律,没商量。如果直接在日志应用未取消的状态下执行 alter database convert to snapshot standby,系统会毫不客气地甩出 ORA-38784ORA-01153。别指望绕过去,Oracle在这件事上不讲情面。

长期稳定更新的攒劲资源: >>>点此立即查看<<<

Oracle 11g物理备库转换Snapshot Standby压力测试步骤

备库必须处于 MOUNT 状态且日志应用已取消

这里有个细节容易被忽略:物理备库在转换前,不能是 READ ONLY WITH APPLY 状态。哪怕日志应用只差一秒的延迟,系统都会报错。常见的错误提示是 ORA-38784: Cannot create restore point... 或者 ORA-01153: an incompatible media recovery is active。这两种错误本质上都在说同一件事——你还没把日志应用停干净。

物理备库转Snapshot Standby的正确操作顺序很明确:

  • 先执行 alter database recover managed standby database cancel;,把日志应用彻底停掉
  • 然后检查状态:查 v$databaseopen_mode 必须显示 MOUNTEDdatabase_rolePHYSICAL STANDBY
  • 如果备库当前是 OPEN READ ONLY 状态,那就先 shutdown immediatestartup mount,不用想走捷径

闪回恢复区(FRA)必须已配置,但无需开启 Flashback Database

这个限制让不少人困惑:没开闪回能不能转?答案是可以,但有一个前提——DB_RECOVERY_FILE_DESTDB_RECOVERY_FILE_DEST_SIZE 这两个参数必须配好。缺一个,转换就会失败。至于 FLASHBACK_ON = NO,完全不影响Snapshot Standby功能,Oracle内部会自动创建一个guaranteed restore point来完成切换,不需要你手动开闪回。

检查方式也简单:

  • show parameter db_recovery_file_dest —— 路径和大小都不能为空
  • select FLASHBACK_ON from v$database; —— 返回 NO 是正常情况
  • 如果是RAC环境,所有节点都要确保FRA配置一致,而且至少有一个节点启动到 MOUNT 状态后再执行转换

转换后需显式 alter database open 才能读写

这个步骤很多人会跳过。实际上,alter database convert to snapshot standby 执行完,数据库只是改了角色和状态,仍然停留在 MOUNTED 阶段。这时候记着,你还没法连进去建表或跑查询。必须紧跟着执行 alter database open,才能进入 READ WRITE 模式。

怎么确认转换成功?

  • select database_role, open_mode from v$database; 返回的结果应该是 SNAPSHOT STANDBYREAD WRITE
  • 这时候建表、跑SQL、压测都没问题。所有在Snapshot Standby期间的变更,切回物理备库时都会自动丢弃,不用担心污染主库数据
  • 注意一个细节:主库的日志仍然持续传输并归档到备库(ARCHIVED_LOG 会持续增长),只是MRP进程停止了,日志不被应用

压力测试完成后切回物理备库的关键点

这里才是整个物理备库转Snapshot Standby流程中最容易被忽视的地方。切回去不是简单重启一下或者执行个反向命令就完事的。真正容易出问题的点是:切回前必须确认主库传来的所有归档日志在备库本地可用,否则恢复过程会卡在“等待缺失日志”上,进程僵在那儿,进退两难。

推荐的步骤:

  • 先停掉测试负载,执行 shutdown immediate
  • 启动到 MOUNT 状态:startup mount
  • 执行 alter database convert to physical standby; —— 这一步会自动删除内部创建的restore point
  • 再启动日志应用:alter database recover managed standby database using current logfile disconnect;
  • 最后检查 v$archive_gap 是否为空,v$managed_standby 中MRP进程是否显示 RUNNING

值得警惕的是:如果主库在Snapshot期间产生了大量归档日志,而备库的归档目录空间不足,或者网络出现中断,切回时就可能面临手动拷贝缺失归档或者使用增量备份恢复的尴尬局面。这一点在生产环境里压测前一定要提前评估好归档吞吐量和存储余量,别等出事了再想办法补救。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备2026025700号-3 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。