Issue:
发现vc服务挂了,看log,发现DB问题,登录DB,发现/u00磁盘分区满了,因为没有设置警告,所以已经是100%了。
u00分区是用来放系统表空间和数据库安装目录的,用户表空间在u01,那为什么u00会满呢,发现是temp tablespace在作怪,已经达到了13G,把本来没有分配足够的表空间全部占满了。
为什么临时表空间这么大呢,主要和vc里大量做排序操作有关,我们有几百个VM,每次查找VM时,要么用搜索,要么直接在GUI上排序,估计是这些操作大量消耗了临时表空间,按理说临时表空间在DB shutdown后会自动释放掉,但可能是因为没有shutdown,又或者是其他原因,我们的临时表空间达到了13G。
在本公司DBA专家Samuel的大力协助下.................................解决办法,先删除一些多余文件,使sqlplus '/ as sysdba'命令可以正常login (100%的时候会报无法login,audit文件写不进去),然后在u01分区创建一个新的临时表空间,将系统的临时表空间迁移过去,然后删除原先的临时表空间:
1. 创建新的临时表空间
create temporary tablespace temp02 tempfile '/u01/oradata/vcdb/temp02.dbf' size 2048M autoextend on;
2. 检查当前的临时表空间使用情况
select username, temporary_tablespace from dba_users;
3. 如果有正在处理的事务,通过这个方法来检查session,如果有,kill掉它
select sid,serial# from v$session s ,v$sort_usage t where s.serial#=t.SESSI
ON_NUM;
ALTER SYSTEM KILL SESSION 'sid,serial#';
4. 将系统临时表空间迁移到新的上去
alter database default temporary tablespace temp02;
5. 检查当前的临时表空间使用情况
select username, temporary_tablespace from dba_users;
6. 删除原有的临时表空间
drop tablespace temp including contents;
7. 删除原有的临时表空间文件,有时运行不了,就退出sql,直接rm -f
alter database tempfile '/u00/app/oracle/oradata/orcl/temp01.dbf' offline;
8. 检查当前的表空间数据文件
select name from v$datafile;
阅读(995) | 评论(0) | 转发(0) |