`

不同备份策略不兼容引起的磁盘空间故障解决实例

阅读更多


应用系统生命周期是一个整体,除了最开始的需求调研、开发测试和上线,更长的时期是在运维方面。应用系统的价值体现也就是在运维阶段,一个经常报错故障的系统运维环境,是很难获得良好的用户体验的。

在实践中,软件开发商和运维方面如果没有完善的沟通交流,新系统是不容易融入原有的运维体系中的,更有甚者会引起很多其他故障。本篇就介绍一个由于备份策略冲突引起的磁盘空间故障。



1、环境介绍和故障



笔者最近接收一个系统,上线运维一年余。交接时候,业务部门反映曾经出现磁盘空间占满故障。当时引起整个系统瘫痪,最后联系开发商介入才解决问题。但是当时反馈也没有彻底解决,只能定时找开发商进行处理。

由于资料信息渠道有限,笔者只能实地观察分析。数据库服务器版本为红帽Linux 6.2,数据库版本为11.2.0.3。



[root@DB ~]# cat /etc/RedHat-release

Red Hat Enterprise Linux Server release 6.1 (Santiago)



SQL> select * from v$version;



BANNER

---------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

PL/SQL Release 11.2.0.3.0 - Production

CORE    11.2.0.3.0      Production

TNS for Linux: Version 11.2.0.3.0 - Production

NLSRTL Version 11.2.0.3.0 - Production



故障是从磁盘空间相关的,所以当前磁盘状态df如下。



[root@DB ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda3              59G  8.4G  48G  15% /

tmpfs                3.9G  288K  3.9G  1% /dev/shm

/dev/sda2            194M  41M  143M  23% /boot

/dev/sda1            200M  256K  200M  1% /boot/efi

/dev/sda8            1.4T  351G  976G  27% /data

/dev/sda4              59G  23G  34G  40% /home

/dev/sda5              59G  180M  56G  1% /tmp

/dev/sda6              59G  5.9G  50G  11% /var



系统空间分布比较典型,资源相对来说是比较富裕的。最大容量分区/data目录将近1.4T数据量,使用了351G。从oracle用户环境变量上,数据库软件是安装在/home文件夹下,而数据文件是在/data里面。



[oracle@DB]/home/oracle>env | grep ORA

ORACLE_BASE=/home/oracle/app

ORACLE_HOME=/home/oracle/app/product/11.2.0/db_1

ORACLE_OWNER=oracle

ORACLE_SID=db



业务系统数据shema数据量极小,只有77M。根据业务分析,系统的业务数据只保存在数据库中,而且没有删除的机制。这种情况下,由于业务数据突然膨胀引发的磁盘空间爆满的机率是很低的。

分析重点在于,/data中超过300G的空间消耗是如何出现的?



2、问题分析



进入/data目录,我们发现应用程序在这个目录中进行RMAN备份。



[root@DB rman]# pwd

/data/db/rman

[root@DB rman]# ls -l

total 1312

drwxr-xr-x. 2 oracle oinstall 409600 Mar  7 01:02 bak

-rw-r--r--. 1 oracle oinstall      0 Aug 21  2013 get

drwxr-xr-x. 2 oracle oinstall 921600 Mar  7 01:01 logs

-rwxr-x---. 1 oracle oinstall  1037 Jul  1  2013 rman_full.sh



显然,/data/db/rman目录是应用系统内部的备份机制。目前很多系统都有自带的数据库备份模块,从现在看,系统是计划使用RMAN程序进行备份。

目录中的rman_full.sh脚本是主要执行脚本。



[root@DB rman]# cat rman_full.sh

#!/bin/ksh

#set env

(篇幅原因,有省略……)

$BIN/rman log $BACKUP_LOG/$TARGET_SID.full.$DATE_3.log <<EOF

connect target /

run{

allocate channel c1 type disk ;

allocate channel c2 type disk ;

backup full database format '$BACKUP_PATH/${DATE_2}_full_%d_%s_%p_%u.bak'

tag='full' include current controlfile;

sql 'alter system archive log current';

backup archivelog all format '$BACKUP_PATH/${DATE_2}_archivelog_%d_%s_%p_%u.bak';

delete noprompt expired backupset of archivelog all ;

release channel c1 ;

release channel c2 ;

}

crosscheck backup;

delete noprompt expired backup;

delete noprompt obsolete;

exit;

EOF



从公允的角度看,这个脚本是看不出什么问题的。设置环境变量、目录位置、对数据库和归档文件进行备份。之后进行crosscheck检查expired backup信息,最后依据obsolete retention原则将过期日志进行删除。

目录结构中的bak是存放备份集合的地方(虽然控制文件还是遗留在$ORACLE_HOME/dbs中),logs目录为文本日志。进入bak目录之后,检查备份情况。



[root@DB bak]# ls | more

20130719_archivelog_DB_109189_1_k5of3j4s.bak

20130719_archivelog_DB_109190_1_k6of3j4t.bak

20130719_full_DB_109180_1_jsof3j1b.bak

20130719_full_DB_109186_1_k2of3j4d.bak

20130720_archivelog_DB_109258_1_maof64d1.bak

20130720_archivelog_DB_109259_1_mbof64d2.bak

20130720_full_PDB_109255_1_m7of64cn.bak

(篇幅原因,有省略)

20140307_full_DB_115107_1_d3p2ho2g.bak

20140307_full_DB_115108_1_d4p2ho2g.bak

20140307_full_DB_115109_1_d5p2ho47.bak

201401171422.dmp

full_20130720.tar.gz

rm



注意:备份片中的时间日期是在其中的,从2013年7月开始,一直备份集合就存在。数据总量是300G。



[root@DB bak]# du -h

301G    .



这个显然是有问题,在rman备份脚本中,有明确的delete obsolete语句,将不需要的备份集合删除。确定obsolete的规则是可以从show all中看到。



RMAN> show all;



RMAN configuration parameters for database with db_unique_name DB are:

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP ON;



留存窗口策略是7天。现实bak目录中的内容显然是超过了这个范围。长期的备份留存会让bak占有的空间越来越多,这样即使/data目录有1.4T这么大的空间,也会被撑满的。

那么,确认到撑满的原因之后,就需要确认Oracle在执行应用程序RMAN脚本时候,为什么没有成功删除备份。寻找logs目录中每天的日志信息,可以找到答案。



[root@DB logs]# tail -n 20 db.full.20140307010102.log

  Backup Piece      73678  27-FEB-14          c-1778314713-20140227-02

Backup Set          73679  27-FEB-14      

  Backup Piece      73679  27-FEB-14          a5p1mv7i_1_1

Backup Set          73680  27-FEB-14      

  Backup Piece      73680  27-FEB-14          a6p1mv8m_1_1

Backup Set          73681  27-FEB-14      

  Backup Piece      73681  27-FEB-14          c-1778314713-20140227-03

Backup Set          73684  28-FEB-14      

  Backup Piece      73684  28-FEB-14          /data/awpdb/rman/bak/20140228_full_PDB_115018_1_aap1ncc6.bak

Backup Set          73685  28-FEB-14      

  Backup Piece      73685  28-FEB-14          /home/oracle/app/product/11.2.0/db_1/dbs/c-1778314713-20140228-00

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of delete command at 03/07/2014 01:02:57

RMAN-06091: no channel allocated for maintenance (of an appropriate type)



在删除obsolete的时候出现问题,RMAN-06091表示分配channel出现了问题。于是,问题原因思路就出现了:根源在于删除obsolete的时候报错,长期以来脚本不能成功删除过期备份,最后备份文件撑满文件系统。
  • 大小: 44.2 KB
分享到:
评论

相关推荐

    SQL2008-R2-双实例群集模式安装详解

    SQL Server 2008 R2 双实例群集模式是一种高可用性和容错解决方案,它允许在同一物理或虚拟服务器上运行多个独立的SQL Server实例,每个实例都可以配置为在一个故障转移群集中运行,以确保在主服务器出现故障时能够...

    电脑故障维修大全电子版

    《电脑故障维修大全》是一部全面涵盖电脑及其...总的来说,《电脑故障维修大全》是电脑用户必备的参考资料,它以丰富的实例和详细的操作指南,为电脑故障的解决提供了全方位的帮助,使你在面对电脑问题时不再束手无策。

    oracle10g官方大学备份恢复文档

    8. **Oracle的备份存储**:可以是本地磁盘、网络共享、磁带设备或其他兼容的存储解决方案。理解不同存储介质的优缺点是选择合适备份策略的关键。 9. **备份与恢复的最佳实践**: - 定期备份,保持备份的最新性。 ...

    系统还原备份试验

    这包括了解备份工具的功能,设置合适的备份策略,以及实际操作备份过程。通过备份,可以确保在系统出现问题时能够快速恢复到正常状态,减少数据损失的风险。 1.2 实验软件 实验所需的主要软件有两部分: 1. VMware...

    虚拟磁盘驱动介绍

    它可以用于创建测试环境,方便快速部署和销毁操作系统实例,而无需占用物理硬盘空间。同时,虚拟硬盘也是虚拟化技术的核心部分,如VMware和Hyper-V等虚拟机平台都依赖于虚拟硬盘来存储虚拟机的系统和数据。 “浅析...

    《计算机故障速查手册》

    9. **故障案例分析**:书中可能会包含各种真实案例,通过实例分析帮助读者更好地理解和应用故障解决技巧。 10. **资源与工具推荐**:推荐有用的在线资源、软件工具和社区,以便读者在遇到问题时能快速找到解决方案...

    NBU6.5备份DB2V9测试报告

    然而,考虑到性能优化和故障恢复的需求,建议定期进行备份性能评估,并调整备份策略以适应不断变化的业务环境。此外,保持软件更新,确保兼容性和安全性也是关键。 这份测试报告为在实际环境中部署NBU对DB2数据库的...

    ORACLE DB数据库常见问题解决及诊断技巧集锦-ORACLE DBA故障修复必备手册

    3. **优化备份策略**:通过调整备份策略、增加备份频率等方式提高备份的有效性。 #### Oracle企业管理器/网格控制(OEM/Grid Control) OEM/Grid Control是Oracle提供的管理和监控工具。遇到问题时,可以采取以下...

    电脑常见问题与故障1000例

    通过精选的1000个实例,作者深入浅出地分析了故障现象、成因以及解决策略,帮助读者提升电脑问题解决能力,做到对症下药,避免盲目操作。 1. **硬件故障**:这部分可能涵盖了诸如电源供应问题、内存条故障、硬盘坏...

    pg_probackup:PostgreSQL备份和恢复管理器

    与其他备份解决方案相比, pg_probackup具有以下好处,可以帮助您实施不同的备份策略并处理大量数据: 增量备份:页面级增量备份可让您节省磁盘空间,加快备份和还原速度。 使用三种不同的增量模式,您可以根据...

    rman备份脚本(已测试)

    2. **设置参数**:根据实际需求调整备份策略,例如设置备份的保留策略、通道数量和类型(磁盘、磁带等)。 3. **备份命令**:定义要备份的对象,如整个数据库(DATABASE)、数据文件(FILE)、控制文件...

    计算机故障速查手册.rar

    5. **数据恢复与备份**:书中可能包含关于数据丢失后的应对策略,如使用数据恢复软件、磁盘镜像、系统备份等方法。对于重要数据,用户应了解如何定期备份,以防止因硬件故障或意外删除导致的数据丢失。 6. **安全与...

    集群服务器安装实例

    这可能包括备份策略、数据恢复流程和热站准备。 10. **扩展性考虑**:为了应对未来需求的增长,设计集群时应考虑其扩展性。可以轻松添加新的服务器节点,同时不影响现有服务。 集群服务器安装实例的文档(如“集群...

    专业级的硬盘维修资料

    8. **硬盘接口与兼容性**:讲解不同类型的硬盘接口(如SATA、IDE、SCSI、NVMe等)及其兼容性问题,以及如何解决接口相关的故障。 9. **固件修复**:对于固件损坏的硬盘,如何进行固件修复,包括使用专用工具和手动...

    SQL SERVER 2000企业版在磁盘阵列中的安装

    3. RAID 5(分布式奇偶校验):数据和奇偶校验信息分布在所有硬盘上,允许一个硬盘故障而不影响系统运行。 4. RAID 6(双分布式奇偶校验):与RAID 5类似,但提供了更高的容错能力,可容忍两个硬盘故障。 二、安装...

    FLAC原理、实例与应用指南

    3. **备份与管理**:由于FLAC文件相对较大,合理的备份策略和良好的文件管理系统显得尤为重要,以避免因硬盘故障等原因导致数据丢失。 #### 六、结论 综上所述,FLAC作为一种高效且无损的音频压缩格式,在保证音质...

    oracle database 10g RAC workshop 1

    - 备份与恢复:在RAC环境下,备份策略需考虑集群特性,如使用RMAN进行多实例备份。 5. RAC扩展性与高可用性: - 平滑扩展:添加或移除节点,无需停机即可扩展数据库能力。 - 故障恢复:快速识别并处理节点故障,...

    FushionSphere数据中心虚拟化解决方案FAQ.docx

    FusionSphere 5.1版本进一步优化,支持带快照的虚拟机迁移和不同磁盘格式的兼容,但不适用于链接克隆虚拟机和包含共享卷的虚拟机。 3. 虚拟防火墙:华为的解决方案允许将物理防火墙虚拟化为多个独立的防火墙实例,...

    第三方工具备份第三方工具备份

    3. **备份策略**:介绍全量备份、增量备份和差异备份的区别,以及如何根据需求选择合适的备份策略。 4. **数据恢复**:讲解如何从备份中恢复数据,以及在灾难恢复场景下的最佳实践。 5. **软件安装与更新**:NSIS的...

Global site tag (gtag.js) - Google Analytics