oracle数据库磁盘满了,常用的处理方法:
1)清空无用的大表
2)删除日志
3)转移表空间文件
一、准备工作
0、切换到oracle用户
su - oracle
1、查看oracle安装目录
echo $ORACLE_HOME
/u01/oracle/product/10.2.0/db_1
2、查看实例名称
echo $ORACLE_SID
pbcssit
二、清空无用的大表
1、查看数据占用大小
select * from dba_segments where owner = 'NPBCS';
plsql在BYTES列,右键 – Column Totals – Sum
可以看到数据占用了6G多的空间
建议:按照BYTES大小降序排列,查看是否有历史表、临时表可以清空
2、查看表空间文件
select * from dba_data_files;
查看表空间文件占用磁盘大小,关闭自增功能,修改AUTOEXTENSIBLE为NO
因为有些表自动扩展是无限制的,会把磁盘都占满,测试环境可以把表空间初始值设置的大一点,如果满了手工添加
3、查看表空间剩余大小
select * from dba_free_space;
三、删除日志
1、cd到oracle安装目录下
du -sh * 4.8M adump 5.5G bdump 73M cdump 8.0K dpdump 8.0K pfile 3.0G udump
删除365天前的文件:
find . -name "*" -mtime +365 -exec rm -rf {} \;
四、转移表空间文件
通过软链接把表空间文件移动到有空闲空间的磁盘。
五、oracle状态查询
1、查看oracle自有进程
ps -ef | grep ora_
2、查看oracle SID
echo $ORACLE_SID
3、查看oracle安装目录
echo $ORACLE_HOME
4、查看oracle连接数
ps -ef | grep oracle
看 (LOCAL=NO) 数量,表示不是本地连接,为外部连接进来的
5、查看系统session数量
select * from v$session;
6、查看参数文件配置
select * from v$parameter;