当前位置: 首页 > news >正文

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)

相关文章:

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

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

创建型(一) - 简单工厂模式、工厂方法模式和抽象工厂模式

本文使用了王争老师设计模式课程中的例子,写的很清晰,而且中间穿插了代码优化。 由于设计模式就是解决问题的一种思路,所以每个设计模式会从问题出发,这样比较好理解设计模式出现的意义。 一、简单工厂模式 解决问题&#xff1a…...

LeetCode3.无重复字符的最长子串

虽然是一道中等题,但我5分钟就写完了,而且是看完题就知道怎么写,这一看就知道双指针,一个左一个右,右指针往后移如果没有重复的长度1;如果有重复的,左指针往右移,那如何判断重复呢&a…...

鲁图中大许少辉博士八一新书《乡村振兴战略下传统村落文化旅游设计》山东省图书馆典藏

鲁图中大许少辉博士八一新书《乡村振兴战略下传统村落文化旅游设计》山东省图书馆典藏...

如何发布自己的小程序

小程序的基础内容组件 text&#xff1a; 文本支持长按选中的效果 <text selectable>151535313511</text> rich-text: 把HTML字符串渲染为对应的UI <rich-text nodes"<h1 stylecolor:red;>123</h1>"></rich-text> 小程序的…...

【微服务】spring 条件注解从使用到源码分析详解

目录 一、前言 二、spring 条件注解概述 2.1 条件注解Conditional介绍 2.2 Conditional扩展注解 2.2.1 Conditional扩展注解汇总 三、spring 条件注解案例演示 3.1 ConditionalOnBean 3.2 ConditionalOnMissingBean 3.2.1 使用在类上 3.2.2 使用场景补充 3.3 Condit…...

客户案例:高性能、大规模、高可靠的AIGC承载网络

客户是一家AIGC领域的公司&#xff0c;他们通过构建一套完整的内容生产系统&#xff0c;革新内容创作过程&#xff0c;让用户以更低成本完成内容创作。 客户网络需求汇总 RoCE的计算网络RoCE存储网络1.不少于600端口200G以太网接入端口&#xff0c;未来可扩容至至少1280端口1.…...

Flutter性能揭秘之RepaintBoundary

作者&#xff1a;xuyisheng Flutter会在屏幕上绘制Widget。如果一个Widget的内容需要更新&#xff0c;那就只能重绘了。尽管如此&#xff0c;Flutter同样会重新绘制一些Widget&#xff0c;而这些Widget的内容仍有部分未被改变。这可能会影响应用程序的执行性能&#xff0c;有时…...

29.Netty源码之服务端启动:创建EventLoopSelector流程

highlight: arduino-light 源码篇&#xff1a;从 Linux 出发深入剖析服务端启动流程 通过前几章课程的学习&#xff0c;我们已经对 Netty 的技术思想和基本原理有了初步的认识&#xff0c;从今天这节课开始我们将正式进入 Netty 核心源码学习的课程。希望能够通过源码解析的方式…...

Kotllin实现ArrayList的基本功能

前言 上次面试时&#xff0c;手写ArrayList竟然翻车&#xff0c;忘了里面的扩容与缩容的条件&#xff0c;再次实现一次&#xff0c;加深印象 源码讲了什么 实现了List列表和RandomAccess随机访问接口List具有增删改查功能&#xff0c;RandomAccess支持下标访问内部是一个扩容…...

C++的初步介绍,以及C++与C的区别

C和C的区别 C又称C plus plus&#xff0c;且C语言是对C语言的扩充&#xff0c;几乎支持所有的C语言语法&#xff1b;C语言&#xff1a;面向过程的语言&#xff08;注重问题的解决方法和算法&#xff09;C&#xff1a;面向对象的语言 &#xff08;求解的方法&#xff09;面向对…...

JDK 核心jar之 rt.jar

一、JDK目录展示 二、rt.jar 简介 2.1.JAR释义 在软件领域&#xff0c;JAR文件&#xff08;Java归档&#xff0c;英语&#xff1a;Java Archive&#xff09;是一种软件包文件格式&#xff0c;通常用于聚合大量的Java类文件、相关的元数据和资源&#xff08;文本、图片等&…...

el-form表单验证:只在点击保存时校验(包含select、checkbox、radio)

1、input类型 input类型 在el-input里加入:validate-event"false" <el-form-item label"活动名称" prop"name"><el-input v-model"ruleForm.name" :validate-event"false"></el-input> </el-form-i…...

Golang基本语法(上)

1. 变量与常量 Golang 中的标识符与关键字 标识符 Go语言中标识符由字母数字和_(下划线&#xff09;组成&#xff0c;并且只能以字母和_开头。 举几个例子&#xff1a;abc, _, _123, a123。 关键字 关键字和保留字都不建议用作变量名&#xff1a; Go语言中有25个关键字。 此…...

jenkins使用

安装插件 maven publish over ssh publish over ssh 会将打包后的jar包&#xff0c;通过ssh推送到指定的服务器上&#xff0c;&#xff0c;在jenkins中设置&#xff0c;推送后脚本&#xff0c;实现自动部署jar包&#xff0c;&#xff0c; 装了这个插件之后&#xff0c;可以在项…...

多线程基础篇(包教包会)

文章目录 一、第一个多线程程序1.Jconsole观察线程2.线程休眠-sleep 二、创建线程三、Thread类及常见方法1. Thread 的常见构造方法2. Thread 的几个常见属性3. 启动线程 - start4. 中断线程5. 等待一个线程 四、线程状态五、线程安全问题(synchronized)&#xff08;重点&#…...

Android/Java中,各种数据类型之间的互相转换,给出各种实例,附上中文注释

目录 1.字符串&#xff08;String&#xff09;转整数&#xff08;int&#xff09;&#xff1a; 2.整数&#xff08;int&#xff09;转字符串&#xff08;String&#xff09;&#xff1a; 3.字符串&#xff08;String&#xff09;转浮点数&#xff08;float&#xff09;&…...

机器学习知识点总结:什么是EM(最大期望值算法)

什么是EM(最大期望值算法) 在现实生活中&#xff0c;苹果百分百是苹果&#xff0c;梨百分白是梨。 生活中还有很多事物是概率分布&#xff0c;比如有多少人结了婚&#xff0c;又有多少人有工作&#xff0c; 如果我们想要调查人群中吸大麻者的比例呢&#xff1f;敏感问题很难得…...

漏洞挖掘和安全审计的技巧与策略

文章目录 漏洞挖掘&#xff1a;发现隐藏的弱点1. 源代码审计&#xff1a;2. 黑盒测试&#xff1a;3. 静态分析工具&#xff1a; 安全审计&#xff1a;系统的全面评估1. 渗透测试&#xff1a;2. 代码审计&#xff1a;3. 安全策略审查&#xff1a; 代码示例&#xff1a;SQL注入漏…...

[SpringBoot3]Web服务

五、Web服务 基于浏览器的B/S结构应用十分流行。SpringBoot非常适合Web应用开发&#xff0c;可以使用嵌入式Tomcat、Jetty、Undertow或Netty创建一个自包含的HTTP服务器。一个SpringBoot的Web应用能够自己独立运行&#xff0c;不依赖需要安装的Tomcat、Jetty等。SpringBoot可以…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...