ORACLE 目录磁盘空间不足解决方法

来源:互联网 发布:三星galaxy j7网络 编辑:程序博客网 时间:2024/04/29 11:29

问题描述:

今天周六, 没想到还接到开发人员的电话说是需要给分区表增加一个索引字段(这是个大分区表共1T多数据1亿多行,1天做1个分区共190个分区),可能因为是菜鸟吧,对ORACLE了解得不够深,因此会遇到各种问题,还有很多东西需要学习的。我想,对整个表删除重建索引,定会需要很长时间,因此想着能不能给单个分区增加字段索引,在网上查了些资料没有找到相关资料,然后又打电话给开发人员,他们的建议是利用PL/SQL工具添加字段时(PL/SQL在进行大数据量增加字段索引时慎用,容易造成temp文件异常过大),于是我照做了,开始是反应特别慢,过了些时间再PL/.SQL报错,提示发生至命错误。于是检查ORACLE 发现登录不进去了,再检查磁盘,空间满了,du -sh /u01/* 列了一下 temp01.dbf 40多G。

 

环境说明:

RHEL6.2+ORACLE11_R2

分区:/ 200G,/u01 50G, /archvielog 500G , /app 3.0T

 

分区还得从规划磁盘空间使用说起,在规划之前其实就觉得/u01 空间太小,本以为50G就足够了,可后来证明是错误的,主要是TEMP,UNDO文件占用太大空间(有些方法可以必免产生undo,如:1, insert  /*+ append */ into table_name, 2, 把表设置为不写日志,TEMP文件的必免产生的方法还没需要研究)

 

解决方法:

1,如果建立的是lvm,可以扩大分区的大小(具体操作找谷歌或度娘)

2, 创建一个临时表空间并将它设置为用户默认的临时表空间。

3,将/u01 下面的oracle 目录拷贝到一个空间比较大的分区上面(这里是使用移动目录做软链接实现)。

1),  cp -r -p  /u01/oracle    /u01_bak/     #-r 拷目录 -p 保留权限  注意:用root用户拷贝

      watch -n 1 du -sh /u01_bak # 这个命令可以查看拷贝情况

2), rm -rf /u01/oracle #确定拷贝完,或者把它移动到其它地方

3), ln -s /u01_bak/oracle  /u01/oracle #这是重要的一步建立软链接

 

注意:rm -rf  删除软链接名加 "/"和不加"/"的区别, 加 '/'为删除软链接及软链接目录下面的所有文件,这里千万要注意。

=============================================================================================================

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任! 谢谢合作!

QQ: 164798858@qq.com
Sina: weibo.com/kaijunfeng
Yahoo: fffygapl@yahoo.com.cn

 

 

原创粉丝点击