磁盘空间满导致oracle不能正常使用:错误关键字ORA-09817 No space left on device

 五一过完回来,发现系统登录不行,和客户联系了一下,他们说是断电,然后重新开机,还是不行,后面发现IP地址冲突问题。到最后WEB服务器运行起来了,没有进行数据测试。后面小孙测试了一下功能发现数据库不行,不能登录。

sqlplus / as sysdba



SQL*Plus: Release 11.2.0.1.0 Production on Wed May 2 18:39:24 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

ERROR:
ORA-09817: Write to audit file failed.
Linux-x86_64 Error: 28: No space left on device
Additional information: 12

ORA-01075: you are currently logged on

根据提示是:写入认证文件失败,设备上面没有主够的空间。

后面用

df -lh

文件系统                                         容量     已用          可用    已用%% 挂载点
/dev/mapper/vg_c1-lv_root         50G     16G          32G      33%          /
tmpfs                                             16G       6.8G        9.0G      43%        /dev/shm
/dev/sda1                                       485M    35M         425M   8%           /boot
/dev/mapper/vg_c1-lv_home    467G    443G      4.0K     100%      /home


显示出来的是home目录已经用满了,导致数据库启动不起来。

把/home文件夹下面没有用的文件删除,数据库就可以正常启动和使用了。

主要是一些归档日志和备份的文件太多,有个文件占用了22G。

df -lh

文件系统                                         容量  已用          可用    已用%% 挂载点
/dev/mapper/vg_c1-lv_root         50G   16G        32G      33%          /
tmpfs                                             16G     6.8G      9.0G      43%        /dev/shm
/dev/sda1                                       485M   35M        425M   8%           /boot
/dev/mapper/vg_c1-lv_home    467G   287G       156G   65%      /home

这个方法参考:http://space.itpub.net/9521459/viewspace-684600

中间有个需求是找到到底是那个文件夹占用了空间,df -lh只能查看大致的,要查看具体的命令如下

使用以下命令从根目录开始排除查找哪个文件夹最大:

 du --max-depth=1
4       ./Public
4       ./.ssh
68      ./.gnome2
40960   ./.mozilla
4       ./.nautilus
384     ./.gstreamer-0.10
…………………………
291452060       .

这个命令参考:http://szgaea.iteye.com/blog/1042321

使用这个命令也可以用于邮箱服务器查看各个用户的空间使用情况


<think>好的,用户遇到了在Linux x86_64环境下启动Oracle数据库时出现“Error 28: No space left on device”的问题。我需要根据提供的引用资料和我的知识来找出可能的原因和解决方案。 首先,这个错误通常与内存或存储空间不足有关。引用[1]、[2]、[3]提到ORA-27102错误,指出可能是内存不足或设备空间不足。在Linux系统中,“No space left on device”虽然常指磁盘空间,但这里结合错误号28,可能需要考虑其他因素,比如共享内存段或hugepages的设置。 用户可能已经检查过磁盘空间,但问题依然存在,所以需要更深入的分析。引用[3]提到HUGEPAGES和内存配置,这可能与Oracle使用大页内存有关。如果大页内存配置不当,可能导致数据库启动时无法分配足够的内存,从而引发错误。此外,SELinux设置(如引用[4]所述)可能影响共享库的加载,但错误信息更直接指向内存问题。 可能的解决步骤包括检查共享内存参数、调整大页配置、检查可用内存以及SELinux状态。需要指导用户检查这些方面,并给出具体的命令和配置方法。例如,查看/proc/sys/kernel/shmmax的值,计算hugepages的大小,或者检查内存使用情况。另外,可能需要修改/etc/sysctl.conf或Oracle的内存参数。 最后,确保回答结构清晰,分步骤说明,并引用相关资料支持解决方案。</think>### Linux-x86_64环境Oracle启动错误28解决方案 **错误描述** 在Linux x86_64环境下启动Oracle数据库时,出现`ORA-27102: out of memory`和`Linux-x86_64 Error: 28: No space left on device`。该问题通常与内存资源分配或系统参数配置有关,而非直接的磁盘空间不足[^1][^2][^3]。 --- #### 步骤1:验证共享内存配置 Oracle依赖共享内存段(Shared Memory Segments)分配SGA(系统全局区)。 - **检查当前共享内存限制**: ```bash cat /proc/sys/kernel/shmmax cat /proc/sys/kernel/shmall ``` 若`shmmax`(单个共享内存段最大值)或`shmall`(系统总共享内存页数)过小,需调整: ```bash # 临时修改 sysctl -w kernel.shmmax=2147483648 # 示例值(2GB) sysctl -w kernel.shmall=2097152 # 示例值(8GB内存对应) # 永久生效(编辑/etc/sysctl.conf) echo "kernel.shmmax=2147483648" >> /etc/sysctl.conf echo "kernel.shmall=2097152" >> /etc/sysctl.conf sysctl -p ``` --- #### 步骤2:检查HugePages配置(适用于大内存环境) Linux默认使用4KB内存页,而HugePages(大页)可减少内存管理开销。Oracle建议为SGA分配HugePages[^3]。 - **计算所需HugePages数量**: 1. 运行Oracle提供的脚本: ```bash # 切换至Oracle用户 su - oracle sqlplus / as sysdba SQL> show parameter sga_max_size; # 获取SGA大小(单位:MB) ``` 2. 计算HugePages数量: $$ \text{HugePages} = \left\lceil \frac{\text{SGA\_MAX\_SIZE (MB)}}{2} \right\rceil + 1 $$ 3. 修改`/etc/sysctl.conf`: ```bash vm.nr_hugepages = [计算值] ``` 4. 重启生效: ```bash sysctl -p ``` --- #### 步骤3:检查可用内存资源 - **查看内存使用情况**: ```bash free -h ``` 若物理内存或Swap空间不足,需扩展Swap或关闭其他占用内存的进程。 --- #### 步骤4:验证SELinux状态(次要因素) 虽然错误直接关联内存,但SELinux的强制模式可能间接导致资源限制[^4]。 - **临时切换至Permissive模式**: ```bash setenforce 0 ``` - **永久关闭(需谨慎)**: 编辑`/etc/selinux/config`,设置`SELINUX=permissive`后重启。 --- #### 步骤5:检查Oracle内存参数 确保`MEMORY_TARGET`或`SGA_TARGET`不超过物理内存限制: ```sql SQL> alter system set memory_max_target=4096M scope=spfile; # 示例值 SQL> shutdown immediate; SQL> startup; ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

福海鑫森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值