磁盘空间不足(一)

在项目紧张阶段,遇到服务器磁盘空间不足的问题,导致数据插入报错。通过清理不必要的文件释放了部分空间,然后发现是undo表空间和临时表空间增长过快。通过创建新的临时表空间,切换默认表空间,最终释放了临时表空间,解决了空间不足的紧急情况。同时计划增加磁盘容量以防止类似问题再次发生。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 项目进入白热化阶段,各种问题都有可能出现,当每个人都在忙碌着做自己的事情时,突然一个分公司的支撑人员突然告诉我,当她插入数据的时候报错:磁盘空间不足。这个时候我马上上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上面删除临时表空间数据文件

这样,系统就释放了临时表空间的空间。此外更分公司商量马上添加磁盘空间。这个问题暂时得到解决。 这次过程中有些东西没得得到记录,所以这里只记录了操作步凑。当然处理方法还有多种,各位多多研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值