故障发生了! 今天DBA小倩接到一个客户紧急任务,客户说自己的业务数据库突然不好使了,连接也出现了问题,开发人员连库就报这个错
小倩要来了系统的登录用户名密码,登录到了数据库服务器一看
好家伙!根目录满了。
仔细检查发现,之前软件实施的人员把数据库直接装到了根目录下,最后导致根目录空间耗尽,数据库无法写入审计文件,无法登录了。
1 2 3 4 5 6 7 8 9 10 11 12 [root@dbserver /]# df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs tmpfs 1.9G 12M 1.9G 1% /run tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 50G 50G 33M 100% / /dev/mapper/centos-home xfs 445G 33M 445G 1% /home /dev/sda1 xfs 1014M 151M 864M 15% /boot tmpfs tmpfs 378M 0 378M 0% /run/user/0 [root@dbserver /]# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp u01 usr var
根分区是没地方了,可是/home分区却几乎没用。
这就是之前的集成实施人员和软件实施人员没有对接好,两个人都是二把刀,导致这么个结果。
此时如何快速恢复业务呢? 经过检查/home分区下只有用户的默认文件夹,并无其它生产数据,与客户沟通后,小倩建议把/home分区删除,扩容到根分区里,快速恢复业务。
说干就干,首先,先去$ORACLE_BASE目录下释放一点文件,比如下面这些,都可以删除
1 2 /u01/app/oracle/diag/rdbms/orcl/orcl/alert 目录下的log_*.xml文件 /u01/app/oracle/diag/rdbms/orcl/orcl/trace 目录下的日志文件,alert_orcl.log如果不是很大,不建议删除。
备份一下home下的文件,检查了只有oracle目录。
1 2 3 4 5 [root@dbserver home]# ls -al total 0 drwxr-xr-x. 3 root root 20 Sep 7 21:59 . dr-xr-xr-x. 18 root root 255 Sep 7 22:00 .. drwx------ 2 oracle dba 62 Sep 7 21:59 oracle
这里我们用cp 直接复制/home目录下的文件到/root目录下。r表示目录下所有子目录也复制,p表进带权限复制。
1 2 3 cd /home/ cp * -rp /root/ cd ~
下一步,我们要卸载/home分区,把/home分区对应的lv删除。
1 2 3 4 [root@dbserver ~]# umount /home/ [root@dbserver ~]# lvremove /dev/centos/home Do you really want to remove active logical volume centos/home? [y/n]: y Logical volume "home" successfully removed
查看VG有空闲空间,这里我们再把剩余的空间扩容到根分区所属于的名为root的lv里。扩容lv后,在线直接扩容设备/dev/mapper/centos-root对应的根文件系统。扩容成功后根分区空间立即够用了,业务立马恢复。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [root@dbserver ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <499.00g 445.12g [root@dbserver ~]# lvresize -l +100%FREE /dev/centos/root Size of logical volume centos/root changed from 50.00 GiB (12800 extents) to 495.12 GiB (126751 extents). Logical volume centos/root successfully resized. [root@dbserver ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- 495.12g swap centos -wi-ao---- <3.88g [root@dbserver]# xfs_growfs /dev/mapper/centos-root meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=3276800 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=13107200, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=6400, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 13107200 to 129793024 [root@dbserver]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 12M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/mapper/centos-root 496G 50G 446G 11% / /dev/sda1 1014M 151M 864M 15% /boot tmpfs 378M 0 378M 0% /run/user/0
最后别忘记了把备份走文件恢复到/home目录下
1 [root@dbserver ~]# cp -rp oracle/ /home/
完美收工了? 你以为这样就完了么?
没过1天,领导又找到了小倩,说数据库在本地磁盘空间太小了,性能也不能,我们又搞了个磁盘阵列,想把数据库整体迁移到存储上。
下一期我们一起来看看小倩同学怎么操作。
欢迎联系我一起讨论。我的微信号:Eric_xu_2023
也欢迎关注我的公众号: