LINUX下ORACLE软件、数据文件等所在的磁盘分区空间不足的解决思路
虚拟机中的ORACLE运行的久了,归档、数据文件不断增长,原来安装ORACLE的分区空间不足。
此时可以重新向虚拟机增加一块硬盘,将ORACLE的数据文件或归档的目录挂载到新增加的磁盘分区上。
--我这里未新增加磁盘,而是将原磁盘未划分分区的部分重新分区、格式化来挂载使用。--原理和新增加磁盘来分区并格式化再挂载是一样了。
1.磁盘空间使用情况的查看--需要经常关注磁盘空间使用情况--如果空间使用达到100%,ORACLE数据库正在运行会HANG住,此时通过SQLPLUS登陆,也会有出错提示-具体提示未记录。如未启动,不能启动**。
http://blog.csdn.net/q947817003/article/details/12308099 一次因磁盘空间不足归档无法完成导致DML操作HANG住。
[root@oel-01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 19G 13G 5.4G 71% /
/dev/sda1 99M 21M 74M 22% /boot
tmpfs 3.0G 528M 2.5G 18% /dev/shm
/dev/sda5 4.6G 3.2G 1.2G 73% /backup
计划重新挂载的就是这个目录:---仅为测试,具体根据实际需要来确定需要挂载到新分区的目录。
[root@oel-01 ~]# du -sh /home/oracle/rmanlog/
44K /home/oracle/rmanlog/
[root@oel-01 ~]# ls /home/oracle/rmanlog/
back01.log back11.log back13.log back22.log back24.log
back02_1.log back12.log back21.log back23.log rmanarch2013061815-40.log
############
2.使用fdisk查看分对磁盘分区--我这里因知道我的磁盘未使用完,直接就可以用fdisk来分区。如是新增加磁盘,可以使用 fdisk -l 来查看出新磁盘的名称。 --fdisk用法可以百度。
开始分区:--软件、系统提示为节约篇幅已经省略。
[root@oel-01 ~]# fdisk /dev/sda
Command (m for help): p
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 2563 20482875 83 Linux
/dev/sda3 2564 2824 2096482+ 82 Linux swap / Solaris
/dev/sda4 2825 3916 8771490 5 Extended
/dev/sda5 2825 3433 4891761 83 Linux
Command (m for help): n
First cylinder (3434-3916, default 3434):
Using default value 3434
Last cylinder or +size or +sizeM or +sizeK (3434-3916, default 3916): +100M ----测试用,所以只划分了100M。
Command (m for help): p --验证已经划分了新分区
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 2563 20482875 83 Linux
/dev/sda3 2564 2824 2096482+ 82 Linux swap / Solaris
/dev/sda4 2825 3916 8771490 5 Extended
/dev/sda5 2825 3433 4891761 83 Linux
/dev/sda6 3434 3446 104391 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. ----重读分区表失败,用的扔是旧的分区表--直接格式时会出错找不到新分区。
The new table will be used at the next reboot.
Syncing disks.
##################
3.格式化分区--附格式化时出错解决[root@oel-01 ~]# mkfs -t ext3 /dev/sda6
mke2fs 1.39 (29-May-2006)
Could not stat /dev/sda6 --- No such file or directory ---因为新分区表未被读取
The device apparently does not exist; did you specify it correctly?
对于这个出错提示:
方法一:重启后系统重新读取分区表即可解决。
方法二:使用partprobe命令,partprobe包含在parted的rpm软件包中。partprobe可以修改kernel中分区表,使kernel重新读取分区表。
因此,使用该命令就可以创建分区并且在不重新启动机器的情况下系统能够识别这些分区。
[root@oel-01 ~]# rpm -q parted
parted-1.8.1-29.el5
[root@oel-01 ~]# partprobe
Error: Error opening /dev/md0: No such file or directory
[root@oel-01 ~]# partprobe
[root@oel-01 ~]# mkfs -t ext3 /dev/sda6 ---使用这个语句来格式化新分区
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
26104 inodes, 104388 blocks
5219 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
#####################################
4.挂载目录的测试之直接挂载这种方式不考虑原目录下是否存在文件,原目录有数据而未移出时直接挂载无法访问到原目录下数据
此时原目录下文件仍在原目录所在的磁盘上。
[root@oel-01 ~]# mount /dev/sda6 /home/oracle/rmanlog/
[root@oel-01 ~]# cd /home/oracle/rmanlog/
[root@oel-01 rmanlog]# ls
lost+found
[root@oel-01 rmanlog]# umount /dev/sda6 ---不能在挂载的目录内执行 umount
umount: /home/oracle/rmanlog: device is busy
umount: /home/oracle/rmanlog: device is busy
[root@oel-01 rmanlog]# cd
[root@oel-01 ~]# umount /dev/sda6
[root@oel-01 ~]# cd /home/oracle/rmanlog/
[root@oel-01 rmanlog]# ls
back01.log back13.log back24.log
back02_1.log back21.log rmanarch2013061815-40.log
back11.log back22.log
back12.log back23.log
###################################
4.挂载目录之先移动数据再挂载适用于所需要重新挂载的目录下有文件
[root@oel-01 oracle]# pwd
/home/oracle
[root@oel-01 oracle]# mkdir rmanlogbak
[root@oel-01 oracle]# mv rmanlog/* ./rmanlogbak/
[root@oel-01 oracle]# ls ./rmanlogbak/
back01.log back13.log back24.log
back02_1.log back21.log rmanarch2013061815-40.log
back11.log back22.log
back12.log back23.log
[root@oel-01 oracle]# ls ./rmanlog/
[root@oel-01 oracle]# mount /dev/sda6 /home/oracle/rmanlog/
[root@oel-01 oracle]# ls ./rmanlog
lost+found
[root@oel-01 oracle]# mv ./rmanlogbak/* ./rmanlog 把之前移出的数据再移动回来,
[root@oel-01 oracle]# ls ./rmanlog/ 查看文件都在,重新挂载完成。
back01.log back13.log back24.log
back02_1.log back21.log lost+found
back11.log back22.log rmanarch2013061815-40.log
back12.log back23.log
[root@oel-01 oracle]# ls ./rmanlogbak/
[root@oel-01 oracle]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 19G 13G 5.4G 71% /
/dev/sda1 99M 21M 74M 22% /boot
tmpfs 3.0G 528M 2.5G 18% /dev/shm
/dev/sda5 4.6G 3.2G 1.2G 73% /backup
/dev/sda6 99M 5.6M 89M 6% /home/oracle/rmanlog
##############
5.修改/etc/fstab,实现开机自动挂载分区红色语句为新增的,因为格式时未指定LABEL,直接写上分区名就可以。
[root@oel-01 ~]# vi /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults,size=3G 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-sda3 swap swap defaults 0 0
LABEL=/backup /backup ext3 defaults 0 0
/dev/sda6 /home/oracle/rmanlog ext3 defaults 0 0
"/etc/fstab" 10L, 634C written
[root@oel-01 ~]# mount -a ---这里没有错误提示(执行语句无输出)就证明写入的语句没问题。
[root@oel-01 ~]# mount -o remount,rw,auto /home/oracle/rmanlog ---同样无出错提示
注:mount -a -a代表auto 是将 /etc/fstab 文件中的挂载内容全部重新挂载一次
mount -o remount,rw,auto / -o remount 参数为重新挂载 rw为挂载为可读写 auto 是指定此文件系统是否以允许被mount -a 自动挂载
查看分区及挂载,目录已经挂载到新分区,进入挂载的目录查看,文件都在。--完成。
[root@oel-01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 19G 13G 5.4G 71% /
/dev/sda1 99M 21M 74M 22% /boot
tmpfs 3.0G 528M 2.5G 18% /dev/shm
/dev/sda5 4.6G 3.2G 1.2G 73% /backup
/dev/sda6 99M 5.6M 89M 6% /home/oracle/rmanlog
[root@oel-01 ~]# cd /home/oracle/rmanlog
[root@oel-01 rmanlog]# ls
back01.log back11.log back13.log back22.log back24.log rmanarch2013061815-40.log
back02_1.log back12.log back21.log back23.log lost+found