讲师中心 微信公众号
AI工具推荐 视频效率加速

Oracle RAC环境如何正确执行RMAN备份_配置共享存储下的备份通道

老芳姑娘_7238

老芳姑娘_7238

发布时间:2026-05-16 19:54:25

|

299人浏览过

|

来源于php中文网

原创

RMAN在RAC中单节点备份主因是默认连接单一实例,需为每个节点显式CONNECT TARGET并ALLOCATE CHANNEL;归档与备份路径必须真正共享(ASM/NFS),且脚本须检查OPEN_MODE、归档切换及CROSSCHECK。

为什么RMAN在RAC里只用一个节点备份

根本不是rac不支持多节点并行,而是rman默认连接哪个实例,所有通道就跑在那个实例上。你用connect target /连到node1,哪怕脚本在node2上执行,allocate channel也只会落在node1——v$session里看不到其他节点有backup类型会话,吞吐卡死是必然的。

常见报错如ORA-12514: TNS listener does not currently know of service requested,往往是因为tnsnames.ora里写的不是指向具体实例的服务名(比如racdb1、racdb2),而是SCAN服务名(如racdb),导致多次CONNECT TARGET都路由到同一节点。

  • 必须为每个要参与备份的节点,在RUN块内显式执行CONNECT TARGET sys/password@service_name
  • service_name必须是tnsnames.ora中分别定义、明确指向单个实例的条目,不能共用SCAN服务
  • 每个ALLOCATE CHANNEL必须紧跟在对应CONNECT TARGET之后,RMAN不会跨连接复用通道配置
  • 通道名(如c1、c2)在同一个RUN块里必须唯一,重复使用会触发RMAN-06002

共享存储路径怎么设才真正“共享”

归档日志和备份文件都得放在所有节点都能直接读写的路径上,否则通道分配再合理也没用。本地文件系统路径(如/u01/backup)天然不共享,NFS或ASM才是正解。

如果用NFS,必须在所有RAC节点上挂载同一远程路径,且权限一致:chown oracle:oinstall、chmod 755,fstab里加noac或actimeo=0避免缓存导致写入不一致;如果用ASM,路径形如+RECO/rac/backup_%U,要确认磁盘组在线、空间充足、且所有节点实例都有访问权限。

  • 归档路径必须统一设为共享位置,例如ALTER SYSTEM SET log_archive_dest_1='location=+RECO/rac/arch' SCOPE=BOTH
  • 备份FORMAT中的%U最安全,避免文件名冲突;含空格或中文的路径会导致ORA-19504静默失败
  • 不要把备份写到db_recovery_file_dest(FRA)——它默认是本地路径,且容易被归档日志占满,引发ORA-19566误报
  • 执行前用ls -ld检查目标目录权限,用asmcmd ls +RECO或df -h验证空间

ALLOCATE CHANNEL和CONFIGURE CHANNEL到底该用哪个

CONFIGURE CHANNEL不是全局开关,它只对当前RMAN session生效,重启RMAN就失效;而且它是实例级设置——你在racdb1上配置了FORMAT,对racdb2完全没影响。真正在RAC里做多节点备份,ALLOCATE CHANNEL更可控、更明确。

QuantOracle
QuantOracle

63个确定性量化金融计算器 + 10个通过MCP的复合工作流。期权定价、Greeks、奇异衍生品、风险指标、投资组合优化……

下载

ALLOCATE CHANNEL必须写在RUN块内,配合RELEASE CHANNEL(虽退出时自动释放,但显式释放能避免后续命令意外复用);而CONFIGURE CHANNEL适合单实例环境下的日常简化操作,但在RAC脚本里混用容易踩坑。

  • 多节点备份脚本必须用ALLOCATE CHANNEL,每个通道带CONNECT上下文
  • CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT ...可以省略ALLOCATE,但仅限单实例,且配置后所有后续备份都走这个路径,灵活性差
  • 若要用MAXPIECESIZE限制单个备份片大小(比如防NFS写入超时),只能通过ALLOCATE CHANNEL指定,CONFIGURE不支持该参数
  • CONFIGURE CHANNEL设的参数一旦覆盖,之前配置全丢,比如先设MAXPIECESIZE 2G,再设FORMAT,前者就恢复默认值

备份脚本里最容易漏掉的三件事

很多人跑完RUN块看到completed successfully就以为万事大吉,其实元数据写进控制文件≠备份文件真正落盘。这三个检查点不做,恢复时大概率失败。

  • V$DATABASE.OPEN_MODE必须是READ WRITE(ARCHIVELOG模式)或MOUNT(NOARCHIVELOG),READ ONLY下BACKUP DATABASE直接报错
  • 归档日志必须已全部切换并写入共享路径,执行ALTER SYSTEM ARCHIVE LOG CURRENT后再备份,避免遗漏最后几组日志
  • 执行CROSSCHECK BACKUP和CROSSCHECK ARCHIVELOG ALL,再DELETE EXPIRED,否则控制文件里残留无效记录,后续RESYNC CATALOG可能失败

最常被忽略的是:恢复前必须关闭其他节点实例,只留一个启动状态;恢复完成后,再用srvctl start instance逐个拉起——这点在文档里藏得深,但跳过就会导致控制文件不一致或SMON无法清理事务。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

相关专题

更多
C语言变量命名
C语言变量命名

c语言变量名规则是:1、变量名以英文字母开头;2、变量名中的字母是区分大小写的;3、变量名不能是关键字;4、变量名中不能包含空格、标点符号和类型说明符。php中文网还提供c语言变量的相关下载、相关课程等内容,供大家免费下载使用。

3649

2023.06.20

c语言入门自学零基础
c语言入门自学零基础

C语言是当代人学习及生活中的必备基础知识,应用十分广泛,本专题为大家c语言入门自学零基础的相关文章,以及相关课程,感兴趣的朋友千万不要错过了。

2448

2023.07.25

c语言运算符的优先级顺序
c语言运算符的优先级顺序

c语言运算符的优先级顺序是括号运算符 > 一元运算符 > 算术运算符 > 移位运算符 > 关系运算符 > 位运算符 > 逻辑运算符 > 赋值运算符 > 逗号运算符。本专题为大家提供c语言运算符相关的各种文章、以及下载和课程。

1380

2023.08.02

c语言数据结构
c语言数据结构

数据结构是指将数据按照一定的方式组织和存储的方法。它是计算机科学中的重要概念,用来描述和解决实际问题中的数据组织和处理问题。数据结构可以分为线性结构和非线性结构。线性结构包括数组、链表、堆栈和队列等,而非线性结构包括树和图等。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1338

2023.08.09

c语言random函数用法
c语言random函数用法

c语言random函数用法:1、random.random,随机生成(0,1)之间的浮点数;2、random.randint,随机生成在范围之内的整数,两个参数分别表示上限和下限;3、random.randrange,在指定范围内,按指定基数递增的集合中获得一个随机数;4、random.choice,从序列中随机抽选一个数;5、random.shuffle,随机排序。

1416

2023.09.05

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

2358

2023.09.20

c语言get函数的用法
c语言get函数的用法

get函数是一个用于从输入流中获取字符的函数。可以从键盘、文件或其他输入设备中读取字符,并将其存储在指定的变量中。本文介绍了get函数的用法以及一些相关的注意事项。希望这篇文章能够帮助你更好地理解和使用get函数 。

3920

2023.09.20

c数组初始化的方法
c数组初始化的方法

c语言数组初始化的方法有直接赋值法、不完全初始化法、省略数组长度法和二维数组初始化法。详细介绍:1、直接赋值法,这种方法可以直接将数组的值进行初始化;2、不完全初始化法,。这种方法可以在一定程度上节省内存空间;3、省略数组长度法,这种方法可以让编译器自动计算数组的长度;4、二维数组初始化法等等。

18515

2023.09.22

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

0

2026.11.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn