一 背景
启动一台之前重启过的数据库,在进入oracle用户中后,输入sqlplus命令,发现提示没有该命令,数据库无法正常启动。
二 检查过程
查看环境变量:
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1
export PATH=$PAHT:$ORACLE_HOME/bin
发现环境变量均有设置,进入相应环境变量:
cd /u01/
ls
发现路径为空,也就是说/u01下没有任何东西。
当时怀疑/u01路径被删除了?但是history以后并没有相关记录。
查看/etc/fstab,发现有如下内容:
/dev/mapper/vg_u01-lv_u01 /u01 ext3 defaults 0 0
也就是说/u01只是一个挂载点,真正的内容在lv_u01这个lvm卷中,于是尝试手动进行挂载:
mount -a
发现无法挂载,查看/dev/mapper/下的文件,并没有vg_u01-lv_u01卷组。因此,第一想法是磁盘掉了,于是使用lsblk命令,发现除了/dev/sda设备以外,还有一个/dev/sdb设备,并且已经分了区,但是该设备并没有标志有lv。因此,无法确定lv_u01是否使用的该设备,因此通过strings的方式进行设备内容确认:
strings /dev/sdb1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jFXSnpta-1654097699364)(/Users/wangxin/Library/Application Support/typora-user-images/image-20220601230927792.png)]
从文件内容中发现该设备确实是lv_u01设备;但是为什么没有lv的标签且无法挂载呢?
于是,想要查看lv是否还在:
lvs
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fL7XbJzp-1654097699366)(/Users/wangxin/Library/Application Support/typora-user-images/image-20220601231213715.png)]
lvdisplay
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U9AjZ9KA-1654097699369)(/Users/wangxin/Library/Application Support/typora-user-images/image-20220601231241193.png)]
从上面的信息可以看到,确实是lv没有被激活。
三 处理过程
尝试手动激活
vgchange -ay
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nEodN973-1654097699373)(/Users/wangxin/Library/Application Support/typora-user-images/image-20220601231344231.png)]
此时,提示已经激活,再次进行mount -a操作,发现lv_u01已经成功挂载到u01挂载点下。
剩下的动作,按照正常步骤启动数据库即可。
四 原因定位
根据排查发现,该操作系统为SUSE Linux Enterprise Server 11中,该版本中boot.lvm服务自启动是关闭的,导致操作系统重启后lv无法自动激活:
chkconfig -A|grep boot.lvm
进行重新设置:
chkconfig boot.lvm on
问题完美解决。