SBT通道非RMAN原生功能,必须依赖第三方介质管理库(MML)如NetBackup、OSB等;RMAN仅调用MML库(如libobk.so或sbtio.dll),不直接控制磁带,配置关键在于MML库路径与PARMS参数,错误将静默失败或回退到DISK。

SBT通道不是RMAN原生功能,必须靠MML库加载
RMAN本身不带磁带驱动能力,SBT_TAPE通道本质是调用第三方介质管理库(MML),比如NetBackup、OSB、CommVault,或者Oracle自带的oracle.disksbt(仅限测试)。你配的不是“磁带”,而是MML的入口——libobk.so(Linux)或sbtio.dll(Windows)必须真实存在、可读、有执行权限。RMAN只检查文件是否存在,不校验导出函数是否完整;放一个空壳库会导致备份静默失败,连错误都不报。
常见错误现象:ORA-19554: error allocating device,但RMAN日志里没细节——实际错误被MML吞掉了,得去查MML服务端日志(如/usr/openv/netbackup/logs/或OSB的osbadmin界面)。
-
libobk.so路径必须绝对准确,且属于运行RMAN的Oracle用户(不能只对root可读) - 若用
oracle.disksbt做本地模拟,PARMS必须写成'SBT_LIBRARY=oracle.disksbt, ENV=(BACKUP_DIR=/tmp/sbt)',漏掉ENV括号会直接fallback到DISK - Windows下注意
sbtio.dll位数要和Oracle进程一致(32/64bit),混用必报ORA-19554
ALLOCATE CHANNEL必须显式写,CONFIGURE不保证生效
即使已执行CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE',RMAN在BACKUP DATABASE时仍可能回退到DISK——因为自动分配逻辑不触发SBT加载,除非你强制让它走SBT路径。
正确做法是:交互式操作必须手动ALLOCATE CHANNEL,脚本中也建议显式写,别依赖CONFIGURE。
- 交互式命令:
ALLOCATE CHANNEL c1 TYPE 'SBT_TAPE' PARMS '...';——单引号不能省,双引号在shell里可能提前被解析 - 脚本中若用
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS '...';,它只影响后续自动分配,但首次BACKUP若不在RUN块里,依然可能走DISK - 并行备份时,每个通道都要独立
ALLOCATE,CONFIGURE CHANNEL 1 DEVICE TYPE ...这种编号配置无效 - 如果用
CONFIGURE DEVICE TYPE SBT_TAPE PARALLELISM 2,只是告诉RMAN“最多开2个SBT通道”,不代表它真会开——仍需ALLOCATE或RUN块内声明
FORMAT参数对磁带完全无效,%U只是逻辑标识
你在RMAN里写的FORMAT '/backup/%U'对SBT通道毫无作用。磁带物理位置、槽位、压缩/加密策略全由MML控制,%U只是提交给MML的内部对象ID,映射关系只在MML管理界面可见。
试图硬塞设备路径会直接报错:
- 写
FORMAT '/dev/nst0'→ORA-19527: physical standby redo log must be renamed - 写
FORMAT 'tape://xxx'→ RMAN拦截非法格式,不尝试传递给MML - 恢复时也一样:
RESTORE CONTROLFILE FROM AUTOBACKUP能成功,靠的是MML反向查询元数据,不是路径扫描
删除磁带备份必须用crosscheck,不能只信RMAN目录
RMAN存储库和MML实际介质状态可能脱节。比如用OSB命令rmpiece删了磁带片,RMAN不知道;反过来,用DELETE OBSOLETE删了RMAN里的记录,磁带物理介质还在。
所以日常维护必须做CROSSCHECK:
- 先
CROSSCHECK BACKUP,让RMAN联系MML确认哪些备份片还在线 - 再
DELETE EXPIRED清理RMAN里已失效的记录 - 若MML不可用又想删旧备份,可用虚拟SBT:
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE SBT PARMS 'SBT_LIBRARY=oracle.disksbt, ENV=(BACKUP_DIR=/tmp)',再跑DELETE OBSOLETE
真正麻烦的不是配置本身,而是MML和RMAN之间那层抽象——你看到的SBT_TAPE通道,背后是两套独立的状态管理和日志体系,出问题时得两边日志对照着看。


















