专栏首页用户7454786的专栏如何删除控制文件中过去rman备份到磁带的备份集

如何删除控制文件中过去rman备份到磁带的备份集

案例分析:

问题描述:监控短信通知一oracle服务器磁盘空间告警,登录主机后确认为备份目录使用率过高,此目录只做rman备份,且rman保留策略为1份,正常不可能磁盘空间告警,查看rman备份脚本,备份存储在本地磁盘,其中脚本中删除过期备份策略没有问题,如下: report obsolete;

crosscheck archivelog all;  crosscheck backup; crosscheck copy; delete noprompt expired backup; delete noprompt expired copy; delete noprompt obsolete;

手工执行删除过期备份命令,出现如下报错(且从备份日志中也看到每次执行此步骤都报错,所以过期备份一直没有删除,导致了磁盘空间紧张): RMAN> delete obsolete; --报错RMAN-06091:备份通道不匹配 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of delete command at 05/07/2008 22:04:21 RMAN-06091: no channel allocated for maintenance (of an appropriate type)

这个命令没有问题,为何会执行失败呢,列出备份信息,发现有SBT类型的备份,突然想起此oracle服务器近期通过rman整库迁移方式搬迁的,而老库是使用的NBU备份到磁带库,则老库的备份信息保留在控制文件中,而新库的控制文件在搬迁过程中使用的是老库的,这些存储在控制文件中的老库中的备份,在检查时被发现,没有分配合适的通道,无法删除。所以执行命令报错了,所以现在问题就是怎样去把控制文件中的那些到磁带的备份信息删掉。 RMAN> list backup summary; List of Backups =============== Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag ------- -- -- - ----------- --------------- ------- ------- ---------- --- 41333 B 0 A SBT_TAPE 15-FEB-17 1 1 NO HOT_DB_BK_LEVEL0 41340 B 0 A SBT_TAPE 15-FEB-17 1 1 NO HOT_DB_BK_LEVEL0 ............. 41372 B A A SBT_TAPE 16-FEB-17 1 1 NO TAG20170216T000929 41386 B F A SBT_TAPE 20-FEB-17 1 1 NO TAG20170220T001015 .............

生产为上,先强制删除类型为disk的过期备份释放空间吧。 RMAN> delete force noprompt obsolete device type disk;

再想办法磁带的备份信息删掉,但问题关键是现在已经没有磁带备份设备了,则无法为其分配磁带通道,怎样去分配一个到磁带的渠道,幸运的是看到了一个类似的案例 Suppose your current backup strategy uses only disk, but you have several old tape backups you want to get rid of. You can allocate a maintenance channel for performing the deletion of the tape backups by using the dummy sbt API (because the media manager isn’t available any longer). You can then use the delete obsolete command to remove the tape backups. Here’s an example showing how to do those things: RMAN> allocate channel for maintenance device type sbt parms 'SBT_LIBRARY=Oracle.disksbt, ENV=(BACKUP_DIR=/tmp)'; RMAN> delete obsolete; Although the media manager isn’t available any longer, RMAN simulates a callout to the media management layer (MML) and successfully initiates the maintenance command to delete the old tape backups you want toget rid of.

于是执行如下,过期与废弃的SBT类型的备份都被删除了: RMAN> allocate channel for maintenance device type sbt parms 'SBT_LIBRARY=oracle.disksbt, ENV=(BACKUP_DIR=/tmp)'; RMAN> delete noprompt obsolete; RMAN> delete noprompt expired backup; RMAN> release channel ;

再查看备份集信息,发现居然还有SBT类型的备份,这是怎么回事?继续执行看看什么情况: RMAN> list backup summary; RMAN> allocate channel for maintenance device type sbt parms 'SBT_LIBRARY=oracle.disksbt, ENV=(BACKUP_DIR=/tmp)'; allocated channel: ORA_MAINT_SBT_TAPE_2 channel ORA_MAINT_SBT_TAPE_2: SID=1281 instance=notedb2 device type=SBT_TAPE channel ORA_MAINT_SBT_TAPE_2: WARNING: Oracle Test Disk API 注:如果曾经使用过SBT,现在没有磁带备份设备,而且rman也无法连接到磁带通道,oracle给出上述测试API。

RMAN> delete backup; List of Backup Pieces BP Key BS Key Pc# Cp# Status Device Type Piece Name ------- ------- --- --- ----------- ----------- ---------- 41333 41333 1 1 AVAILABLE SBT_TAPE bk_41368_1_935977151 41334 41334 1 1 AVAILABLE SBT_TAPE bk_41367_1_935977150 41372 41372 1 1 AVAILABLE SBT_TAPE al_41407_1_936058169 41385 41385 1 1 AVAILABLE SBT_TAPE al_41418_1_936403779 41386 41386 1 1 AVAILABLE SBT_TAPE cntrl_41420_1_936403815 Do you really want to delete the above objects (enter YES or NO)? yes RMAN-06207: WARNING: 18 objects could not be deleted for SBT_TAPE channel(s) due RMAN-06208: to mismatched status. Use CROSSCHECK command to fix status

RMAN> crosscheck backup; RMAN> delete noprompt expired backup; RMAN> list backup summary; 从上述可看到,未删除的SBT备份是因其SBT_TAPE 不匹配状态,需执行CROSSCHECK检查备份的有效性,严重警告:生产库上直接delete backup操作是不允许的,因当前操作做了稳妥的备案,所以执行此命令查看状态,最终发现了问题并解决。

转载:https://www.cnblogs.com/zfox2017/p/6610388.html

原文链接:https://www.cnblogs.com/zfox2017/p/6610388.html

相关文章

  • 基于jsp + SSM的跳蚤管理系统

    jsp+Servlet图书管理系统第一版的第一次更新:免费源码下载,停更,自行下载即可,谢谢:http://download.csdn.net/detail/b...

    别先生
  • 轻松几步搞定SSH连接Git配置

    如果使用ssh的方式管理,需要配置ssh key. 1、打开git bash命令窗口 2、生成ssh key ssh-keygen -t rsa -b 4096...

    Java技术栈
  • 10 个方便的Bash别名

    你有多少次在命令行上输入一个长命令,并希望有一种方法可以保存它以供日后使用?这就是 Bash 别名派上用场的地方。它们允许你将长而神秘的命令压缩为易于记忆和使用...

    机智的程序员小熊
  • 我用Python找到了隔壁蹭网妹子的QQ号

    蹭网的信息全部都在路由器上,所以我们首先要登录路由器,去查探一下线索。果然登入路由器之后,发现有1台陌生的设备华为P30Pro在线,哈哈女神都是用高端手机,我等...

    周俊辉
  • https原理及实践

    转载请注明出处 安全知识 网络安全问题 数据机密性 在网络传输数据信息时,对数据的加密是至关重要的,否则所有传输的数据都是可以随时被第三方看到,完全没有机密性可...

    863987322
  • Docker实践(一):Ubuntu16.04安装Docker

    Docker分为开源免费的CE(Community Edition)版本和收费的EE(Enterprise Edition)版本,本文安装社区版,该版本也是开发...

    loong576
  • [android] 手机卫士手势滑动切换屏幕

    获取手势识别器GestureDetector对象,通过new GestureDetector(context,listener),参数:上下文,监听器

    陶士涵
  • 【PAT甲级】Broken Keyboard

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    喜欢ctrl的cxk
  • 无人驾驶引爆点已至,中国将比美国走得更快?

    智能手机堪称千载难逢的机会,它催生了大量的新经济:移动互联网、共享经济、O2O…在智能手机走向成熟之际,人类开始寻觅下一波产业大潮。虚拟现实(VR)和人工智能(...

    罗超频道
  • ctf工具包 ctf Toolkit 渗透测试工具包 隐秘数据破解

    │ ├── caidao-20160620-www.maicaidao.com.7z

    周俊辉

扫码关注云+社区

领取腾讯云代金券