2012-09-07 61 views
1

我很好奇,如果这是可能的。更改基于列表的分区的分区键

如果我当前分区有一个基于col1的列表分区,并且想要将我的分区结构移动到基于col2的分区结构,那么是否需要重新创建表,删除旧表并重命名新表?

或者有没有更简单的方法。

+0

有没有理由不能去创建/删除/重命名路线?看起来很简单。 – tbone

+0

我不认为有办法改变现有表上的分区 - 这种或那种方式你必须做创建/复制/删除/重命名序列。有一个系统包可以帮助分区 - 现在不能记得名字 - SYS.DBMS_PART或类似的东西。寻找它,它可能会节省你编写一堆代码。分享并享受。 –

+0

你可能会考虑在[dba.se](http://dba.stackexchange.com/)上发布这样的问题 - 我个人认为这样会更好。 – 2012-09-08 12:44:13

回答

2

您确实需要物理移动行,因为关于分区的全部要点是行是共址的。但是有一个更简单的方法来实现这一点。我认为在线重新定义是这种方式。它不仅需要从你那里减少护理费用,而且还维护表格的临时版本,允许用户继续使用表格。

简而言之,该过程是:使用新的分区方案创建表的空白版本,并让DBMS_REDEFINITION发挥它的魔力。 Find out more。 (注:我从来没有真正使用过这种方法来改变分区键:但我用它来把非分区表转换成分区表,我不明白为什么它也不能工作在你的场景中)。