Oracle 主从库目录不一致(异路径)的n种处理方案及效果

22 篇文章 3 订阅
本文详细描述了在Oracle数据库中复制数据时,db_create_file_dest、db_file_name_convert和log_file_name_convert参数的作用和设置注意事项,包括它们对数据文件和redo文件的影响,以及不同配置下的错误处理和解决方法。
摘要由CSDN通过智能技术生成

       最近遇到了复制数据(DUPLICATE TARGET DATABASE TO xxx)的时候 Oracle 源和目标库目录不一致的问题,比较初级但也踩到一些坑,整理记录一下。主从库搭建的时候注意事项其实也类似,而且更通用,所以标题写的是主从库目录。

一、 参数含义

  • db_create_file_dest:设置后开启OMF,创建数据文件、redo文件时不需手动指定路径
  • db_file_name_convert:主、从库数据文件目录转换对应,如果有多个,需要逐一指明。建议直接指定到数据文件上一层目录,否则其中子目录必须在从库中存在(参考后面案例)。
  • log_file_name_convert:主、从库redo文件目录转换对应,如果有多个,需要逐一指明。注意事项同上。

优先级:

db_create_file_dest db_file_name_convert 与 log_file_name_convert > 不设置

二、 设置效果

为方便理解,从库以下面参数配置为例:

db_create_file_dest='/u01/erpuat/db/apps_st/data/'

db_file_name_convert='/u01/erpdev/db/apps_st/data/erpdev/datafile/','/u01/erpuat/db/apps_st/data/erpuat/datafile/','/u01/erpdev/db/apps_st_02/data/erpdev/datafile/','/u01/erpuat/db/apps_st_02/data/erpuat/datafile/'
log_file_name_convert ='/oracle/fra/erpdev/onlinelog','/oracle/fra/erpuat/onlinelog','/u01/erpdev/db/apps_st/data/erpdev/onlinelog','/u01/erpuat/db/apps_st/data/erpuat/onlinelog'

1. 设置db_create_file_dest

       无论是否设置convert参数,数据文件、redo文件均放在db_create_file_dest目录下(会自动创建子目录)。如果主库数据文件分在多个目录,从库会合并放在该目录,但要特别注意空间问题。

数据文件、redo文件:/u01/erpuat/db/apps_st/data/

2. 仅设置db_file_name_convert

数据文件按指定路径替换,redo文件按照主库目录。如果有不存在的,会遇到报错。

数据文件:/u01/erpuat/db/apps_st/data/erpuat/datafile/ 与 /u01/erpuat/db/apps_st_02/data/erpuat/datafile/

redo文件:/oracle/fra/erpdev/onlinelog 与 /u01/erpdev/db/apps_st/data/erpdev/onlinelog

目录不存在报错如下

注意它没有直接报目录不存在,但写出了报错的数据文件路径,可以自己在从库检查。

input datafile file number=00003 name=/u01/erpdev/db/apps_st/data/erpdev/datafile/o1_mf_test_da_os0rabc9_.dbf

RMAN-03009: failure of backup command on c8 channel at 08/18/2023 15:20:40
ORA-17628: Oracle error 19505 returned by remote Oracle server
continuing other job steps, job failed will not be re-run

3. 仅设置log_file_name_convert

redo文件按指定路径替换,数据文件按照主库目录。如果有不存在的,会遇到报错。

数据文件:/u01/erpdev/db/apps_st/data/erpdev/datafile/ 与 /u01/erpdev/db/apps_st_02/data/erpdev/datafile/

redo文件:/oracle/fra/erpuat/onlinelog 与 /u01/erpuat/db/apps_st/data/erpuat/onlinelog

目录不存在报错如下

这个倒是直接报目录不存在,但它是在所有数据文件复制完成后,重建控制文件时报的。如果数据量很大,会经过漫长等待之后卡在这步报错然后要重来,尴尬...

RMAN-06136: ORACLE error from auxiliary database: ORA-01503: CREATE CONTROLFILE failed
ORA-00349: failure obtaining block size for '/oracle/fra/erpdev/onlinelog/o1_mf_1_k5abdh25_.log'

ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9

4. db_file_name_convert和log_file_name_convert都设置

数据文件、redo文件都按指定路径替换。如果有不存在的,会遇到报错。

数据文件:/u01/erpuat/db/apps_st/data/erpuat/datafile/ 与 /u01/erpuat/db/apps_st_02/data/erpuat/datafile/

redo文件:/oracle/fra/erpuat/onlinelog 与 /u01/erpuat/db/apps_st/data/erpuat/onlinelog

5. db_file_name_convert和log_file_name_convert都不设置

数据文件、redo文件都按照主库目录。如果有不存在的,会遇到报错。

数据文件:/u01/erpdev/db/apps_st/data/erpdev/datafile/ 与 /u01/erpdev/db/apps_st_02/data/erpdev/datafile/

redo文件:/oracle/fra/erpdev/onlinelog 与 /u01/erpdev/db/apps_st/data/erpdev/onlinelog

6. 特别注意,未设子目录的效果

两个convert参数效果都是一样的,这里以 db_file_name_convert 为例。

假如目录结构是这样的

  • 主库:/u01/erpdev/db/apps_st/data/erpdev/datafile/
  • 从库:/u01/erpuat/db/apps_st/data/erpuat/datafile/

但我是这么设置的(只写到了data目录那级)

db_file_name_convert='/u01/erpdev/db/apps_st/data/','/u01/erpuat/db/apps_st/data/'

同步的时候会不会报错?

       答案是会的,因为转换后从库找的是 /u01/erpuat/db/apps_st/data/erpdev/datafile/,由于子目录没有设置转换,它还是会按照原来的erpdev。而从库实际是没有这个目录的,因此会遇到报错。

参考

DATAGUARD中db_file_name_convert和db_create_file_dest_51CTO博客_dataguard_status

https://www.cnblogs.com/xqzt/p/5089826.html

Multiple Standby Databases Dataguard Oracle - EasyOraDBA

RMAN Duplicate failing with RMAN-06136, ORA-01503, ORA-00349 (Doc ID 2206423.1)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hehuyi_In

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值