readonly的库部分表查询时报错

一个历史资料库,开启为read only状态,查询表R_FEEDER_ID_T时报错(不管下什么条件都报错,甚至select 1 from R_FEEDER_ID_T也不行)

ORA-00604: 递归SQL级别1出现错误

ORA-16000: 打开数据库以进行只读访问

这个表是一个普通表,不是global temp table,也没有什么特殊的地方,没有trigger.

做10046 trace发现有这么一些信息

=====================
PARSING IN CURSOR #11 len=44 dep=1 uid=1 ct=192 lid=1 tim=1276370678012537 hv=3719699332 ad='656b8508'
ALTER PUBLIC SYNONYM "R_FEEDER_ID_T" COMPILE
END OF STMT
PARSE #11:c=0,e=274,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=1,tim=1276370678012532
=====================
PARSING IN CURSOR #1 len=214 dep=2 uid=51 ct=47 lid=51 tim=1276370678012699 hv=2624602396 ad='656a8628'
BEGIN
    LBACSYS.lbac_events.before_alter(dbms_standard.dictionary_obj_type,
                             dbms_standard.dictionary_obj_name,
                             dbms_standard.dictionary_obj_owner);
  END;
END OF STMT
PARSE #1:c=0,e=29,p=0,cr=0,cu=0,mis=0,r=0,dep=2,og=1,tim=1276370678012695
EXEC #1:c=0,e=132,p=0,cr=0,cu=0,mis=0,r=1,dep=2,og=1,tim=1276370678012922
=====================

还有两条update:

=====================
PARSING IN CURSOR #8 len=78 dep=2 uid=0 ct=6 lid=0 tim=1276370678014051 hv=1963305302 ad='656a14b8'
update dependency$ set p_timestamp=:1, p_obj#=:2 where d_obj#=:3 and p_obj#=:4
END OF STMT
PARSE #8:c=0,e=15,p=0,cr=0,cu=0,mis=0,r=0,dep=2,og=4,tim=1276370678014046
EXEC #7:c=0,e=2811,p=0,cr=0,cu=0,mis=1,r=0,dep=2,og=4,tim=1276370678016944
FETCH #7:c=0,e=53,p=0,cr=3,cu=0,mis=0,r=0,dep=2,og=4,tim=1276370678017055
EXEC #11:c=0,e=4561,p=0,cr=3,cu=0,mis=0,r=0,dep=1,og=1,tim=1276370678017163
=====================
PARSING IN CURSOR #1 len=54 dep=1 uid=0 ct=6 lid=0 tim=1276370678017644 hv=3946387688 ad='656886f8'
update syn$ set node=:2,owner=:3,name=:4 where obj#=:1
END OF STMT
PARSE #1:c=0,e=398,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,tim=1276370678017639
EXEC #1:c=0,e=851,p=0,cr=2,cu=2,mis=1,r=0,dep=1,og=4,tim=1276370678018595
ERROR #1:err=16000 tim=1741938016
=====================

结合起来看ALTER PUBLIC SYNONYM "R_FEEDER_ID_T" COMPILE
,update dependency$ ,syn$应该是和同义词有关的东东

select * from dba_objects where object_name='R_FEEDER_ID_T'发现一个同义词status为invalid

同时其它同义词status为invalid的表查询也报同样的错

将数据库重启,开成read write模式,查询一下这几个同义词失效的表,再看同义词的状态已经变成valid了

再将数据库关掉,开启成read only模式,这时再查之前有问题的表,已经正常了

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10640532/viewspace-696992/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10640532/viewspace-696992/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值