drop表的索引会导致过程失效么?

xmanliming 2010-07-26 10:34:30
问题:drop表的索引然后重新建立索引会导致过程失效么?如果会的话为什么?
我在2个数据库进行测试的结果不一致。
在数据库1 drop表A的索引过程没有失效
在数据库2 同样drop表A索引调用该表的过程全部失效,不知道是为什么?
备注:数据库1和数据库2是主机和备机 数据完全一致过程、表完全一致。
求高人解答。。。。
...全文
220 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangyunzeng2008 2010-08-02
  • 打赏
  • 举报
回复
这个问题的出现似乎很诡异,常理来说,如果存储过程没有显示引用索引的地方,删除索引是不会导致存储过程失效的。
little_an 2010-07-30
  • 打赏
  • 举报
回复
重新编译一下呢?是否能编译通过?
oraclemch 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 xmanliming 的回复:]
问题:drop表的索引然后重新建立索引会导致过程失效么?如果会的话为什么?
我在2个数据库进行测试的结果不一致。
在数据库1 drop表A的索引过程没有失效
在数据库2 同样drop表A索引调用该表的过程全部失效,不知道是为什么?
备注:数据库1和数据库2是主机和备机 数据完全一致过程、表完全一致。
求高人解答。。。。
[/Quote]

数据库2 里面可能有些了hit之类的强制走索引的select语句,所以你drop掉index后,执行存储过程,就会报错,提示索引不存在的错误。

当你重新建好索引后,执行存储过程就不会报错了。
minitoy 2010-07-27
  • 打赏
  • 举报
回复
数据库版本一样么?
我在10g下试了下,删除索引好像不会导致存储过程失效。
xmanliming 2010-07-27
  • 打赏
  • 举报
回复
数据库1 和数据库2 是主机和备份机所以数据库版本是一致,都是10G
用户在线系统是数据库1
我们测试和调试程序是数据库2 但我们在数据库2上进行的调试程序没有出现 删除索引导致过程失效的问题,但在在线系统上出现了这个问题 。
楼上各位说的 引用hit导致过程失效的情况 为什么在2个数据库操作的结果却不一样呢?
minitoy 2010-07-26
  • 打赏
  • 举报
回复
是不是过程里使用hints引用该索引了?
xmanliming 2010-07-26
  • 打赏
  • 举报
回复
我drop 表索引前没有过程失效,drop后调用该表的过程就全部都失效了。
如果说这条索引之前就已经失效,那么过程之前也应该是失效状态。
gisinfo 2010-07-26
  • 打赏
  • 举报
回复
你drop之前这索引可能丢了,执行的时候报错,就失效了


你可以下建立这索引,重新确认你的存储过程
xmanliming 2010-07-26
  • 打赏
  • 举报
回复
那为什么一个库上过程失效了 一个库上过程没有失效呢?
刚才开会去了 sorry

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧