项目进入白热化阶段,各种问题都有可能出现,当每个人都在忙碌着做自己的事情时,突然一个分公司的支撑人员突然告诉我,当她插入数据的时候报错:磁盘空间不足。这个时候我马上上server上面去看,果然只剩下可怜的40M,1.5T的空间全部洗白。我马上查看表空间的使用情况,很悲剧的是空间不足。
这个时候咋办呢,我把udump下面的文件全部干掉(这些文件一般在单个进程出问题的时候我才会去查看)。干掉之后剩下了2个多G的空间,这个时候查看表空间的使用情况,发现表空间都使用正常,除了undo表空间满了(当时的transaction很多),发现可能是临时表空间增长迅速引起的。此外还有另外一个空间暂有20G左右,目前的办法只有先干掉临时表空间(undo表空间只有6G),把临时表空间挂到另外一个磁盘。
1. 查看所有的表空间
SQL> select * From v$tablespace;
TS# NAME INCLUDED_IN_DATABASE_BACKUP BIGFILE FLASHBACK_ON ENCRYPT_IN_BACKUP
---------- ------------------------------ --------------------------- ------- ------------ -----------------
0 SYSTEM YES NO YES
1 UNDOTBS1 YES NO YES
2 SYSAUX YES NO YES
4 USERS YES NO YES
7 TBS_DATA YES NO YES
8 TBS_INDX YES NO YES
3 TEMP NO NO YES
7 rows selected
2. 查看当前用户的使用表空间情况
SQL> select username,temporary_tablespace from dba_users;
USERNAME TEMPORARY_TABLESPACE
------------------------------ ------------------------------
MGMT_VIEW TEMP
SYS TEMP
DBSNMP TEMP
SYSMAN TEMP
YADX TEMP
SYSTEM TEMP
OUTLN TEMP
MDSYS TEMP
ORDSYS TEMP
CTXSYS TEMP
ANONYMOUS TEMP
USERNAME TEMPORARY_TABLESPACE
------------------------------ ------------------------------
EXFSYS TEMP
DMSYS TEMP
WMSYS TEMP
XDB TEMP
ORDPLUGINS TEMP
SI_INFORMTN_SCHEMA TEMP
OLAPSYS TEMP
MDDATA TEMP
DIP TEMP
SCOTT TEMP
TSMSYS TEMP
已选择22行。
3. 查看目前临时表空间包含的数据文件:
SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
E:\ORADATA\TEMP01.DBF
SQL>
4. 创建一个临时表空间
create temporary tablespace TEMP tempfile 'E:\ORADATA\TEMP01.DBF' size 20G;
5. 将默认临时表空间切换到新的表空间上
alter database default temporary tablespace TEMP;
6. 再次查看所有用户的临时表空间设置
确认没有用户在使用旧的表空间之后,可以删除掉
drop tablespace TEMP;
7. 查看临时表空间综合信息
SQL> select file_name,tablespace_name,bytes/1024/1024 MB,autoextensible from dba
_temp_files;
FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME MB AUT
------------------------------ ---------- ---
E:\ORADATA\TEMP01.DBF
TEMP 20480 NO
8. 最后在host上面删除临时表空间数据文件
这样,系统就释放了临时表空间的空间。此外更分公司商量马上添加磁盘空间。这个问题暂时得到解决。 这次过程中有些东西没得得到记录,所以这里只记录了操作步凑。当然处理方法还有多种,各位多多研究。