1

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

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

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

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

4

2 回答 2

4

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

alter index index_name rebuild;

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

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

于 2010-11-19T09:48:39.350 回答
3

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

于 2010-11-19T14:06:23.420 回答