paweloque Asked: 2011-03-11 03:58:45 +0800 CST2011-03-11 03:58:45 +0800 CST 2011-03-11 03:58:45 +0800 CST 将分区引入现有的非分区表 772 在 oracle 中将范围分区引入现有的非分区表中需要做什么?有没有一种简单且安全的方法来做到这一点? 特别是在表上有很多约束的情况下,比如外键。 oracle 2 个回答 Voted Best Answer Michael Broughton 2011-03-11T06:06:15+08:002011-03-11T06:06:15+08:00 Tim Hall 的这份文档演示了所需的步骤。这不是一件不重要的事情。 创建分区目标表 目标必须定义相同的约束和索引。 交换分区 将段从源表切换到目标表 丢弃旧表 重命名新表及其约束 分割分区 根据需要将单个大分区拆分为较小的分区 D. Lohrsträter 2022-07-05T03:53:26+08:002022-07-05T03:53:26+08:00 只要表不是类型,就不能将分区添加到非分区表PARTITIONED。 您可以创建一个新的分区表并将非分区表添加为它的分区。 另一种方法是使用dbms_redefinition包,它非常强大且使用灵活,大多数步骤都可以在后台完成。通常,它分两个阶段工作: 在后台创建分区表和预填充的在线操作。 切换到新表。在线,但不建议在重负载下使用。 但是,它并不容易使用,您可能会陷入一些陷阱。 从 Oracle 12.2.0.1 开始,ALTER TABLE有一个新modify_to_partitioned子句,允许将其转换为分区表。但是,有一些限制,您不能使用相同的方法将其转换回非分区。 甚至还有一个ONLINE子句以及UPDATE INDEXES带有将索引定义为本地或全局索引的选项的子句。
Tim Hall 的这份文档演示了所需的步骤。这不是一件不重要的事情。
只要表不是类型,就不能将分区添加到非分区表
PARTITIONED
。您可以创建一个新的分区表并将非分区表添加为它的分区。
另一种方法是使用
dbms_redefinition
包,它非常强大且使用灵活,大多数步骤都可以在后台完成。通常,它分两个阶段工作:但是,它并不容易使用,您可能会陷入一些陷阱。
从 Oracle 12.2.0.1 开始,
ALTER TABLE
有一个新modify_to_partitioned
子句,允许将其转换为分区表。但是,有一些限制,您不能使用相同的方法将其转换回非分区。甚至还有一个
ONLINE
子句以及UPDATE INDEXES
带有将索引定义为本地或全局索引的选项的子句。