ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

NetBackup备份Oracle配置指南:架构、RMAN策略与故障排查

NetBackup备份Oracle配置指南:架构、RMAN策略与故障排查 简介面向Oracle DBA与备份运维人员这份NetBackup环境下的Oracle数据库备份配置文档完整覆盖从客户端代理安装、主服务器策略创建到RMAN脚本定制与备份任务执行的全流程。文档以实际操作步骤为主线先说明在Linux/Unix Oracle主机上选择合适的CLIENTS2安装包并提示安装时输入主服务器与媒体服务器信息、token粘贴后不显示的易错细节随后讲解在主服务器新建策略时将类型设为Oracle、存储选择对应媒体服务器并配置调度计划与‘用于脚本的客户端’同时强调hosts文件、1556与13724端口互通等前提条件。针对RMAN脚本文档展开hot_database_backup.sh中的环境变量与参数调整包括备份类型、标签保留策略、压缩与加密等关键配置帮助读者理解热备份机制。资源为1个docx格式文档压缩包约5.9MB内容精炼集中目前已有836人学习。读者可参照完成Oracle客户端代理安装、备份计划配置、脚本修改与备份执行获得一套可直接落地的备份配置参考。1. NBU备份oracle到底在解决什么问题凌晨手机被 DBA 群里的告警电话炸醒刚接手的一台 Oracle 19c 生产库因为磁盘阵列故障直接宕了。你赶紧打开 NetBackup 管理控制台发现昨天刚跑完的全量备份显示“成功”可当你准备用这台 NBU 的备份数据去恢复数据库时却惊讶地发现最近几天的归档日志都没备份进去数据只能恢复到一周前。这种场景在备份运维里太常见了。NBU备份oracle详细配置文档这个标题背后真正要解决的问题不是教你学会敲几条 RMAN 命令而是怎么用 Veritas NetBackup 这个中央调度平台把 Oracle 数据文件、归档日志、控制文件以及恢复验证串成一条可靠的流水线。它适合那些被备份任务折磨的 DBA、负责容灾的备份管理员以及第一次接触企业级备份软件的运维新人。折腾明白这套配置你的备份才算真正具备恢复能力而不只是一堆躺在磁带和磁盘上的黑匣子。2. 把 NBU 和 Oracle 接起来基础架构与集成原理2.1 备份链路中的三个角色Master Server、Media Server、ClientNBU 备份 Open 文件系统时链路相对简单但备份 Oracle 数据库时必须要分清三个角色的职责理解数据流量是从哪边推到哪边的。Master Server是整个 NBU 域的大脑。它上面存放着 EMMEnterprise Media Manager数据库所有备份策略、调度计划、保留期限以及备份作业的启动都归它管。你打开 NBU 管理控制台看到的“活动作业”和“备份策略”都是从 Master Server 上拉取和提交的。Media Server是数据流的搬运工。它实际连接磁带库、DataDomain 去重存储或普通的磁盘存储单元通过bptm进程接收来自客户端的备份数据流。Client就是装在 Oracle 主机上的代理。在 Oracle 场景下它不只是 NBU 的文件系统客户端还装了 NetBackup for Oracle 的智能策略插件。明确这三个角色对后续配置至关重要。因为 Oracle 备份总是出现“作业显示成功但实际备份不完整”的尴尬根源往往就是数据流经过了 Media Server 时超时但 Master Server 没收到明确的错误码最后把作业拉成了成功的状态。NBU 10.4 的界面虽然越来越漂亮但核心的数据流构架没有变依然是 Master Server 基于服务的模式向 Client 下发备份任务Client 再通过 SBT 接口把数据交给 Media Server。所以排查故障时先要想清楚你现在看到的日志是 Master Server 的作业日志还是 Media Server 的驱动日志还是 Oracle 端 RMAN 的输出日志。这三者信息完全不一样混着看容易把自己绕进去。2.2 不要绕开的两种集成方式RMAN 插件与客户端脚本要把 NBU 和 Oracle 拉起手来官方层面有两条主流路径。第一种是NBU 的 Oracle 智能策略Smart Policy。你在 NBU 控制台创建备份策略时“策略类型”选择Oracle然后直接在这个界面里指定要备份的数据库、备份方式全备份、增量备份或仅归档日志。NBU 会自动在后台生成一套 RMAN 命令并调用 NetBackup for Oracle 的插件去执行。这种方式的好处是备份信息与 NBU 的目录库深度绑定可以自动实现基于时间点的恢复粒度控制在做“Instant Recovery”或“裸文件恢复”时最省事。第二种是标准备份脚本方式Standard Policy。这种策略类型选择Standard然后把“备份命令行”写成一个 Shell 脚本脚本里自定义 RMAN 的完整执行逻辑。它本质上是 NBU 只负责定时拉起这个脚本至于脚本里 RMAN 是调用 SBT 通道还是把备份写到本地的普通文件NBU 都不关心。这种方式在 DBA 群体里非常流行因为脚本可以用到很多 RMAN 的高级特性比如过滤特定表空间、指定备份片段大小、跳过离线数据文件灵活性更高。如果你问我哪种更推荐我的建议是生产环境如果业务要求快速接管直接上智能策略如果 DBA 团队对备份粒度控制有执念且对 RMAN 异常参数十分敏感那就用标准脚本策略脚本本身就是你的后悔药。但不管你选哪种底层都必须依赖 Oracle 的介质管理层MML库。NBU 到 Oracle 的桥接就是那个位于$ORACLE_HOME/lib下的libobk.so文件它能被 RMAN 识别成TYPE SBT_TAPE通道本质上相当于把 NBU 的存储单元伪装成了一台无限容量的磁带机。2.3 安装 NetBackup 客户端与 Oracle 代理不要默认路径的坑安装 NBU 客户端的过程本身没什么难度执行./install然后一路默认到底但这正是后面各种疑难杂症的源头。安装完 NetBackup Client 后你还需要单独安装 NetBackup for Oracle 的扩展包。这个扩展包非常重要否则策略类型选 Oracle 时系统会提示你“客户端不支持该应用”。装完以后最关键的环节不是看安装成功而是确认 NBU 的服务进程能不能读到ORACLE_HOME环境变量。因为 NBU 的客户端服务bpbkar接管 Oracle 备份时需要向外部的bptm进程汇报数据库审计日志的路径这个路径默认从ORACLE_HOME拼接出来。如果 NBU 服务时没有把ORACLE_HOME写进它的守护进程环境里经常会出现备份数据库文件完全可以但备份完 ORACLE 归档日志时立马报错ORA-19511。这里有一个笨但绝对有效的做法在备份主机的/usr/openv/netbackup/bp.conf文件末尾手动补一条静态配置项明确指定 Oracle 环境。# /usr/openv/netbackup/bp.conf 文件部分内容 SERVER nbumaster.localdomain CLIENT_NAME oracle19c.localdomain # 手动增加 Oracle 专用的环境变量避免 bpbkar 进程找不到 Oracle 依赖 ORACLE_HOME /u01/app/oracle/product/19.0.0/dbhome_1 ORACLE_SID ORCL这段配置逻辑很直接。SERVER用于告诉 NBU 客户端哪个 Master Server 可以给他派发任务CLIENT_NAME要严格和 NBU 控制台里添加主机时填的名称一致不能因为改过主机名就忽略不同步的问题。而ORACLE_HOME写在bp.conf里是业内最稳妥的方式因为它能保证 NBU 服务进程无论由哪个用户重启都能通过文件解析找到数据库的库路径。千万不要指望服务器重启后/etc/profile里的环境变量能顺顺利利被 NBU 的守护进程读到那个是纯看系统运气属于玄学范畴。补完配置记得重启netbackup客户端服务然后执行下面的命令验证 Master Server 和 Client 之间的信任是否打通。/usr/openv/netbackup/bin/bptestbpcd -client oracle19c.localdomain -verbose输出如果显示Status: OK则说明 NBU 客户端能在 Master Server 的控制下发号施令了。这个bptestbpcd命令是 NBU 客户端注册后必测的一道防线它验证的是主机间的 BPCD 端口是否可达属于纯网络层面的握手一旦失败后面配置策略基本就是玩瞎。3. 从环境检查到策略落地NBU备份Oracle配置实操3.1 预备工作先检查数据库与 RMAN 的状态配置 NBU 策略之前不要在 GUI 里急着点下一步。先把数据库的底层状态摸清否则备份任务即使启动了也是带病运转。你需要登到 Oracle 主机上用sqlplus检查几个硬指标。-- 检查数据库归档模式、闪回恢复区大小以及当前日志切换频率 SELECT log_mode, flashback_on FROM v$database; -- 查看闪回恢复区当前已使用空间和总大小 SELECT name, round(space_limit/1024/1024/1024, 2) SIZE_GB, round(space_used/1024/1024/1024, 2) USED_GB FROM v$recovery_file_dest; -- 查看当前在线日志组的状态和大小 SELECT group#, sequence#, status, bytes/1024/1024 MB FROM v$log ORDER BY group#;这几条 SQL 的作用很明确。log_mode必须为ARCHIVELOG否则无法实现基于时间点的恢复闪回恢复区Fast Recovery AreaFRA的大小直接决定了归档日志在本地最多能攒多少。我曾经遇到过生产库db_recovery_file_dest_size只配了 50GB而每小时日志量 20GB 的场景等于 FRA 每两个半小时就被写满数据库直接 hang 住这种情况下 NBU 即便再勤快也架不住源端不断井喷的日志量。除了数据库本身还要检查rman的配置项。备份时那些灵异的时间点恢复失败大多是因为RMAN的冗余策略或者控制文件自动备份被设置成了异常值。下面这组查看命令是必做的功课。rman target / RMAN SHOW ALL;SHOW ALL的输出里重点盯着CONFIGURE RETENTION POLICY、CONFIGURE CONTROLFILE AUTOBACKUP以及CONFIGURE ARCHIVELOG DELETION POLICY这三行。不需要过度修改但要心里有数。强烈建议把CONFIGURE CONTROLFILE AUTOBACKUP ON;打开因为控制文件是恢复的命根子在 NBU 这种介质管理场景下如果控制文件丢失且没有 autobackup恢复时就得手工指定文件名那是在给自己挖坑。3.2 写一个能直接调用的 RMAN 备份脚本配置 NBU 策略时最常见的落地方式是“标准策略外部脚本”因为这种方式最方便 DBA 手工在命令行同样执行一遍测试与排错成本最低。下面是我自己的生产环境里用得极其顺手的备份脚本模板。#!/bin/bash # 文件名: /home/oracle/scripts/nbu_oracle_backup.sh # 说明: 该脚本由 NBU 标准策略触发也可由 DBA 在 crontab 中手工调用 export ORACLE_HOME/u01/app/oracle/product/19.0.0/dbhome_1 export ORACLE_SIDORCL export NLS_DATE_FORMATYYYY-MM-DD HH24:MI:SS export NBU_CLIENThostname -s # 定义 RMAN 日志输出路径 BK_LOG/home/oracle/scripts/log/rman_full_date %Y%m%d_%H%M%S.log # 调用 rman 对数据库执行全量备份和归档日志备份 $ORACLE_HOME/bin/rman target / log $BK_LOG EOF STARTUP MOUNT; RUN { # 分配两条 SBT 通道对应 NBU 策略里的并行流数 ALLOCATE CHANNEL ch1 DEVICE TYPE SBT_TAPE; ALLOCATE CHANNEL ch2 DEVICE TYPE SBT_TAPE; # 全量备份数据库文件并备份所有归档日志同时删除已备份过的归档日志 BACKUP DATABASE PLUS ARCHIVELOG FORMAT %U DELETE INPUT; RELEASE CHANNEL ch1; RELEASE CHANNEL ch2; } ALTER DATABASE OPEN; EXIT; EOF # 判断备份结果失败则退出并返回非 0 值 if [ $? -ne 0 ]; then echo Oracle NBU backup failed at date $BK_LOG exit 1 fi exit 0这段脚本里有两个参数至关重要。一是ALLOCATE CHANNEL的条数它决定了备份数据流最终分裂成几股必须和 NBU 策略中的“最大并行流数”完全匹配。二是DELETE INPUT它的存在与否直接关系到源端 FRA 的空间是否会被残留归档日志打爆。执行BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT时RMAN 会先备份数据文件再备份归档日志最后把备份过的日志从源库删除掉相当于“卸货完成后再清空货架”。脚本还有个隐藏的关键点STARTUP MOUNT和ALTER DATABASE OPEN必须成对出现。因为在备份期间让数据库保持 MOUNT 状态能保证无日志写入同时避免END BACKUP不一致的情况。如果你不敢把生产库拉成 MOUNT 状态也可以直接使用BACKUP DATABASERMAN 会自动处理在线数据文件的一致性但那样的话日志切换会非常频繁FRA 压力陡增。对于 NBU 这种介质管理工具除非业务无法接受任何停机窗口否则我从来都坚持 MOUNT 备份。3.3 创建 NBU Policy备份策略的十个关键参数脚本准备完毕后打开 NBU 管理控制台进入Policies新建一个策略。策略创建页面的参数很多新手经常一头扎进去乱填这里把最关键的十个参数拎出来直接照着抄作业就可以。策略类型与客户端参数推荐取值说明Policy typeOracle如果选了 StandardNBU 就只把脚本当普通文件执行安装 Oracle Agent 的意义就没了Clientoracle19c.localdomain必须与 bp.conf 里的 CLIENT_NAME 一致否则作业在调度时会直接失败Storage unitMSDP 或 DataDomain_01决定备份数据写到哪套存储池直接关系到恢复时的读取速度备份内容与调度参数推荐取值说明Backup Selection指向脚本的绝对路径标准策略下这里填/home/oracle/scripts/nbu_oracle_backup.shSchedule全备每周六 02:00归档日志每 1 小时归档备份策略要与 Oracle 的日志产生速率匹配宁可过密不可过稀Retention14 天如果生产要求恢复到一个月内任意点14 天绝对不够用至少 31 天起性能与通道参数推荐取值说明Performance等同于脚本里 channel 数比如脚本里分配了 2 条通道这里最大并行流数设为 2如果设大了NBU 只会多开好几个 Master Server 进程空等毫无意义Active Server默认 Media Server若多台 Media Server选离 Oracle 主机网络延迟最小的一台Compression选择程序自动判断Oracle 的数据块本身压缩率有限NBU 的客户端压缩如果对高并发业务启用极其消耗 CPU容易形成瓶颈Multistreaming开启并设为 2对应 RMAN 通道开启后 NBU 会把备份集打成多个流有效提高单表空间备份并发度Job priority5若与其他业务系统抢窗口调高 Oracle 备份的优先级避免被文件备份挤掉这些参数设置完毕后还有一道非常关键的步骤在Clients标签下的主机列表里把oracle19c.localdomain加进来并激活策略。激活后NBU 会在下一个调度点自动拉起任务。如果你想立刻验收可以右键策略选择Manual Backup然后回到 Activity Monitor 盯一次作业的全过程。4. 场景细化RAC、ASM、DataGuard 下 NBU 备份的差异化配置4.1 为 Oracle RAC 与 ASM 设计备份策略生产环境绝大多数高可用数据库都是 RAC 架构。RAC 环境下给 NBU 配策略最大的变化在于Client不再是一个单点主机而是一组节点。备份接口的选择也更有讲究。传统方式要求你指定一个主节点作为备份源其他节点作为辅助节点但这种方式在 NBU 10.4 中有更优雅的解就是走“集群客户端”模式。配置 RAC 的 NBU 客户端时建议在每个节点上都安装 NetBackup Client 和 NetBackup for Oracle 插件然后在 NBU 管理控制台为所有节点建一个集群实体这样备份策略就可以统一调度RMAN 会自动在可用节点间做负载均衡。注意这里的 RMAN 通道分配要写成CONNECT形式明确指定节点实例否则 RMAN 可能随机挑一个节点导致备份数据流都挤在同一台机器上。# 在 rman 脚本中指定通道连接 RAC 节点示例 RUN { ALLOCATE CHANNEL ch1 DEVICE TYPE SBT_TAPE CONNECT sys/密码rac1; ALLOCATE CHANNEL ch2 DEVICE TYPE SBT_TAPE CONNECT sys/密码rac2; BACKUP DATABASE PLUS ARCHIVELOG FORMAT %U DELETE INPUT; }在 ASM 环境下RMAN 备份无需关心 ASM 磁盘组内部结构。备份数据文件时RMAN 直接通过 ASM 实例读取数据块再经 SBT 通道交由 NBU 写入介质。但有一个极容易踩的坑在 RAC 备份中CONFIGURE CHANNEL如果指定了CONNECT必须显式指定 ASM 实例否则会报ORA-15032。同时你有必要为 ASM 启用CONFIGURE CONTROLFILE AUTOBACKUP FOR DEVICE TYPE SBT_TAPE这样即使数据库控制文件所在磁盘组发生物理损坏也能通过最后一条自动备份集恢复控制文件。4.2 把备份负荷转移到 Data Guard 备库如果你手头有一套 Data Guard 环境尤其近年来大家都在把“真实应用集群”和“灾备”做融合那种“主库跑业务、备库做备份”的架构在运维圈越来越吃香。利用 NBU 在备库上拉一份全备既能彻底释放主库 I/O又能避免主库的MTTR因为备份而变得不稳定。配置备库备份时有几个前置条件备库处于MOUNTED或OPEN READ ONLY状态均可但必须开启闪回恢复区且备库数据库到主库的日志传输一定要顺畅。否则备库的归档日志不连续即使备份成功恢复到那个时间点也会缺后面的数据。另外在备库上做BACKUP DATABASE时需要额外注意因为备库的数据库 scn 与主库保持一致但备份出来的控制文件无法直接用于还原主库在恢复时要用DB_FILE_NAME_CONVERT去映射文件路径。如果主备库路径不一致而你的数据库又是 ASM 管理的这一步没处理好恢复时间会延后数小时。我个人在实际操作中一般会在策略里单独建一个“归档日志备份”的任务专门针对备库的归档目录执行。这样主库的归档日志传输到备库后NBU 会优先将备库的日志备份到存储中随后再清理备库的归档文件相当于在备库侧完成日志的二次容灾对主库完全没有影响。这种“xcopy”式的精细化编排是 NBU 配电高级运维最典型的一个体现。4.3 多通道机制与并发控制参数精讲通道数是一个看似简单的参数却藏了很多翻车点。很多人为了追求速度把 RMAN 通道数和 NBU 的并行流数一次性拉到 16结果备份时间确实缩短了但数据库所在主机的 CPU 直接被打满正常的业务查询瞬间卡死导致故障雪崩。常规的经验法则是生产库按 CPU 核数来定通道数。如果主机是 8 核 16 线程建议 RMAN 通道数设 4NBU 策略中的最大并行流数同样设为 4。如果使用 DataDomain 等存储设备单通道带宽上限通常为 200MB/s4 通道上行可以达到 800MB/s这已经能撑起大部分业务环境的备份窗口了。对于超过 2TB 的大库可以考虑把BACKUP拆成多段BACKUP DATABASE SECTION SIZE每段 8GB 左右让 RMAN 以数据文件为单位分段备份这样也能避免一个超大表空间备份时长时间霸占单通道。需要特别指出的是在 NBU 的 Media Server 层面还需要检查它允许同时挂载的磁带驱动器或数据流数量。如果是虚拟磁带库或DataDomain这个限制一般很高如果是物理带库驱动器数量就是你硬件的上限超额后作业会在Media request状态卡住很久。5. 排查与避坑NBU备份Oracle翻车现场实录5.1 备份作业显示成功但 RMAN 里查不到备份集现象NBU 控制台里作业状态显示“成功”可你想在恢复窗口里RMAN LIST BACKUP SUMMARY;时却发现一片空白或者只有几条无关紧要的片段。原因这种表面繁荣十有八九是策略类型选错了。如果你在 NBU 策略类型里误选了Standard而脚本内部执行 RMAN 时又没有指定DEVICE TYPE SBT_TAPE那备份作业实际上只是备份了一个普通的文件系统目录完全没有走 NBU 的介质管理。NBU 的成功只是针对“文件收集成功”而不是“数据库备份成功”。解决遇到这种误配置不用慌。先把 NBU 策略类型改为Oracle再在Backup Selection里明确填上RMAN脚本路径或者直接对RMAN脚本的执行方式做调整。另外最直接的验证手段是在 RMAN 里执行一次BACKUP DATABASE VALIDATE命令它会检查介质管理层的接口能不能被正确加载。这条命令如果返回ORA-19511说明libobk.so没被 RMAN 找到那重点就得去检查$ORACLE_HOME/lib和 NBU 客户端的安装目录的软链了。5.2 “rman备份老是满”的日志增长困局现象Oracle 告警日志里频繁提示 “WARNING: Recycle Bin is full” 或者磁盘剩余空间不足经常是闪回恢复区爆掉数据库直接自动挂起。而你在 NBU 侧看归档日志备份调度却很奇怪地发现归档日志策略很勤恳就是总差最后一口“深呼吸”的空间。原因这背后往往是一个经典的设计冲突Oracle 的ARCHIVELOG DELETION POLICY设置成了NONE或者没有和 NBU 的备份策略配合。也就是说FRA 里的归档日志不管备份到没备份到 NBU都被 Oracle 当作可无条件清理的对象于是 NBU 还没读完日志Oracle 自己就把源文件删了亦或是反了过来NBU 备份后没有DELETE INPUTOracle 没收到删除指令于是 FRA 一直在堆积历史日志直到被写满。解决解决思路很清晰。在 Oracle 侧设置一个基于备份删除策略的源头约束让 Oracle 只有在 NBU 确认接收后才清理日志。RMAN CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DEVICE TYPE SBT_TAPE;执行这条配置后Oracle 必须确认归档日志在SBT_TAPE上至少成功备份过一次才允许把源端的归档文件标记为可复用。配合 NBU 归档日志策略里的DELETE INPUT双管齐下闪回恢复区的空间就能进入一种“备份多少删多少”的稳态循环你去查盘的时候它永远保持在 70% 以下再也不用半夜爬起来手动删归档了。5.3 NBU 存储单元写入慢RMAN 会话直接卡死现象Oracle 备份作业的 RMAN 日志停在某个百分比不再输出数据库上的会话数却异常飙升DBA 看到 RAC 节点 CPU 全红业务查询耗时从 200ms 变成 20s。你杀死过几次 RMAN 进程发现每次都在同一个位置卡住。原因问题不一定出在 Oracle 端极大概率在 NBU 存储单元的写入侧。若是物理带库大概率是驱动器被其它备份任务占满了导致当前 RMAN 的 SBT 通道一直处在等待 tape 资源状态若是 DataDomain 或磁盘存储单元则观察 Media Server 的 CPU可能是后端去重进程的吞吐量达到瓶颈同时有大量客户端任务在同时挤兑形成 IO 长尾效应。解决先检查 NBU 的作业活动监控看同一时间段有几个备份策略在并发抢占同一个存储池。建议给 Oracle 备份单独划一个存储单元或磁盘池限制其它文件系统备份不要抢占它的带宽。同时降低 RMAN 通道数减少并发对存储的压力。如果确定是 Media Server 的硬件瓶颈就只能增加节点或迁移去重存储。在 NBU 里调整存储单元优先级是一个立竿见影的手段把 Oracle 备份的优先级调最高文件备份的任务会在调度时自动被排在后面保证关键数据库的备份不被积压。5.4 备份成功却恢复失败日志文件与控制文件的坑现象发生故障真正要用 NBU 备份恢复时发现使用RESTORE DATABASE总是报缺少归档日志或者恢复出来的数据库在打开时报ORA-01547控制文件不一致。原因这个场景我在很多客户那里都看到过。事件主因是在 NBU 的全量备份策略里没有包含控制文件或者 RMAN 脚本中没有开启INCLUDE CURRENT CONTROLFILE。很多朋友以为 NBU 代理会自动把控制文件作为元数据保护但实际上NBU 只保护它接收到的数据流控制文件必须显式加入备份。如果你走的是自定义脚本并且使用了BACKUP DATABASE PLUS ARCHIVELOG而没有控制文件恢复时自然缺了关键的引擎。解决在 RMAN 的备份命令中强制添加控制文件备份BACKUP CURRENT CONTROLFILE FORMAT %U;同时在 NBU 的恢复测试中用BPLIST或NBU 恢复向导检查恢复点是否能包含控制文件。建议在测试恢复时使用RESTORE CONTROLFILE去验证是否可读不要等到生产故障时才发现“最后一根稻草”根本不在备份集里。控制文件就是那个最后后悔药它平时不起眼缺了它整个恢复流程就瘫痪。5.5 NBU 备份状态正常但异地灾备拿不到数据现象生产机房的备份作业每天执行成功但你登录异地机房的 NBU 域或者在灾备中心的 Master Server 上用bpdbjobs查看却连一条任务记录都看不到。原因跨域传输配置缺失。很多企业的生产 NBU 和灾备 NBU 是两套独立的域。生产端 Master Server 的备份只停留在本地存储灾备端希望定时拉取生产端的数据镜像但是你没有在 NBU 中配置“远程复制”或 Vault 策略更常见的是配置了 SLPStorage Lifecycle Policy但目标存储单元的写权限没给灾备域的用户。解决这种场景先不要急着怀疑网络先在灾备 NBU 的存储单元中检阅连接生产 Master Server 的“远程存储单元”的授权主机列表手动执行一次bpcreatesv看看两侧的通信是否正常。如果确认通信无误就用Duplicate Backup功能从生产库复制一份到远程池。这个操作可以把备份集从本地 NBU 域复制到灾备域但没有 SLP 的定期调度每次都得手工右键重复备份不够自动化。最稳妥还是在生产 NBU 中配置一套 SLP 策略设定“备份后复制”动作选择“目标为远程存储单元”。配置 SLP 时要注意本地备份的保留期限要和远程复制保留期限区分开否则源端因过期清理了镜像灾备端的副本也可能遭到连带清除这在 10.4 版本里尤其常见。6. 配置好只是开始验证备份可恢复的三个进阶习惯6.1 每月做一次“整库恢复演练”而不是只做“备份验证”备份做没做成功N BU 的作业状态其实不能完全作数。机器宕机那一刻你需要的不是备份记录而是一条明确的恢复链路。我给自己订了一个死规矩每个月最后一个周六把上周的全量备份恢复到一台闲置测试主机上然后执行ALTER DATABASE OPEN RESETLOGS;。这不是走马观花的Restore Validate而是真正把数据文件、控制文件、归档日志一步步灌进新实例。做过一次真正的异机恢复你会比看任何备份日志都踏实。每次恢复演练后我会用 RMAN 的LIST BACKUP与REPORT SCHEMA核对两份清单确保没有遗漏表空间或数据文件。如果生产环境是 RAC 或 ASM演练主机也需要提前装好同样的网格组件否则 ASM 磁盘组无法正常装载恢复过程必然翻车。6.2 写一个自动检查 NBU 作业日志的脚本日常巡检不必每天打开操作台最简单实用的是跑一段判断逻辑。下面的脚本是我放在 cron 里的每天早晨 8 点执行用于检查前一天的备份作业里是否存在状态码非 0 的记录。#!/bin/bash # 自动巡检 NBU 18 小时以内的任务状态并输出异常 /usr/openv/netbackup/bin/admincmd/bpdbjobs -all_after $(date -d 18 hours ago %m/%d/%Y) | awk -F, $6 ~ /oracle/ $9 ! 0 {print $0} /tmp/nbu_oracle_alert.txt if [ -s /tmp/nbu_oracle_alert.txt ]; then echo [NBU Oracle Alert] 发现异常作业请登录控制台核查 | mail -s NBU Oracle Backup Alert dba-teamexample.com else echo [NBU Oracle] 昨日 Oracle 相关备份作业全部完成暂未发现异常。 fi这段脚本的原理很简单。bpdbjobs会输出全部任务记录用逗号分隔字段。我用awk过滤包含 “oracle” 关键字的行同时检查状态码字段第九列是否等于 0。如果有失败任务它会输出到临时文件并触发邮件告警如果一切正常则输出确认语句。这里有个小心机设置 18 小时的时间窗口而不是从前一天零点开始是为了容忍那些深夜启动第二天早上才跑完的长任务避免因为它们还没结束而被误判为“无备份”。这个脚本虽然简单粗暴但胜在可靠已经稳定运行了两年多。你甚至可以在末尾追加一个播报声音不过在生产环境中看到 “一切正常” 的邮件远比收到告警更让人安心。6.3 养成看日志摘要的习惯而不是只盯作业状态经验告诉我NBU 控制台的作业状态只是一个漂亮的外壳日志摘要才是真正反映内部活动的地方。Oracle 备份的日志藏在两条链路里一条是 NBU 的bpbkar日志在/usr/openv/netbackup/logs/bpbkar目录下另一条是 RMAN 自身的输出日志。推荐每次手动备份时在 RMAN 脚本里加上log参数把日志定向到一个固定目录。同时调低 NBU 日志级别在作业属性里把debug level调成 2 级别虽然日志量会翻几倍但出现问题的时候有足够的数据做回溯定位。记得有一次某核心库备份总是周期性失败我一遍遍盯控制台的作业记录都没发现问题。后来耐着性子把 RMAN 的日志打开发现ORA-19511每次都发生在警报表空间SYSAUX的某个数据文件读取时。后来才查清是那个数据文件出现物理坏块和 NBU 本身毫无关系。从那次以后我在每次交接备份系统时一定会强调“日志摘要比作业状态可靠一百倍”这是 NBU 备份 Oracle 必须养成的第一习惯。希望帮到你。本文还有配套的精品资源点击获取
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表