一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Oracle Data Guard如何配置Standby Redo Log

时间:2026-08-28 09:30:48 编辑:袖梨 来源:一聚教程网

必须手动创建Standby Redo Log,因Oracle不会自动创建;主库重做流需先写入SRL,MRP进程才能读取应用,否则RFS收日志后无处写,MRP卡在WAIT_FOR_LOG。

备库没配 Standby Redo Log,REDO APPLY 就跑不起来——哪怕日志传过去了,也会卡在 WAIT_FOR_LOG 状态。

为什么必须手动创建 Standby Redo Log?

Oracle 不会自动创建 SRL,它只复用已有的 Online Redo Log(但这是错的)。主库传来的重做流必须先写入 Standby Redo Log,MRP 进程才能从中读取并应用。没 SRL,RFS 进程收到日志后无处可写,v$managed_standbyRFS 状态可能正常,但 MRP0 一直卡在 WAIT_FOR_LOG

  1. 数量建议:至少比主库 Online Redo Log 多一组(例如主库有 3 组,备库至少建 4 组)
  2. 大小必须与主库 Online Redo Log 完全一致(查 v$log.bytes 确认)
  3. 组号无需连续,但不能和 Online Redo Log 组号冲突(查 v$log.group#v$logfile.group#
  4. 每个组至少含两个成员(推荐镜像),路径需符合备库实际存储结构(ASM 或文件系统)

创建 SRL 的正确命令和常见错误

必须在备库 MOUNT 状态下执行,且不能用 ALTER DATABASE OPEN 后再建——会报 ORA-01156。

  1. 标准语法:ALTER DATABASE ADD STANDBY LOGFILE GROUP 101 ('+DATA/stby/redo101a.log', '+DATA/stby/redo101b.log') SIZE 200M;
  2. 如果用文件系统,路径要真实存在且 Oracle 用户有写权限,例如:'/u02/oradata/stby/srl01a.log'
  3. 别直接复制主库路径——比如主库是 +DATA/orcl/...,备库必须改成 +DATA/stby/...,否则后续 LOG_FILE_NAME_CONVERT 映射会失效
  4. 建完立刻查:SELECT GROUP#, SEQUENCE#, STATUS, BYTES/1024/1024 FROM V$STANDBY_LOG;,STATUS 应为 UNASSIGNED

配完 SRL 还启动不了 MRP?检查这三点

SRL 存在 ≠ MRP 能用。很多 DBA 建完就以为万事大吉,结果 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT; 执行后,v$managed_standbyMRP0 状态仍是 NOT APPLYINGWAIT_FOR_LOG

  1. 确认备库是 MOUNTED 状态(不是 READ ONLYOPEN):SELECT OPEN_MODE FROM V$DATABASE; 必须返回 MOUNTED
  2. 确认 STANDBY_FILE_MANAGEMENT=AUTOSHOW PARAMETER standby_file_management),否则新增数据文件时会中断应用
  3. 确认 LOG_FILE_NAME_CONVERT 已正确配置且重启过备库——SRL 文件路径若仍指向主库 ASM 磁盘组名(如 +DATA/orcl/...),MRP 启动时会因重命名失败而静默退出

ORA-00268:删 SRL 前务必停 MRP

想清理旧 SRL?先取消恢复,否则必报 ORA-00268: cannot delete archived log file - in use(实际是 SRL 被 MRP 锁住)。

  1. 正确顺序:ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; → 等 v$managed_standbyMRP0 消失 → 再 ALTER DATABASE DROP STANDBY LOGFILE GROUP 101;
  2. 如果已报 ORA-00268,别硬删,先查 SELECT PROCESS, STATUS FROM V$MANAGED_STANDBY WHERE PROCESS = 'MRP0';,确认是否真停了
  3. 重启备库后未重建 SRL 是常见疏漏——SHUTDOWN IMMEDIATE + STARTUP MOUNT 后,SRL 依然存在,但状态可能异常,建议重建前先 DROP 干净再 ADD

最易被忽略的是:SRL 路径必须和 LOG_FILE_NAME_CONVERT 的目标端完全一致,哪怕只差一个斜杠或大小写,MRP 启动时都不会报错,而是默默跳过该组——你得去 v$standby_log 里逐行核对 MEMBER 列的实际路径。

热门栏目