写文件失败磁盘空间不足怎么办(如何解决文件系统过大导致的磁盘空间不足)(1)

文章来源掌数科技Hello_Dataknown

话在开头

小编今天要和大家分享一个解决数据库磁盘空间不足的方案。

该类问题具有普遍性,建议大家可以耐心地看完,若遇到此类问题,希望本篇分享可以给你带来帮助

事件背景:磁盘空间不足

故障背景

数据库由于开始规划不好,或者磁盘空间限制,随着时间推移,数据迅速增长,导致数据库存储空间不够,服务器升级也比较困难(服务器资源是足够的,只是分配问题),这就需要我们通过其他方式来解决,但是生产环境中有些变化更为困难。

磁盘分配信息如下图:

写文件失败磁盘空间不足怎么办(如何解决文件系统过大导致的磁盘空间不足)(2)

上图因为客户磁盘的分配不合理,导致数据库所在文件系统使用率快80%,且因为有灾备系统,不能直接跨区添加数据文件及迁移表空间

方案设想:移花接木

对于该情况,我们可以通过在不影响生产数据库的情况下,通过移花接木的方法解决。

具体处理流程如下图:

写文件失败磁盘空间不足怎么办(如何解决文件系统过大导致的磁盘空间不足)(3)

方案验证:步步为营

为验证可行性,特做实验如下。

因实验与生产环境有区别,实施时需要根据实际生产环境情况进行操作

1、查看当前系统的磁盘利用情况,当前数据库安装目录和数据文件,控制文件,日志等所有文件都在/u01文件系统中。

写文件失败磁盘空间不足怎么办(如何解决文件系统过大导致的磁盘空间不足)(4)

2、当前数据库在/u01文件系统下,安装数据库时创建的分区,假设当前的分区已满,存储上其他文件系统还有很大的剩余空间,如其他两个文件系统还有9T磁盘空间。

写文件失败磁盘空间不足怎么办(如何解决文件系统过大导致的磁盘空间不足)(5)

3、原来的数据库目录不动,以防止操作失误后能够快速恢复数据,保证数据库数据零丢失。现在卸载原来4.5T存储所在的文件系统。首先,确认该磁盘下的数据是否需要备份,如不需要直接卸载,否则先备份再卸载。可通过修改/etc/fstab,关机重启服务器,把存储挂载到新建的文件系统下(本例中用/dev/sdc1来代替4.5T存储),把/dev/sdc1挂载到根目录下的/zskjfrqs。

写文件失败磁盘空间不足怎么办(如何解决文件系统过大导致的磁盘空间不足)(6)

4、挂载文件系统,修改/etc/fstab,使文件系统能够开机自动启动文件系统。

写文件失败磁盘空间不足怎么办(如何解决文件系统过大导致的磁盘空间不足)(7)

5、备份数据,一致性关闭数据库,关闭监听,对数据库进行冷备,如果是DG,按照DG规则,停止DG同步即可,实验中因为对/u01分区不做任何修改,因此不需要卸载/u01文件系统,该客户的需要先把数据文件冷备到未卸载的一个4.5T的文件系统下。

写文件失败磁盘空间不足怎么办(如何解决文件系统过大导致的磁盘空间不足)(8)

6、查看当前文件系统,把之前冷备的数据文件迁移至已经重新挂载的文件系统目录下,并确认权限是否正确。

写文件失败磁盘空间不足怎么办(如何解决文件系统过大导致的磁盘空间不足)(9)

写文件失败磁盘空间不足怎么办(如何解决文件系统过大导致的磁盘空间不足)(10)

7.更改环境变量, 通过source命令使更改后的环境变量立即生效。

注: 该客户实际生产环境无需修改环境变量,因为文件系统目录结构一致。

su – oracle

vi .bash_profile

写文件失败磁盘空间不足怎么办(如何解决文件系统过大导致的磁盘空间不足)(11)

9、修改参数文件。

写文件失败磁盘空间不足怎么办(如何解决文件系统过大导致的磁盘空间不足)(12)

全文替换,把u01替换成zskjfrqs,启动数据库并验证数据的完整性,连接业务测试是否正常。

写文件失败磁盘空间不足怎么办(如何解决文件系统过大导致的磁盘空间不足)(13)

10、验证DG是否同步问题(以下截图是做为相同目录实验

写文件失败磁盘空间不足怎么办(如何解决文件系统过大导致的磁盘空间不足)(14)

写文件失败磁盘空间不足怎么办(如何解决文件系统过大导致的磁盘空间不足)(15)

方案总结

通过这种方式处理,如果变更后的文件系统和原来的文件系统名字相同,数据库同步不受影响,最大的保护了数据库的安全,避免了备库重新安装。

当然我们也可以单独给数据文件以及归档文件建立单独的文件系统。具体需要根据具体情况来确定。如果备库不能同步,使用我们E-OBAR直接重新安装恢复即可。

,