我的问题是用于主键索引的表空间与用于表本身的表空间不同。Oracle 会使用这个索引还是变得不可用?
因为当我尝试将架构导入到包含该表的 Oracle 时。Oracle 发出警告称该主键的索引不可用。我已经通过更改主键索引的表空间来修复架构,再次将其导出,然后将其导入数据库而没有警告。
这是否意味着主键索引表空间必须始终与表本身的表空间相同?还是对于任何类型的索引(例如列索引)都是如此?
这条规则是否也适用于 DB2?
我的问题是用于主键索引的表空间与用于表本身的表空间不同。Oracle 会使用这个索引还是变得不可用?
因为当我尝试将架构导入到包含该表的 Oracle 时。Oracle 发出警告称该主键的索引不可用。我已经通过更改主键索引的表空间来修复架构,再次将其导出,然后将其导入数据库而没有警告。
这是否意味着主键索引表空间必须始终与表本身的表空间相同?还是对于任何类型的索引(例如列索引)都是如此?
这条规则是否也适用于 DB2?
在不同的表空间中存储索引和数据是完全可以接受的。当您执行以下操作时会发生什么:
alter index index_name rebuild;
之后索引是否仍然无法使用?如果没有,请检查表上的导入参数。例如,SQL*Loader 可以通过直接路径加载使索引无效(这只是一个猜测,你没有提到你是如何加载数据的)。
如果索引仍然不可用,请检查数据异常,尤其是重复键。希望你修复它!
马丁说的很好。但是,没有真正需要分离表空间。为了避免导入时出现表空间错误(假设您使用的是导出/导入而不是数据泵),您可以做的是使用存在的默认表空间创建用户。然后只导入数据库,然后添加索引和约束。