4

我今天注意到在 oracle 中用于缩小 LOB 的 SQL 命令在 12c 中不起作用。

ALTER TABLE SAMPLE_TABLE MODIFY lob (LOB_COLUMN) (SHRINK SPACE)

这将返回 oracle 错误

ORA-10635: 无效的段或表空间类型

在 oracle 文档中提到,SecureFiles LOB 不支持 SHRINK 选项。

我想知道 blob 如何在安全文件中压缩。oracle 会在内部处理吗?

谢谢

4

2 回答 2

2
ALTER TABLE SAMPLE_TABLE MOVE LOB(LOB_COLUMN) STORE AS (TABLESPACE USERS)

注意:与读取方式不同,这是一个move lob操作。这是一项move TABLE操作,同时也在移动一个吊球。

这就是它使索引无效的原因,因为它移动了整个表而不仅仅是 lob。当然,它可能需要很长时间,并且在操作过程中会消耗 2 倍的空间,因为 oracle 会复制数据,并且只有在完成后才会释放旧的段。

于 2021-01-19T11:13:40.607 回答
1

如果要使用 SecureFiles 缩小 LOB,请使用以下语句:

ALTER TABLE SAMPLE_TABLE MOVE LOB(LOB_COLUMN) STORE AS (TABLESPACE USERS)

小心使用- 此命令会使 上的所有索引无效SAMPLE_TABLE,因此您应该在完成 LOB 后重建它们:

ALTER INDEX <index_name> REBUILD;
于 2019-11-01T16:56:48.563 回答