【问题标题】:Add cluster to an existing table in oracle将集群添加到oracle中的现有表
【发布时间】:2011-12-03 18:39:45
【问题描述】:

是否可以将集群添加到现有表中?例如...
我有一张桌子:

CREATE TABLE table_name(  
t_id number PRIMARY KEY,  
t_name varchar2(50));   

集群:

CREATE CLUSTER my_cluster
(c_id NUMBER) SIZE 100;

是否有类似的命令:ALTER TABLE t_name ADD CLUSTER my_cluster(t_id); 或类似的东西?
因为我希望表格看起来像这样:

CREATE TABLE table_name(  
t_id number PRIMARY KEY,  
t_name varchar2(50))  
CLUSTER my_cluster(t_id); 

删除所有连接的表并不是我真正想做的。
谢谢

【问题讨论】:

  • 出于兴趣,为什么要建集群。我已经在 Oracle 工作了将近 20 年,但我从来没有遇到过他们的案例。
  • 事情是我不想建立一个集群,我只是为了我的大学任务。
  • 遗憾的是,大学正在将学生的时间浪费在他们在现实生活中永远不会使用的东西上。祝你学习顺利:)

标签: database oracle alter-table database-cluster


【解决方案1】:

您确实需要了解集群的真正含义。来自the docs:

“集群是由一个或多个表组成的组物理存储 在一起,因为它们共享共同的列并且经常被使用 一起。因为相关的行物理存储在一起,磁盘 访问时间得到改善。”(强调我的)

关键是,集群中的表位于同一位置。这是一种物理安排。因此,为了让数据库聚集现有表,我们必须删除并重新创建它们。

可以通过以不同名称构建聚簇表来最大限度地减少停机时间。在准备好交换之前,您需要使数据与实时表保持同步。执行此操作时,您需要限制对数据库的访问,以防止数据丢失。然后重命名旧表,用正确的名称重命名聚簇表,运行必要的授权并重新编译无效的过程、同义词等。

【讨论】:

  • 我刚问过。我不知道我想如何实现它,我是数据库的新手。好的,那么我想我会删除并重新创建或重新创建具有不同名称的副本。
  • 需要适当的答案
  • 我无法为集群重新创建表。我需要现有表的解决方案(无论如何)。
  • 为什么需要集群表?如果预期的好处是如此之大,以至于它们证明了中断是合理的,那么您应该继续。否则你应该考虑集群是否是你需要的解决方案。
  • @nislam - 我用一种可以最大限度地减少停机时间的方法扩展了我的答案。但是没有提供零中断的解决方案。
猜你喜欢
  • 2019-05-10
  • 2021-05-10
  • 2015-11-26
  • 2020-09-13
  • 1970-01-01
  • 1970-01-01
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多