paweloque Asked: 2011-03-12 01:34:26 +0800 CST2011-03-12 01:34:26 +0800 CST 2011-03-12 01:34:26 +0800 CST oracle 中的 DBMS_REDEFINITION 与 EXCHANGE PARTITION 772 为了对现有的非分区表进行分区,可以使用 EXCHANGE PARTITION 或 DBMS_REDEFINITION。如何决定为表分区选择哪些可能性。这是否取决于表中有多少数据?一种操作比另一种更安全吗? oracle optimization 2 个回答 Voted Best Answer ik_zelf 2011-03-12T04:39:23+08:002011-03-12T04:39:23+08:00 在这两种方式中,您最终都会使用交换分区,并且可能会使用一系列拆分分区。如果您的表没有约束和触发器等许多依赖项,则使用重新定义的路由会更容易,因为它会为您赢得大量时间。您准备新表作为副本并在结束阶段交换对象 ID。如果有很多依赖项,则必须使用不同的名称重新创建它们。该操作将需要一些时间,具体取决于大小。如果您追求安全......在这两种情况下,操作都会失败或成功。桌子上的负载如何?它在迁移过程中是否收到大量更新/插入/删除?您有可用的停机时间吗?如果可能的话,我会使用停机时间而不是重新定义来简化。 Leigh Riffel 2011-03-12T07:05:24+08:002011-03-12T07:05:24+08:00 我同意 ik_zelf(+1)。您可能想要创建一个 Exchange 分区,因此您应该阅读有关它的SQL 语言参考信息以及它必须遵循的规则。 DBMS_Redefinition 的目的是在线而不是离线进行更改。您应该阅读管理员指南以了解它可以帮助您的情况。
在这两种方式中,您最终都会使用交换分区,并且可能会使用一系列拆分分区。如果您的表没有约束和触发器等许多依赖项,则使用重新定义的路由会更容易,因为它会为您赢得大量时间。您准备新表作为副本并在结束阶段交换对象 ID。如果有很多依赖项,则必须使用不同的名称重新创建它们。该操作将需要一些时间,具体取决于大小。如果您追求安全......在这两种情况下,操作都会失败或成功。桌子上的负载如何?它在迁移过程中是否收到大量更新/插入/删除?您有可用的停机时间吗?如果可能的话,我会使用停机时间而不是重新定义来简化。
我同意 ik_zelf(+1)。您可能想要创建一个 Exchange 分区,因此您应该阅读有关它的SQL 语言参考信息以及它必须遵循的规则。
DBMS_Redefinition 的目的是在线而不是离线进行更改。您应该阅读管理员指南以了解它可以帮助您的情况。