今天,一个开发来找我,说是备库的一个用户执行存储过程报错(我们的备库是ora11.2.0.3的active standby)。错误信息如下:
ora-00604:error occurred at recursive SQL level 1
ora-16000 :database open for read-only access
看到这个错误,作为一个ora菜鸟,第一感觉以为是该存储过程有更改数据的操作,而备库是只读的。随后,查看了该存储过程,然而发现该存储过程涉及到的全部都是select语句。这时开发告诉我,应用连接的用户是b,而存储过程是a的,并且在周四的时候b用户执行是没有问题的,在周五执行的时候就楚翔了上述问题,在核对了权限问题后,依然没有解决问题。
后来,登陆到主库,突然间发现存储过程是无效的,问开发,原来是周四晚上,更改了该存储过程导致其无效。在备库上执行的时候,需要重新编译,而备库是只读的,无法重新编译,导致出现了以上的错误。ora菜鸟---伤不起啊!~~~~