#存储空间回收

以下方法用于回收空间。

通过视图查询各个表空间集的空间占用情况

示例(存算一体分布式集群部署)

SELECT name,SUM(DATAFILES_MAX_SIZE),SUM(DATAFILES_SIZE),SUM(DATAFILES_FREE_BLOCKS),SUM(DATABUCKETS_SIZE) FROM GV$TABLESPACE_SET GROUP BY name;

收缩数据文件

若某个表空间集的数据文件存在大量空闲的数据块,可以按需收缩该表空间集。

示例(存算一体分布式集群部署)

ALTER TABLESPACE SET users SHRINK space;

收缩稳态数据文件

若某个表空间集中稳态数据文件占用了较大空间,可以通过GV$LSC_SLICE_STAT获取每个表存储在slice中的行数信息,并与表的实际行数进行比较。

当表的实际行数远小于稳态数据中存储行数时,可以按需对该表的稳态数据进行梳理,梳理方式包括:

  • 指定compact关键字,合并稳态数据。
  • 指定clean关键字,清理转换任务执行完成后达到延期清理条件的数据。

示例(分布式LSC表)

SELECT OBJECT_NAME,SUM(ROW_COUNT) row_num FROM DBA_OBJECTS, GV$LSC_SLICE_STAT WHERE OBJECT_ID = BO GROUP BY OBJECT_NAME ORDER BY row_num DESC;

OBJECT_NAME                                                          ROW_NUM 
---------------------------------------------------------------- ----------- 
orders_info                                                     106464


SELECT COUNT(*) FROM orders_info;

COUNT(*) 
--------------------- 
                   12


ALTER TABLE orders_info ALTER SLICE ALL compact;


ALTER TABLE orders_info ALTER SLICE ALL clean;

pdf-btn 下载文档 copy-btn 复制链接
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流