ITPub博客

首页 > Linux操作系统 > Linux操作系统 > readonly的库部分表查询时报错

readonly的库部分表查询时报错

原创 Linux操作系统 作者:sanxiagirl 时间:2011-06-02 16:42:26 0 删除 编辑

一个历史资料库,开启为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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-02

  • 博文量
    142
  • 访问量
    506072