Linux磁盘满导致Oracle不能用

          由于Linux磁盘爆满,虽然Oracle的监听与服务可以正常启动,但是项目却无法正常访问,所以需要清理Linux磁盘中的大文件,一般都是清理日志文件。

1、查看磁盘占用率:df -hl

Linux磁盘满导致Oracle不能用

        Linux在每个分区中会为root用户保留一部份空间,这是专门留给root用户及其所属组使用,别的用户是无法使用的,一般默认为总数据块的5%。

2、查看大文件
find / -xdev -size +100M -exec ls -l {} \
find . -type f -size +800M
find . -type f -size +800M  -print0 | xargs -0 ls -l(详细信息)
find . -type f -size +800M  -print0 | xargs -0 du -h(具体大小)
find . -type f -size +800M  -print0 | xargs -0 du -h | sort -nr(大小排序)
du -sh *

du -h --max-depth=1   快速定位大文件
查看过后,想知道查出的文件目录下有哪些大文件,可以将max-depth=2;
du -h --max-depth=2 | sort -n

3、删除大文件

4、清空回收站
回收站目录:./local/share/Trash

5、清空大文件(不删除)
> test.txt 

 

如果发现日志比较大,可以选择关闭Oracle的监听日志。

1、查看当前监听的日志路径:lsnrctl status

Linux磁盘满导致Oracle不能用

2、到listener里面,查看对应的log_file和log_status

lsnrctl

Linux磁盘满导致Oracle不能用

show log_file

Linux磁盘满导致Oracle不能用

show log_status

Linux磁盘满导致Oracle不能用

可以看到log_status状态为OFF,OFF即是关闭监听日志;

3、关闭监听日志:set log_status off

4、启动监听日志:set log_status on

5、保存配置:save_config

 

关闭之后,可以清除一下之前的日志:

        排查该分区中的大文件/目录,发现/home/database/oracle/diag/tnslsnr目录占用空间较大。该目录下存放了监听器alert日志和trace日志。