资讯详情

资讯详情

NBU 8.3 备份 Oracle 11g 实战:客户端注册、策略配置与 RMAN 脚本避坑指南

简介这份文档面向需要为企业Oracle数据库搭建备份体系的DBA与运维工程师围绕NetBackupNBU8.3.0.2与Oracle 11.2.0.4环境给出从客户端代理安装到备份策略落地的完整配置参考。资源包为1个docx文档约5.9MB内容以图文步骤与脚本片段为主便于对照实操。文档涵盖Oracle主机安装NBU客户端代理、获取授权token、在Master服务器创建Oracle类型策略、配置hosts与1556、13724端口通信、选择RMAN备份脚本以及修改hot_database_backup.sh中的环境变量、通道、备份类型、标签与保留策略等关键环节并提示热备份执行权限与脚本副本修改注意事项。已有836人学习适合希望快速掌握NBU备份Oracle流程、减少配置踩坑的读者参考。1. 从一次凌晨两点的恢复演练说起NBU 8.3 备份 Oracle 11g 到底难在哪去年冬天做恢复演练一套 RedHat 6.8 上的 Oracle 11.2.0.4 库NBU 8.3.0.2 的 Master 和 Media 早就跑得好好的结果 Oracle 主机上客户端装完策略建完备份任务一跑就挂报的还是那种看不出所以然的 SBT 通道错误。折腾到凌晨两点才发现问题根本不在 RMAN 脚本而是安装客户端时那个 token 粘贴后没回车——密码框不显示任何字符很多人以为没输进去又点了一次结果 token 校验直接失败。这件事让我意识到NBU 备份 Oracle 的坑八成不在数据库侧而在客户端注册和策略配置这些看起来很简单的环节。这份配置文档针对的就是这个场景Master 和 Media 已经就绪现在要给 Oracle 主机装 agent、建 policy、改 RMAN 脚本、跑通全量和增量备份。它适合手里有 NBU 环境、需要给 Oracle 11g 上备份的 DBA 或系统管理员也适合正在做备份方案选型、想搞清楚 NBU 对 Oracle 到底怎么接的运维。下面按实际落地顺序拆开讲每一步都落到参数和命令上。2. 客户端 agent 安装token 校验、hosts 解析与端口放行2.1 安装包选择与解压NBU 8.3.0.2 的客户端安装包分两个Windows 用NetBackup_8.3.0.2_CLIENTS1.tar.gzLinux/Unix 用NetBackup_8.3.0.2_CLIENTS2.tar.gz。别下错CLIENTS1 是 Windows 的CLIENTS2 才是 Linux 的。下载入口在 Veritas 支持站点选产品和版本号就能看到。传到 Oracle 主机上之后解压tar -xzf NetBackup_8.3.0.2_CLIENTS2.tar.gz cd NetBackup_8.3.0.2_CLIENTS2 ls解压后目录里会有install、NBU、packages这些。安装脚本是install直接跑就行。注意 RedHat 6.8 的 glibc 版本比较老如果报库依赖错误先确认系统补丁打到最新NBU 8.3 对 RHEL 6.x 的支持是有的但需要基础库完整。2.2 安装过程中的三个关键输入运行./install之后交互界面会依次问几个东西Master Server 的 IP 或 hostnameMedia Server 的地址授权 token前两个填错还能改token 填错就得重来。token 在 Master 服务器上找路径是/usr/openv/netbackup/bin/admincmd/nbgetconfig -L或者直接在 Java Console 的 Host Properties 里看。找到 valid token 之后复制。这里有个血泪经验token 输入界面是密码框粘贴后屏幕上什么都不显示这是正常的。粘贴完直接回车不要因为看不到字符就再点一次或者手动敲。我见过有人粘贴了三次结果 token 前面带了三个不可见字符校验直接失败。安装完成后验证/usr/openv/netbackup/bin/bpclntcmd -pn这个命令会返回客户端注册到 Master 的信息能看到 Master 主机名和客户端自己的 hostname 就说明注册成功了。如果返回空或者报错先检查/usr/openv/netbackup/bp.conf里的 SERVER 条目是不是指向正确的 Master。2.3 hosts 与端口三台机器必须互相认识文档里特别强调了一点Oracle 主机、Master 主机、Media 主机三方的/etc/hosts都要配全而且网络和端口必须通。这不是可选项是硬性前提。端口方面NBU 默认用 1556客户端与 Master 通信和 13724备份数据传输。用telnet或nc从 Oracle 主机分别测 Master 和 Media 的这两个端口telnet master_ip 1556 telnet media_ip 13724如果 telnet 不通先查防火墙。RHEL 6.8 默认的 iptables 规则可能把这两个端口挡了。临时放行iptables -I INPUT -p tcp --dport 1556 -j ACCEPT iptables -I INPUT -p tcp --dport 13724 -j ACCEPT service iptables savehosts 文件里三台机器的正反向解析都要能对上。常见做法是每台机器的/etc/hosts里都写上三行IP 和 hostname 一一对应。如果 hostname 解析不一致NBU 在建立连接时会用 hostname 去反查查不到就超时。提示安装完客户端后在 Master 上跑bpclntcmd -hn oracle_hostname确认能解析到 Oracle 主机。如果这一步不通后面 policy 里加客户端也会失败。3. Master 上建 Policy类型选 Oracle、存储选 Media、客户端选脚本模式3.1 Policy 类型与存储单元在 Master 的 Java Console 或 Web Console 里新建 Policy几个关键项配置项值说明Policy typeOracle必须选 Oracle不是 StandardPolicy storage对应的 Media Server选实际承载备份数据的 MediaPolicy volume pool按需没有特殊要求就用默认池Client for use with scripts勾选允许用 RMAN 脚本驱动备份Policy type 选 Oracle 之后NBU 会自动加载 Oracle 相关的备份选项。Storage 选错会导致备份任务分配到错误的 Media数据写不到预期的磁带或磁盘池。3.2 Schedule 设置全量与增量的对应关系Schedule 按实际需求建但要注意 NBU 的 schedule type 和 RMAN 脚本里的NB_ORA_FULL、NB_ORA_INCR、NB_ORA_CINC环境变量是对应的Automatic Full →NB_ORA_FULL1→ 脚本里走INCREMENTAL LEVEL0Automatic Differential Incremental →NB_ORA_INCR1→ 脚本里走INCREMENTAL LEVEL1Automatic Cumulative Incremental →NB_ORA_CINC1→ 脚本里走INCREMENTAL LEVEL1 CUMULATIVE常见做法是每周一次全量、每天一次差异增量。Schedule 的窗口期要留够Oracle 库大的话全量可能跑几个小时窗口太短会被 NBU 强制终止。3.3 Clients 与 Backup SelectionsClients 里选 client for use with scripts然后添加 Oracle 主机的 hostname。这里填的 hostname 必须和 Oracle 主机上hostname命令的输出一致也要和 hosts 文件里的解析一致。Backup Selections 里填 RMAN 脚本的绝对路径。默认 sample 脚本在/usr/openv/netbackup/ext/db_ext/oracle/samples/rman这个目录下有hot_database_backup.sh、cold_database_backup.sh等。不要直接改 sample 文件复制一份到别的地方再改。sample 文件在 NBU 升级时会被覆盖改了也白改。mkdir -p /usr/openv/netbackup/ext/db_ext/oracle/scripts cp /usr/openv/netbackup/ext/db_ext/oracle/samples/rman/hot_database_backup.sh \ /usr/openv/netbackup/ext/db_ext/oracle/scripts/hot_database_backup.sh chmod 755 /usr/openv/netbackup/ext/db_ext/oracle/scripts/hot_database_backup.shBackup Selections 里就填这个新路径。注意脚本的执行用户NBU 默认用 root 跑脚本内部会su - oracle切换到 Oracle 用户执行 RMAN。注意如果 Oracle 主机上oracle用户的 shell 是 csh 或 tcsh脚本里的export语法要改成setenv否则 RMAN 执行时环境变量传不进去。4. 改 RMAN 脚本环境变量、SBT 库路径与通道分配4.1 必须改的五个变量hot_database_backup.sh里有一段 USER CUSTOMIZABLE VARIABLE SECTION下面这几个变量必须按实际环境改ORACLE_HOME/u01/app/oracle/product/11.2.0/db_1 ORACLE_SIDorcl1 ORACLE_USERoracle ORACLE_TARGET_CONNECT_STRsys/密码 RMAN_SBT_LIBRARY/usr/openv/netbackup/bin/libobk.so64ORACLE_HOMEOracle 软件安装路径11g 一般是/u01/app/oracle/product/11.2.0/db_1ORACLE_SID目标数据库的 SID不是服务名ORACLE_USER执行 RMAN 的 OS 用户通常是 oracleORACLE_TARGET_CONNECT_STR连接串格式是sys/密码如果用了 TNS alias 就写sys/密码TNS别名RMAN_SBT_LIBRARYSBT 库路径64 位系统用libobk.so6432 位用libobk.soRMAN_CATALOG默认是nocatalog如果用了恢复目录就改成catalog user/passwdnet_service_name。没有恢复目录的话保持 nocatalog但要注意控制文件的自动备份要单独做脚本里已经包含了CURRENT CONTROLFILE的备份。4.2 通道分配与备份格式脚本里 RMAN 命令部分默认分配了两个 SBT_TAPE 通道ALLOCATE CHANNEL ch00 TYPE SBT_TAPE PARMS SBT_LIBRARY/usr/openv/netbackup/bin/libobk.so64; ALLOCATE CHANNEL ch01 TYPE SBT_TAPE PARMS SBT_LIBRARY/usr/openv/netbackup/bin/libobk.so64;两个通道意味着并行度是 2如果 Media Server 的磁带驱动器多可以加到 4 个通道但不要超过实际可用的驱动器数量否则通道会等待。备份格式串FORMAT bk_%s_%p_%t里的%t是必须的NBU 靠这个时间戳来唯一标识备份片。归档日志备份部分BACKUP filesperset 20 FORMAT al_%s_%p_%t ARCHIVELOG ALL DELETE INPUT;DELETE INPUT表示备份完成后删除已备份的归档日志。如果归档日志还要保留一段时间做其他用途把DELETE INPUT去掉改成DELETE INPUT之前先确认归档保留策略。4.3 脚本执行逻辑与日志脚本开头会把 stdout 和 stderr 重定向到${0}.out也就是脚本同目录下的hot_database_backup.sh.out。每次执行前会删掉旧日志所以只保留最后一次的。如果要做历史审计把删日志那几行注释掉。脚本里有一段判断 NB_ORA 环境变量的逻辑if [ $NB_ORA_FULL 1 ]; then BACKUP_TYPEINCREMENTAL LEVEL0 BACKUP_TAG${BACKUP_TAG}_inc_lvl0 elif [ $NB_ORA_INCR 1 ]; then BACKUP_TYPEINCREMENTAL LEVEL1 BACKUP_TAG${BACKUP_TAG}_inc_lvl1 elif [ $NB_ORA_CINC 1 ]; then BACKUP_TYPEINCREMENTAL LEVEL1 CUMULATIVE BACKUP_TAG${BACKUP_TAG}_inc_lvl1_cinc fi这段决定了从 NBU schedule 触发的备份走哪种类型。手动执行脚本时这些变量为空会走默认的INCREMENTAL LEVEL0也就是全量。RMAN_SEND部分会把NB_ORA_SERV、NB_ORA_CLIENT、NB_ORA_POLICY这些变量通过SEND命令传给 RMAN 通道确保备份任务在 NBU 侧能正确关联到对应的 Master、客户端和 policy。如果这部分没配对备份可能跑成功但 NBU 的 Job Monitor 里看不到关联信息。提示改完脚本后先用 oracle 用户手动跑一次./hot_database_backup.sh确认 RMAN 能连上、SBT 通道能分配、备份能写到 Media。手动跑通了再交给 NBU schedule 触发。5. 避坑排查token 失败、SBT 报错、hosts 不一致与归档删除5.1 token 校验失败客户端注册不上现象安装客户端时输入 token 后提示 invalid或者安装完成但 Master 上看不到客户端。原因token 粘贴时带了不可见字符或者 token 已经过期。NBU 的 token 有有效期默认是 24 小时过期后需要重新生成。解决在 Master 上重新生成 token用nbgetconfig或 Java Console 的 Host Properties 里的 Authorization 选项。复制时用CtrlShiftC而不是鼠标选中避免带入空格。粘贴后直接回车不要多次粘贴。5.2 RMAN 报 SBT 通道分配失败现象备份任务启动后 RMAN 报ORA-19554: error allocating device, device type: SBT_TAPE或ORA-27211: Failed to load Media Management Library。原因RMAN_SBT_LIBRARY路径不对或者libobk.so64文件不存在。NBU 客户端安装后这个库应该在/usr/openv/netbackup/bin/下。解决确认路径和文件存在ls -l /usr/openv/netbackup/bin/libobk.so64如果文件不存在说明客户端安装不完整重新安装。如果路径对但还报错检查 Oracle 用户是否有权限读这个库以及LD_LIBRARY_PATH是否包含 NBU 的库路径。5.3 hosts 解析不一致导致连接超时现象备份任务卡在 connecting to client 或者报cannot connect to client。原因Oracle 主机、Master、Media 三方的 hosts 文件里 hostname 和 IP 的对应关系不一致或者某一方缺少另一方的解析记录。解决在三台机器上分别跑ping hostname和ping ip确认正反向都能通。hosts 文件里每台机器的条目格式要统一不要混用短名和 FQDN。NBU 默认用 hostname 做标识如果 Oracle 主机的 hostname 改了但 hosts 没同步也会出这个问题。5.4 归档日志被删导致恢复不完整现象备份成功但恢复时发现归档日志缺失只能恢复到某个时间点之前。原因脚本里ARCHIVELOG ALL DELETE INPUT在备份完成后立即删除了归档日志如果备份本身有问题比如备份片损坏归档日志已经没了恢复就断了。解决在归档日志备份策略稳定之前先把DELETE INPUT去掉改成备份后保留归档。确认备份可恢复之后再改成DELETE INPUT或者用DELETE INPUT配合归档日志的保留策略。另外控制文件的自动备份要确保开启nocatalog模式下控制文件备份是恢复的关键。5.5 备份窗口不够导致任务被终止现象全量备份跑到一半被 NBU 强制结束Job Monitor 里显示 status 150 或 196。原因Schedule 的窗口期设置太短或者备份数据量超出预期Media 的写入速度跟不上。解决先算一下全量备份的实际耗时把 Schedule 的窗口期设成实际耗时的 1.5 倍。如果 Media 是磁带检查驱动器数量和并行度是否匹配。磁盘池的话检查磁盘空间和写入带宽。另外FILESPERSET 5这个参数控制每个备份集包含的数据文件数调大可以减少备份片数量但会增加单个备份片的大小根据实际调整。6. 验证备份可恢复用 RMAN 做一次异机恢复演练备份跑通了不代表能恢复这是两码事。我一般会在备份稳定运行一周后做一次异机恢复演练确认备份片真的能用。6.1 准备恢复环境找一台干净的 Oracle 主机装同版本 Oracle 软件不建库。把 NBU 客户端装好hosts 和端口配通。在 Master 上给这台恢复机建一个临时 policy或者直接用原来的 policy 加一个 client但要注意不要和源库的备份任务冲突。6.2 用 RMAN 做 restore 和 recover在恢复机上用 oracle 用户执行rman target /然后STARTUP NOMOUNT; RUN { ALLOCATE CHANNEL ch00 TYPE SBT_TAPE PARMS SBT_LIBRARY/usr/openv/netbackup/bin/libobk.so64; ALLOCATE CHANNEL ch01 TYPE SBT_TAPE PARMS SBT_LIBRARY/usr/openv/netbackup/bin/libobk.so64; RESTORE CONTROLFILE FROM cntrl_最近一次的备份片编号_时间戳; ALTER DATABASE MOUNT; RESTORE DATABASE; RECOVER DATABASE; ALTER DATABASE OPEN RESETLOGS; }cntrl_开头的备份片是控制文件备份从 NBU 的 Job Monitor 或者bpimagelist命令里找到最近一次的备份片编号。RESTORE DATABASE会从 NBU 拉取全量备份和增量备份RECOVER DATABASE会应用归档日志。6.3 验证数据一致性恢复完成后跑几个关键表的 count 和业务查询对比源库。如果数据对不上检查归档日志是否完整、恢复时间点是否正确。异机恢复演练不用每次都做全库可以选一个关键 schema 做表级恢复验证。注意异机恢复时恢复机的 Oracle SID 可以和源库不同但ORACLE_HOME路径最好一致否则控制文件里的路径信息可能需要用SET NEWNAME重定向。从那以后我每次配完 NBU 备份 Oracle都会在 schedule 跑完第一次全量后强制走一遍异机恢复验证哪怕只恢复一个表空间。备份这东西没验证过就等于没有。希望帮到你。本文还有配套的精品资源点击获取
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →