如何收缩 Oracle 中的安全文件 LOB
How to shrink secure file LOBs in Oracle
我今天注意到用于在 oracle 中收缩 LOB 的 SQL 命令在 12c 中不起作用。
ALTER TABLE SAMPLE_TABLE MODIFY lob (LOB_COLUMN) (SHRINK SPACE)
这个returns oracle错误
ORA-10635: Invalid segment or tablespace type
在 oracle 文档中提到,SecureFiles LOB 不支持 SHRINK 选项。
我想知道安全文件中的 blob 是如何压缩的。 Oracle 会在内部处理吗?
谢谢
如果您想使用 SecureFiles 收缩 LOB,请使用此语句:
ALTER TABLE SAMPLE_TABLE MOVE LOB(LOB_COLUMN) STORE AS (TABLESPACE USERS)
小心使用它 - 此命令会使 SAMPLE_TABLE
上的所有索引无效,因此您应该在完成 LOB 后重建它们:
ALTER INDEX <index_name> REBUILD;
ALTER TABLE SAMPLE_TABLE MOVE LOB(LOB_COLUMN) STORE AS (TABLESPACE USERS)
注意:与读取方式不同,这是一个 move lob
操作。这是一个move TABLE
操作,同时还移动了一个吊球。
这就是它使索引无效的原因,- 因为它移动了整个 table 而不仅仅是 lob。当然,这可能需要很长时间,并且在操作期间会消耗 2x space,因为 oracle 会制作数据副本,并且只有在完成后才会释放旧段。
我今天注意到用于在 oracle 中收缩 LOB 的 SQL 命令在 12c 中不起作用。
ALTER TABLE SAMPLE_TABLE MODIFY lob (LOB_COLUMN) (SHRINK SPACE)
这个returns oracle错误
ORA-10635: Invalid segment or tablespace type
在 oracle 文档中提到,SecureFiles LOB 不支持 SHRINK 选项。
我想知道安全文件中的 blob 是如何压缩的。 Oracle 会在内部处理吗?
谢谢
如果您想使用 SecureFiles 收缩 LOB,请使用此语句:
ALTER TABLE SAMPLE_TABLE MOVE LOB(LOB_COLUMN) STORE AS (TABLESPACE USERS)
小心使用它 - 此命令会使 SAMPLE_TABLE
上的所有索引无效,因此您应该在完成 LOB 后重建它们:
ALTER INDEX <index_name> REBUILD;
ALTER TABLE SAMPLE_TABLE MOVE LOB(LOB_COLUMN) STORE AS (TABLESPACE USERS)
注意:与读取方式不同,这是一个 move lob
操作。这是一个move TABLE
操作,同时还移动了一个吊球。
这就是它使索引无效的原因,- 因为它移动了整个 table 而不仅仅是 lob。当然,这可能需要很长时间,并且在操作期间会消耗 2x space,因为 oracle 会制作数据副本,并且只有在完成后才会释放旧段。