假设您有两个分区表:
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位