Oracle表空间不足

前言:

        在oracle使用中,当某一个用户的表数据达到千万级别的时候,很容易出现用户表空间不足,导致用户在前端页面新增数据时提示”系统错误,请联系管理员“。出现这种情况常见处理方式有两种:

a、删除该用户备份表(临时解决)

b、新增表空间文件(一个表空间可以有多个表空间文件)

解决方法:当前表空间 新增加表空间文件(需要DBA权限)

        据我了解,oracle单个表空间文件上限为32G,当使用达到32G的时候,就不能增加了。但是一个表空间可以有多个表空间文件,理论表空间是没有上限的。(理解不一定正确,可作参考)

1、查询表空间使用情况:
--  查询表空间使用情况
SELECT UPPER(F.TABLESPACE_NAME) AS "表空间名",
       D.TOT_GROOTTE_MB AS "表空间大小(G)",
       D.NUM_FILES AS "文件数量",
       D.AUTO_EXTENSIBLE AS "自动扩展",
       D.MAX_SIZE_GB AS "最大大小(G)",
       D.FILE_PATH AS "表空间文件全路径",
       D.TOT_GROOTTE_MB - F.TOTAL_BYTES AS "已使用空间(G)",
       TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100, 2), '990.99') || '%' AS "使用比",
       F.TOTAL_BYTES AS "空闲空间(G)",
       F.MAX_BYTES AS "最大块大小(G)"
  FROM (SELECT DD.TABLESPACE_NAME,
               COUNT(*) AS NUM_FILES,
               DECODE(SUM(DECODE(DD.AUTOEXTENSIBLE, 'YES', 1, 0)), COUNT(*), 'YES', 'NO') AS AUTO_EXTENSIBLE,
               ROUND(SUM(DD.BYTES) / (1024 * 1024 * 1024), 2) AS TOT_GROOTTE_MB,
               MAX(ROUND(DD.MAXBYTES / (1024 * 1024 * 1024), 2)) AS MAX_SIZE_GB,
               LISTAGG(DD.FILE_NAME) 
               WITHIN GROUP(ORDER BY DD.TABLESPACE_NAME) AS FILE_PATH
          FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D,
       (SELECT TABLESPACE_NAME,
               ROUND(SUM(BYTES) / (1024 * 1024 * 1024), 2) AS TOTAL_BYTES,
               ROUND(MAX(BYTES) / (1024 * 1024 * 1024), 2) AS MAX_BYTES
          FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F
 WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 1;

2、根据查询到的路径新增表空间文件:(速度较慢,请耐心等待)
--在 USERS 表空间新增表空间文件,默认100m,自动扩展,最小100m,最大1G,上限32G。          
ALTER TABLESPACE USERS ADD DATAFILE '/home/oracle/app/oradata/orcl/USER02.dbf' SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE 1G;

        这里给 USERS 表空间新增了一个100M的表空间文件,由于测试环境存储空间不足就不附截图。等待执行完成之后,使用第一条sql查询表空间使用情况即可看到结果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值