跳过不可用的索引会导致dblink错误

时间:2015-04-07 06:39:47

标签: oracle oracle10g dblink

当我执行以下声明时,每隔一段时间:

alter session set skip_unusable_indexes=true;

我收到以下错误:

ORA-03135: connection lost contact
ORA-02063: preceding line from my_dblink

  • 跳过索引与我的dblink有什么关系?
  • 如何检测有问题的索引?
  • 如何将上述语句的范围仅限于我的本地索引?

2 个答案:

答案 0 :(得分:0)

1)跳过索引与我的dblink有什么关系?

  

没有任何关系。请详细说明您是如何解决问题的。是   你登录sqlplus,一旦改变会话,你的   数据库链接断开连接?

2)如何检测有问题的索引?

select STATUS,index_name,table_name from user_indexes where status='UNUSABLE';

select STATUS,index_name,table_name from user_indexes where status!='VALID' and status!='N/A';

3)如何将上述语句的范围仅限于我的本地索引?

  

我相信你的意思是说连接数据库上的索引而不是   在DB链接数据库上。你不能做这个。这是会议或   系统设置。

答案 1 :(得分:0)

我怀疑这是一个错误,或者至少是一个未实现的功能。

当您将会话设置为跳过不可用的索引时,您将修改查询优化器/解析器行为,并且我怀疑此修改不能被推送"到已建立连接的远程实例。

我还怀疑,如果可以避免这个问题,那么避免这个问题的关键是在引用任何数据库链接之前改变会话,但即便如此,如果远程数据库没有实现修改,我也不会感到惊讶,因为它实际上是一个不同的会议。