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

       最近遇到了复制数据(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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/49804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebGL 变量uniform、gl.getUniformLocation、gl.uniform4f及其同族函数相关

目录 uniform变量命名规范 获取 uniform 变量的存储地址 gl.getUniformLocation 向uniform变量赋值 gl.uniform4f ​编辑 gl.uniform4f()的同族函数 demo:点击webgl坐标系的四个象限绘制各自不同颜色的点 uniform变量命名规范 var FSHADER_SOURCE uniform vec4…

小程序-基于vant的Picker组件实现省市区选择

一、原因 因vant/area-data部分的市/区数据跟后台使用的高德/腾讯省市区有所出入,故须保持跟后台用同一份数据,所以考虑以下几个组件 1、Area 2、Cascader 3、Picker 因为使用的是高德地图的省市区json文件,用area的话修改结构代价太大&…

AVL——平衡搜索树

✅<1>主页&#xff1a;我的代码爱吃辣&#x1f4c3;<2>知识讲解&#xff1a;数据结构——AVL树☂️<3>开发环境&#xff1a;Visual Studio 2022&#x1f4ac;<4>前言&#xff1a;AVL树是对二叉搜索树的严格高度控制&#xff0c;所以AVL树的搜索效率很高…

xargs 的用法 在1个文件夹中批量删除文件,这些删除的文件名是另一个文件夹中的文件名。

xargs 的用法 在1个文件夹中批量删除文件&#xff0c;这些删除的文件名是另一个文件夹中的文件名。 1、问题背景 应用场景 1、问题背景 应用场景 在二进制部署docker时&#xff0c;会把docker的所有可执行文件复制到/usr/bin下。 如果说复制过去后&#xff0c;想要反悔&#x…

零散笔记:《Spring实战》Thymeleaf

1、Thymeleaf模板就是增加一些额外元素属性的HTML&#xff0c;这些属性能够指导模板如何渲染request数据。 <p th:test "${message}">placeholder message</p> th我推测是中文的”替换“。 2、th:each&#xff0c;迭代元素集合。 <div th:each &qu…

VB.NET通过VB6 ActiveX DLL调用PowerBasic及FreeBasic动态库

前面说的Delphi通过Activex DLL同时调用PowerBasic和FreeBasic写的DLL&#xff0c;是在WINDOWS基础平台上完成的。 而 .NET平台是架在WINDOWS基础平台之上的&#xff0c;它的上面VB.NET或C#等开发的APP程序&#xff0c;下面写一下用VB.NET&#xff0c;通过VB6注册的Activex DLL…

一文速学-让神经网络不再神秘,一天速学神经网络基础(一)

前言 思索了很久到底要不要出深度学习内容&#xff0c;毕竟在数学建模专栏里边的机器学习内容还有一大半算法没有更新&#xff0c;很多坑都没有填满&#xff0c;而且现在深度学习的文章和学习课程都十分的多&#xff0c;我考虑了很久决定还是得出神经网络系列文章&#xff0c;…

C语言刷题(13)

第一题 第二题 第三题 第四题 第五题 第六题 第七题 注意 1.nsqrt(n)&#xff0c;sqrt本身不会将n开根 2.初始化已经令sumn了&#xff0c;故相加的个数为m-1次

DataGridView keydown事件无法在C#中工作

原因&#xff1a;单元格内编辑文本时,DataGridView keydown事件不起作用。每当单元格处于编辑模式时,其托管控件就会接收KeyDown事件而不是DataGridView包含它的父级.这就是为什么当单元格未处于编辑模式时(即使它被选中),键盘快捷键正常工作,因为DataGridView控件本身会收到Ke…

K8S用户管理体系介绍

1 K8S账户体系介绍 在k8s中&#xff0c;有两类用户&#xff0c;service account和user&#xff0c;我们可以通过创建role或clusterrole&#xff0c;再将账户和role或clusterrole进行绑定来给账号赋予权限&#xff0c;实现权限控制&#xff0c;两类账户的作用如下。 server acc…

小航助学GESP_C++一级模拟测试卷第2套(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSDN博客 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSD…

JavaScript中的let和var区别

JavaScript中的let和var是两种变量声明的方式&#xff0c;它们有一些区别&#xff1a; 作用域&#xff1a; var声明的变量具有函数作用域&#xff0c;即在声明的函数内部有效。如果没有在函数内部声明&#xff0c;变量则为全局作用域。 let声明的变量具有块作用域&#xff0c;…

Yolov8红外弱小目标检测(7):BiFPN高效双向跨尺度连接和加权特征融合,助力小目标检测

💡💡💡本文改进:BiFPN高效双向跨尺度连接和加权特征融合 ,有效提升小目标难检测问题; BiFPN | 亲测在红外弱小目标检测涨点明显,map@0.5 从0.755提升至0.766 💡💡💡Yolo小目标检测,独家首发创新(原创),适用于Yolov5、Yolov7、Yolov8等各个Yolo系列,专栏…

【LeetCode 算法】Add Two Integers 两整数相加-位运算

文章目录 Add Two Integers 两整数相加问题描述&#xff1a;分析代码递归 Tag Add Two Integers 两整数相加 问题描述&#xff1a; 给你两个整数 num1 和 num2&#xff0c;返回这两个整数的和。 − 100 < n u m 1 , n u m 2 < 100 -100 < num1, num2 < 100 −1…

WPF入门到精通:3.MVVM简单应用及全局异常处理

MVVM简介 在WPF应用程序开发中&#xff0c;MVVM&#xff08;Model-View-ViewModel&#xff09;是一种非常流行的架构模式。它为应用程序的设计提供了良好的分层结构和可扩展性。 结构分为下列三部分 Model&#xff1a;定义了应用程序的数据模型 就是系统中的对象&#xff0c;…

Go的gin参数校验之validator库

使用 validator 以后&#xff0c;只需要在定义结构体时使用binding或validatetag标识相关校验规则&#xff0c;就可以进行参数校验了&#xff0c;而不用自己单独去写常见的校验规则。 main.go package mainimport ("fmt""github.com/go-playground/validator/…

大学生创业出路【第二弹】科创训练营

目录 &#x1f680;一、我从哪里了解到的训练营 &#x1f680;二、训练营里学习和日常 &#x1f50e;学习 &#x1f50e;环境和设备 &#x1f50e;遇到的人 &#x1f50e;团队记录视频 &#x1f680;三、感悟 ​​​​个人主页&#xff1a;一天三顿-不喝奶茶&#x1f39…

Room封装APP离线缓存框架HiStorage——jetpack技术

在移动应用开发中&#xff0c;离线缓存是提高用户体验和应用性能的关键策略之一。为了简化开发者的工作&#xff0c;Jetpack技术组件提供了一系列强大的工具&#xff0c;其中Room是一个功能强大的数据库持久化库。 HiStorage&#xff0c;它提供了简单易用的接口&#xff0c;帮助…

JVM元空间溢出的排除思路

背景&#xff1a; java的应用我们为了防止元空间的无限扩展&#xff0c;一般都会设置MaxMetaSpace参数&#xff0c;一般来说只要这个值是512M或者1G左右就足够了&#xff0c;不过今天遇到一个meta空间溢出问题&#xff0c;简单记录下排除的思路 meta元空间溢出 最开始的现象…

实验六 u-boot-2013.01移植

【实验目的】 了解u-boot 的代码结构及移植的基本方法 【实验环境】 ubuntu 14.04发行版FS4412实验平台交叉编译工具arm-none-linux-gnueabi- 【注意事项】 实验步骤中以“$”开头的命令表示在 ubuntu 环境下执行 【实验步骤】 一、建立自己的平台 下载uboot源码 在uboo…