微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

对 Oracle 表使用 SHRINK SPACE 有什么缺点?

如何解决对 Oracle 表使用 SHRINK SPACE 有什么缺点?

我将通过使用存储过程查询一次生产数据库来开发报告数据库

然后存储过程会将结果写入它自己的输出表中。

以下是输出表的架构:

Create table Output (
    Customer_ID                  NUMBER(15)           not null,STD_HASH                     RAW(1000 BYTE),VALID_PERIOD_START           NOT NULL TIMESTAMP(6),VALID_PERIOD_END             NOT NULL TIMESTAMP(6),Address                      VARCHAR2(30 CHAR),period for valid_period(valid_period_start,valid_period_end),Constraint Output_PK Primary Key ( Customer_ID,valid_period_start,valid_period_end )
)

由于存储过程会对输出表执行大量的更新和删除语句,而且这些输出表非常大。我现在最大的一个是 8GB。我正在考虑在存储过程末尾使用“SHRINK SPACE”选项更改这些输出表以回收一些空间。

以下是我将要申请的声明:

    Alter table OUTPUT1 ENABLE ROW MOVEMENT; -- Temporary enable row movement for the table
    Alter TABLE output2 SHRINK SPACE;
    Alter table OUTPUT1 disABLE ROW MOVEMENT;-- disable row movement.

那些输出表是临时表,使用有效期和生产中的 ID 作为主键。

但是,因为我对收缩空间功能非常陌生。谁能告诉我使用这个功能的缺点是什么?

表,基本上不会从这个存储过程以外的任何地方更新。存储过程将被安排每天运行一次。

提前致谢!

解决方法

是的,shrink 有一些限制: (1) 它在收缩操作期间锁定表 (2)它改变了表的rowid。 (3) 需要启用自动段空间管理的表空间。

我们还有其他选择来声明未使用的空间: (1) 出口/进口 (2) dbms_redefinition

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。