天使羊波波闪耀光芒 软件及互联网爱好者

31月/180

oracle简单运维

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;