【问题标题】:Oracle Database different tablespace for index用于索引的 Oracle 数据库不同的表空间
【发布时间】:2010-11-19 08:24:35
【问题描述】:

我的问题是用于主键索引的表空间与用于表本身的表空间不同。 Oracle 会使用此索引还是无法使用?

因为当我尝试将架构导入到包含该表的 Oracle 时。 Oracle 发出警告,称该主键的索引不可用。我已经通过更改主键索引的表空间来修复模式,再次将其导出,并将其导入数据库而没有警告。

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

这条规则是否也适用于 DB2?

【问题讨论】:

    标签: oracle schema db2 indexing tablespace


    【解决方案1】:

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

    alter index index_name rebuild;
    

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

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

    【讨论】:

    • 对于 DB2,将索引和表存储在不同的表空间中也不是问题。但是,在大多数情况下,您必须在创建表时指定索引表空间。
    【解决方案2】:

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

    【讨论】:

    • 如果您使用数据泵,您可以只映射该表空间(之前:之后)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多