【问题标题】:Skipping unusable indexes causes dblink error跳过不可用的索引会导致 dblink 错误
【发布时间】:2015-04-07 06:39:46
【问题描述】:
每隔一段时间,当我执行以下语句时:
alter session set skip_unusable_indexes=true;
我收到以下错误:
ORA-03135: connection lost contact
ORA-02063: preceding line from my_dblink
- 跳过索引与我的 dblink 有什么关系?
- 如何检测有问题的索引?
- 如何将上述语句的范围仅限于我的本地索引?
【问题讨论】:
标签:
oracle
oracle10g
dblink
【解决方案1】:
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 链接数据库上。你不可以做这个。这是会话或
系统设置。
【解决方案2】:
我怀疑这是一个错误,或者至少是一个未实现的功能。
当您将会话设置为跳过不可用的索引时,您正在修改查询优化器/解析器的行为,我怀疑此修改无法“推送”到您已建立连接的远程实例。
我还怀疑,如果可以避免的话,避免这个问题的关键是在引用任何数据库链接之前更改会话,但即使这样,如果远程数据库没有实现修改,我也不会感到惊讶,因为这实际上是一个不同的会话。