Free Up Space Oracle Tablespace (Users)



我是Oracle数据库的新手。我想问一些关于Oracle表空间,特别是用户表空间的问题。我每周都会查看和控制表空间的容量。但是,由于表空间用户增长非常快,因此表空间的大小变得很大。

表空间信息

Tablespace Name                Total Size (MB) Used Space (MB) Free Space (MB)  Usage (%)
------------------------------ --------------- --------------- --------------- ----------
RBS                                       6000          311.38         5688.62       5.19
SYSAUX                                  113000        42662.75        70337.25      37.75
SYSTEM                                   29000         8568.44        20431.56      29.55
TEMP                                     34000              34           33966         .1
USERS                                   154000       103946.94        50053.06       67.5

如何在不丢失业务交易数据的情况下进行清理?

了解USERS中消耗空间的内容非常重要——使用此查询确定消耗空间最多的顶级表

SELECT owner, segment_name, segment_type, sum(bytes)/1024/1024 "Size (MB)" 
FROM dba_segments 
WHERE tablespace_name = 'USERS' 
GROUP BY owner, segment_name, segment_type 
ORDER BY 4 DESC;
  • 检查这些表中的数据,看看是否有不必要的数据可以删除或存档

  • 考虑压缩表

    中的数据
  • 考虑将一些访问频率较低的数据移动到单独的表空间(使用MOVE或通过导出数据+删除表+在不同的表空间中创建新表+然后将数据导入)

  • 向表空间添加额外的数据文件以增加其大小(临时解决方案)

p。任何清理活动都应该经过彻底的测试和验证,以确保业务事务数据不会丢失——定期执行数据库备份,以确保在出现任何问题时可以恢复数据

虽然Lemonina的答案应该可以帮助您管理USERS表空间,但是SYSAUX表空间太大了,值得研究一下。虽然SYSUAX是"Oracle维护的"。对于表空间,您或DBA确实可以很好地控制那里使用了多少空间。运行这个查询查看哪个Oracle占用者在SYSAUX中使用了最多的空间:

select *
from v$sysaux_occupants
order by space_usage_kbytes desc;
例如,当数据库存储了太多的AWR(活动工作负载存储库)数据时,就会出现一个常见的SYSAUX问题。这些数据对于追踪过去8天的表现非常有用。有些dba希望跟踪更长时间的性能,并将默认保留时间从8天增加到更大的数字,而没有意识到数据将消耗多少空间。

每个不同的SYSUAX "占用者"有不同的方式来更改保留期或刷新旧数据。前面的查询将告诉您在手册中查找哪个占有者,或者您可以运行哪个过程来删除旧数据。

相关内容

最新更新