主库resize datafile操作导致DG同步报错
[TOC]
一、问题描述
应用人员反馈ADG库,报表查询数据延迟。
二、原因排查
1. 检查DG同步状态
SQL> set line222
SQL> select process,status,thread#,sequence# from v$managed_standby;
PROCESS STATUS THREAD# SEQUENCE#
--------- ------------ ---------- ----------
ARCH CLOSING 1 613912
ARCH CLOSING 2 653575
ARCH CONNECTED 0 0
ARCH CLOSING 1 613913
RFS IDLE 0 0
RFS IDLE 0 0
RFS IDLE 0 0
RFS IDLE 2 653575
RFS IDLE 0 0
RFS IDLE 0 0
RFS IDLE 0 0
RFS IDLE 1 613914
12 rows selected.
复制
结论: 没有RMP进程,同步异常停止了。
2. 检查备库alert日志,查看MRP进程停止原因
Media Recovery Waiting for thread 2 sequence 653569 (in transit)
Recovery of Online Redo Log: Thread 2 Group 70 Seq 653569 Reading mem 0
Mem# 0: /oradata7/xxx/xxx/redo/redo70.log
MRP0: Background Media Recovery terminated with error 1237
Errors in file /u01/app/oracle/diag/rdbms/xxx/xxx/trace/xxx_pr00_7011.trc:
ORA-01237: cannot extend datafile 1502
ORA-01110: data file 1502: '/oradata5/xxx/xxx/datafile/xxx.318.1020330909'
ORA-19502: write error on file "/oradata5/xxx/xxx/datafile/xxx.318.1020330909", block number 1003648 (block size=8192)
ORA-27072: File I/O error
复制
结论:ORA-27072: File I/O error报错导致MRP进程中断,检查发现是/oradata5磁盘空不足,使用率已达到100%,经过检查,发现是因为主库执行了resize datafile 30G,而相对应的备库数据文件,所在的/oradata5数据盘空间不足,不够resize 到30G,导致MRP进程中断。
三、解决办法
1. 停止备库
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down.
复制
2. 移动数据文件到其他盘符
mv /oradata5/xxx/xxx/datafile/xxx.318.1020330909 /oradata7/xxx/xxx/datafile/xxx.318.1020330909
复制
3. 修改控制文件信息
SQL> startup mount
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2260088 bytes
Variable Size 864027528 bytes
Database Buffers 197132288 bytes
Redo Buffers 5517312 bytes
Database mounted.
SQL> alter system set standby_file_management=manual;
System altered.
SQL> alter database rename file '/oradata5/xxx/xxx/datafile/xxx.318.1020330909' to '/oradata7/xxx/xxx/datafile/xxx.318.1020330909';
Database altered.
SQL> alter system set standby_file_management=AUTO;
System altered.
复制
4. 启动同步
SQL> alter database open;
Database altered.
SQL> alter database recover managed standby database using current logfile disconnect;
Database altered.
复制
5. 再次检查同步
SQL> set line222
SQL> select process,status,thread#,sequence# from v$managed_standby;
PROCESS STATUS THREAD# SEQUENCE#
--------- ------------ ---------- ----------
ARCH CLOSING 2 653591
ARCH CLOSING 2 653590
ARCH CONNECTED 0 0
ARCH CLOSING 1 613928
RFS IDLE 0 0
RFS IDLE 0 0
RFS IDLE 0 0
RFS IDLE 0 0
RFS IDLE 0 0
RFS IDLE 0 0
RFS WRITING 1 613929
RFS WRITING 2 653592
MRP0 APPLYING_LOG 1 613916
13 rows selected.
复制
结论: DG同步恢复正常。
四、其他报错
最开始是想通过offline datafile 方式,在不关库的情况下移动报错的数据文件,但是执行过程中有报错。具体如下:
- 执行datafile 1052 offline drop 没有报错。(备库必须加drop,否则也报错)
- 移动数据文件到其他盘符,没有报错。
- rename datafile 操作开始报错。具体报错信息如下:
1. 报错信息
- 执行alter database rename file …命令,报错如下:
SQL> alter database rename file '/oradata5/xxx/xxx/datafile/xxx.318.1020330909' to '/oradata7/xxx/xxx/datafile/xxx.318.1020330909';
ORA-01124: cannot recover data file 1052 - file is in use or recovery
复制
- 重新online datafile,先执行recover datafile,但是执行报错:
SQL> recover datafile 1052;
ORA-00283: recovery session canceled due to errors
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done
SQL> recover datafile 1052 using backup controlfile;
ORA-00274: illegal recovery option USING
复制
所以,又将数据库重启至mount状态,rename datafile后,再open database。
2. 解决办法
在open状态下,直接执行online操作,并没有报错
SQL> alter database datafile 1052 online;
Database altered.
SQL> select status from v$datafile where file#=1052;
STATUS
--------------
RECOVER
SYS@ORCLCDB> SELECT FILE#,status FROM v$datafile_header where FILE#=1052;
FILE# STATUS
---------- --------------
1052 ONLINE
复制
结论:
1.直接执行online datafile 无报错,但是查询v$datafile中status仍然为recover状态,查询v$datafile_header 中status为online状态。
2.本来想着如果datafile 1052 一直是recover状态的话,就从主库重新备份控制文件,更换备库的,但是经过观察后,在MRP应用一段时间后,datafile 1052状态从recover变为online。
SQL> alter database recover managed standby database using current logfile disconnect;
Database altered.
SQL> select status from v$datafile where file#=1052;
STATUS
--------------
ONLINE
复制
最后修改时间:2022-11-02 09:58:41
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
备库修改了数据文件的位置,主库上不需要修改吗?备库的参数db_file_name_convert需不需要修改?
2年前

4