Oracle:将范围分区更改为哈希分区

Posted

技术标签:

【中文标题】Oracle:将范围分区更改为哈希分区【英文标题】:Oracle: Change range parition to Hash partition 【发布时间】:2013-10-11 18:25:52 【问题描述】:

我在 oracle 中有一个范围分区表,是否可以将该表更改为哈希分区而不删除分区并重新创建?请为此建议命令或好的链接。

我也想知道我们是否可以使用范围分区表在数据库中创建另一个表,但使用另一个分区选项。以下是我所指的示例:

create table t2 
hash partition clause
as select * from t1;

这里 t1 是一个范围分区表,而 t2 将是带有散列分区的新表。这是在 oracle 中的工作吗?

【问题讨论】:

【参考方案1】:

创建一个新表是这里唯一真正的选择。你可以在线重新定义,或者expdp/imdp,但最终归结为

创建一个新表并 移动数据和 获得正确的权限并 添加索引。

其余的只是避免应用程序停机或数据库空间不足等问题的方法。

【讨论】:

感谢您的建议和快速回复。您认为我的问题中提到的查询会起作用还是我应该先撤消分区并使用哈希重做? 我不明白“我应该先撤消分区并用哈希重做” 我现在有一个范围分区的表。我喜欢在同一张表上尝试散列分区。我正在寻找将分区范围分区更改为散列的快速简便的方法。我没有此表的任何备份等。这是 30 亿行的大表,我正在寻找一种花费最少时间的方法。 我会使用 nologging 直接路径插入,其中已在表上定义了任何必需的索引。如果可能,应用并行查询

以上是关于Oracle:将范围分区更改为哈希分区的主要内容,如果未能解决你的问题,请参考以下文章

oracle分区表的分区有几种类型

oracle分区表的分区有几种类型

Oracle分区表

分区索引

oracle分区表的使用和查询

6.3分区表分区表索引--Oracle模式对象