假设您有两个分区表:
table1:
- id (primary key = global index)
- created (timestamp of creation)
table2:
- id (primary key = global index)
- t1_id (foreign key to table1.id, a local index was created for this field)
分区在 table1.created 上完成,而 table2 通过 table2.t1_id 上的引用进行分区。
现在如果我运行这个查询:
select * from table1 t1 join table2 t2 on t1.id=t2.t1_id
我得到了一个非常棒的错误:ORA-03113
我无权访问运行 oracle 实例的实际服务器,因此无法检查警报日志。谷歌没有发现任何有用的东西,所以经过一番摆弄后,我认为本地索引可能是问题所在。我尝试添加必要的子句来限制应该定位的分区范围,但无济于事。
我用全局索引替换了 table2.t1_id 上的本地索引并且查询有效。
现在我的问题是:这是一个功能/错误吗?还是本地索引如何工作的逻辑结果?完全是我通过重新创建索引意外解决的其他问题吗?
Oracle 版本:11.2.0.2.0 - 64 位