资讯专栏INFORMATION COLUMN

Rman Duplicate踩坑之路

IT那活儿 / 1817人阅读
Rman Duplicate踩坑之路

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

 




某核心系统业务需要搭建DG,数据库版本11204,数据量20T,采用RMAN DUPLICATE方式进行搭建。


本文分享下搭建过程中踩到的坑。

 

坑-1:ORA-15041

 

20T数据量duplicate了9个小时,眼看快要结束了,结果报错了!心里顿时一万个***。
从Duplicate脚本的报错看不明显:
input datafile file number=00372 name=+DG_SSD_DATA1/TESTDATA/datafile/d_mt_01.11.dbf
RMAN-03009: failure of backup command on c1 channel at 03/02/2022 21:19:58
ORA-17628: Oracle error 19505 returned by remote Oracle server
continuing other job steps, job failed will not be re-run
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 03/02/2022 21:21:47
RMAN-05501: aborting duplication of target database
RMAN-03015: error occurred in stored script Memory Script
检查备库alert日志报错磁盘空间不足,但实际上备库分配的磁盘是大于主库磁盘,且检查备库剩余空间有4T左右:
ASMCMD> lsdg
State Type Total_MB Free_MB Usable_file_MB Name
MOUNTED EXTERN 21964800  4239454     4239454
ORA-19505: failed to identify file "+DG_SSD_DATA1/TESTDATA/datafile/tbs_csp_pub_dat.3.dbf"
ORA-17502: ksfdcre:4 Failed to create file +DG_SSD_DATA1/TESTDATA/datafile/tbs_csp_pub_dat.3.dbf
ORA-15041: diskgroup "+DG_SSD_DATA1" space exhausted
怀疑是磁盘未rebalance完成,而实际当前未发生rebalance,查询v$asm_disk视图发现asm_rhdisk67这块50G的盘(其它数据盘都是200G)free_mb为0,猜测是磁盘大小不一致在asm_rhdisk67耗尽后导致rebalance异常:
SQL> select * from v$asm_operation;
no rows selected
SQL> select STATE,OS_MB,TOTAL_MB,FREE_MB,NAMe,path,HEADER_STATUS from v$asm_disk;
204800 204800 204672 +DG_SSD_DATA1_0060 /dev/asmdisk/asm_rhdisk73 MEMBER
51200 51200 0 +DG_SSD_DATA1_0054 /dev/asmdisk/asm_rhdisk67 MEMBER
剔除该盘后,重新发起duplicate恢复正常
SQL> alter diskgroup DG_SSD_DATA1 drop disk DG_SSD_DATA1_0054;

 

坑-2:ORA- 16058

 

重新duplicate后没有再报磁盘不足错误,观察所有数据文件已复制完成,最后抛出ORA-16058错误,从报错看缺失的数据文件是某备份厂家用于数据同步创建到nas盘中的,
实际上数据库中并没有这部分数据文件:
channel c16: reading from backup piece /home/oracle/admdata/test4/s40ne8rt_1_1.dbf
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 03/03/2022 06:57:14
RMAN-05501: aborting duplication of target database
RMAN-03015: error occurred in stored script Memory Script
ORA-19870: error while restoring backup piece /home/oracle/admdata/test4/p40ne63n_1_1.dbf
ORA-19505: failed to identify file "/home/oracle/admdata/test4/p40ne63n_1_1.dbf"
ORA-27037: unable to obtain file status
IBM AIX RISC System/6000 Error: 2: No such file or directory
Additional information: 3
检查主备库控制文件中并没有记录缺失的数据文件,asm磁盘中主库归档已经全部同步过来。
尝试起到read only状态,启动成功并成功应用前期传输过来的归档。此时打开实时应用后发现MRP进程始终在等待日志,RFS进程无法接受日志,检查主库alert日志提示备库并没有mount,实际上备库当前已经open:
Thread 1 advanced to log sequence 782171 (LGWR switch)
Current log# 3 seq# 782171 mem# 0: +DG_SSD_DATA1/TESTDATA/onlinelog/redo_a31.log
Current log# 3 seq# 782171 mem# 1: +DG_SSD_DATA1/TESTDATA/onlinelog/redo_a32.log
******************************************************************
LGWR: Setting active archival for destination LOG_ARCHIVE_DEST_2
******************************************************************
Error 16058 for archive log file 3 to c5oyy6
Errors in file /oracle_log/diag/rdbms/orcl/orcl01/trace/orcl01_nsa2_37095956.trc:
ORA-16058: standby database instance is not mounted
Error 16058 for archive log file 3 to orcl01
*** 2022-03-03 09:28:36.788 2917 krsi.c
krsi_dst_fail: dest:2 err:16058 force:0 blast:1
ORA-16058: standby database instance is not mounted
查阅相关资料显示,该报错是由于缺失文件导致,所以问题还是需要回到备份到nas盘的数据文件出现在duplicate复制中。
了解到该备份厂家备份的原理是通过rman copy到文件系统中的,而当RMAN做COPY时,会在v$datafile_copy中为新文件插入一条记录,当我在做duplicate过程中会去读v$datafile_copy的记录,检查该备份发起的时间点和我发起duplicate的时间点重合,所以会导致上述错误
好了,问题产生原因明确了,开始处理问题吧:
step1. 
首先确认v$datafile_copy中记录的文件:
RMAN> list copy of database;(list datafilecopy all)
List of Datafile Copies
=======================
Key File S Completion Time Ckp SCN Ckp Time
------- ---- - ------------------- ---------- -------------------
66159   354  X 2022-03-02 06:45:51 17711013044918 2022-03-02 03:06:22
/home/oracle/admdata/yy4/data_D-ORAYY4_I-3895103819_TS-I_LOG_02_FNO-354_gj0dsk1h.dbf
…………………………..
select count(*) from v$datafile_copy where deleted=NO ;
COUNT(*)
------------------
836
step2. 
开始清理v$datafile_copy中记录的文件:
语法:change datafilecopy  uncatalog;
RMAN> change datafilecopy 66488  uncatalog;
……………………….
OR:
RMAN> delete datafilecopy all;
确认:
RMAN> list copy of database;
specification does not match any datafile copy in the repository
RMAN> list datafilecopy all;
specification does not match any datafile copy in the repository
select count(*) from v$datafile_copy where deleted=NO ;
step3. 
重启备库,开启实时应用,观察日志已正常传输过来:
alter database recover managed standby database disconnect from session
Attempt to start background Managed Standby Recovery process (oyy6a)
Thu Mar 03 10:38:04 2022
MRP0 started with pid=85, OS id=6620784
MRP0: Background Managed Standby Recovery process started (oyy6a)
Archived Log entry 300 added for thread 1 sequence 782150 rlc 845074400 ID 0xda3fe1 dest 2:
Thu Mar 03 10:38:06 2022
Archived Log entry 301 added for thread 1 sequence 782151 rlc 845074400 ID 0xda3fe1 dest 2:
RFS[12]: Opened log for thread 1 sequence 782153 dbid -399863477 branch 845074400
RFS[7]: Opened log for thread 1 sequence 782154 dbid -399863477 branch 845074400
Archived Log entry 302 added for thread 1 sequence 782152 rlc 845074400 ID 0xda3fe1 dest 2:

 

坑-3:RNAN-05517

 

Duplicate过程中还有个小错误,这里也作为一个案例分享下吧。
RMAN报错tempfile和目标数据库冲突,检查备库端tempfile文件实际上是没有传输过来:
RMAN-03002: failure of Duplicate DD conmand at 03/1/2022 2:11:16
RMAN-05501: aborting duplication of target database
RNAN-05517: tempfile +DG DG_SSD_DATA1/TESTDATA/tempfile/temp.5.dbf conflicts with File used by target database
RNAN-05517: tempfile +DG DG_SSD_DATA1/TESTDATA/tempfile/temp.4.dbf conflicts with File used by target database
RNAN-05517: tempfile +DG DG_SSD_DATA1/TESTDATA/tempfile/temp.3.dbf conflicts with File used by target database
RNAN-05517: tempfile +DG DG_SSD_DATA1/TESTDATA/tempfile/temp.2.dbf conflicts with File used by target database
RNAN-05517: tempfile +DG DG_SSD_DATA1/TESTDATA/tempfile/temp.1.dbf conflicts with File used by target database
查看备库配置的db_file_name_convert参数配置看似问题不大,怀疑是tempfile和datafile不在一个目录导致无法传输:
修改前:
*.db_file_name_convert=+DG_SSD_DATA1/TESTDATA/datafile/,+DG_C4OXY6_SSD_DATA1/c4oxy6/datafile/
修改后:
*.db_file_name_convert=+DG_SSD_DATA1/TESTDATA/datafile/,+
DG_SSD_DATA1/TESTDATA/datafile/
,+DG_SSD_DATA1/TESTDATA/tempfile/,+DG_SSD_DATA1/TESTDATA/tempfile/
调整之后重新发起duplicate,temp文件正常传输。

 

结 语

 

以上就是本次Duplicate过程踩到的3个坑,20T数据量,发起一次10小时左右,来回倒腾了好几次,着实不容易,不过也收获了不少经验,希望以上分享能给大家带来帮助。



本文作者:周 庆

本文来源:IT那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129480.html

相关文章

  • pg_rman备份工具(下)

    pg_rman备份工具(下) img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; marg...

    不知名网友 评论0 收藏1409
  • RxDB:indexedDB的踩坑之路

    摘要:的踩坑之路目前国内社区关于的资料较少,这篇文章是为了记录自己使用中遇到的一些问题解决总结,不会涉及到基本知识的科普,如果有同学有兴趣,再另外开一篇文章吧。这也是一个先这样吧,想到什么再写咯 RxDB:indexedDB的踩坑之路 目前国内社区关于RxDB的资料较少,这篇文章是为了记录自己使用中遇到的一些问题解决总结,不会涉及到基本知识的科普,如果有同学有兴趣,再另外开一篇文章吧。 sh...

    Scott 评论0 收藏0
  • Windows平台下Oracle数据库备份脚本

    摘要:以下脚本是我在项目工作中使用的备份脚本,脚本都是自己写的。简介此套脚本可以实现对数据库实现全备份和增量备份。综合以上两种利弊,比较好的方式是在出现丢失备份或的情况下,通知管理员处置,手工处理之后备份脚本运行恢复正常。 以下脚本是我在项目工作中使用的备份脚本,脚本都是自己写的。但在使用过程中,感觉还有提供空间,我这个人有点懒,所以想用将脚本开源出来的方式督促自己完善这一套脚本。大家如果对...

    tomorrowwu 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<