代码之家  ›  专栏  ›  技术社区  ›  Troydm

Oracle数据库索引的不同表空间

  •  1
  • Troydm  · 技术社区  · 14 年前

    我的问题是,用于主键索引的表空间与用于表本身的表空间不同。Oracle会使用这个索引还是会变得不可用?

    因为当我试图将模式导入到包含该表的Oracle时。甲骨文抱怨警告说这个主键的索引不可用。我已经通过更改主键索引的表空间来修复这个模式,再次将其导出,并在不发出警告的情况下将其导入数据库。

    这是否意味着主键索引表空间必须始终与表本身的表空间相同?或者对于任何类型的索引(例如列索引)都是这样吗?

    这个规则也适用于DB2吗?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Martin Schapendonk    14 年前

    在不同的表空间中存储索引和数据是完全可以接受的。当您执行以下操作时会发生什么:

    alter index index_name rebuild;
    

    之后索引是否仍然不可用?如果没有,请检查表上的导入参数。例如,SQL*加载器可以通过直接路径加载使索引失效(这只是一个猜测,您没有提到如何加载数据)。

    如果索引仍然不可用,请检查数据异常,尤其是重复键。希望你能修好!

        2
  •  3
  •   erbsock    14 年前

    马丁说的很好。但是,实际上不需要分离表空间。为了避免导入时出现表空间错误(假设您使用的是export/import而不是datapump),您可以使用现有的默认表空间创建用户。然后只导入数据库,然后添加索引和约束。