oracle表空间满

最近一段时间发现程序在晚上同步数据时会假死,程序没有输出异常信息,但是用浏览器访问后页面空白,重启后后正常了,一开始以为是程序晚上同步数据时有2万多个空指针,导致内存溢出,然后卡死,把异常数据清理后发现问题依旧。在同步数据时卡死,那么数据库也嫌疑犯之一。首先查看表空间的使用情况:

 SELECT tbs 表空间名,
       sum(totalM) 总共大小M,
       sum(usedM) 已使用空间M,
       sum(remainedM) 剩余空间M,
       sum(usedM) / sum(totalM) * 100 已使用百分比,
       sum(remainedM) / sum(totalM) * 100 剩余百分比
  FROM (SELECT b.file_id ID,
               b.tablespace_name tbs,
               b.file_name name,
               b.bytes / 1024 / 1024 totalM,
               (b.bytes - sum(nvl(a.bytes, 0))) / 1024 / 1024 usedM,
               sum(nvl(a.bytes, 0) / 1024 / 1024) remainedM,
               sum(nvl(a.bytes, 0) / (b.bytes) * 100),
               (100 - (sum(nvl(a.bytes, 0)) / (b.bytes) * 100))
          FROM dba_free_space a, dba_data_files b
         WHERE a.file_id = b.file_id
         GROUP BY b.tablespace_name, b.file_name, b.file_id, b.bytes
         ORDER BY b.tablespace_name)
 GROUP BY tbs

发现表空间USERS的表空间的已使用百分比是99%.再获取用户的默认表空间:

select username, DEFAULT_TABLESPACE
from dba_users
where username = 'scott';

scott用户的默认表空间刚好是USERS,找到表空间的物理路径:

select * from dba_data_files where tablespace_name ='USERS';

那就把这个表空间进行扩展:

alter database datafile 'D:\ORACLE\PRODUCT\ORADATA\TEST\USERS01.DBF' resize 5120M;

修改USERS表空间时较慢,花了4分多钟.修改完成后再次查询表空间的使用情况,再次查询看否执行成功。

《oracle表空间满》上有1条评论

评论已关闭。