#存储空间回收
以下方法用于回收空间。
通过视图查询各个表空间集的空间占用情况
示例(存算一体分布式集群部署)
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;

