今天在数据库的警报日志中发现如下一条错误:
ORA-20000: Unable to analyze TABLE "yun"."tt", insufficient privileges or does not exist
查了一下,这个自动任务是oracle自己的job :GATHER_STATS_JOB
可通过dba_scheduler_jobs视图查看
dba_scheduler_job_run_details表可以获得JOB的执行情况细节
JOB任务运行的具体过程如下:
select PROGRAM_ACTION from dba_scheduler_programs where PROGRAM_NAME = 'GATHER_STATS_PROG';
既然是oracle自己的job,那么程序上应该是不会有问题的。所以我用yun账号登录,查看有没有tt对象
使用desc tt 报对象不存在
使用select也报对象不存在
使用select * from tab查看对象存在啊!!!!!
使用select dbms_metadata.get_ddl查看这个对象的元数据,也是存在的啊!!!
从网上找到相关资料说是名称大小写的问题。以前也碰见过。比如:创建对象是,对象名称使用双引号引起来,这样创建的对象名称就和双引号内的一模一样。如果引号内有小写字母,那么你查询该对象的时候就会报对象不存在,因为oracle内部都是以大写来显示对象名的。
针对这个问题。大小写的问题是不存在的,因为我在select * from tab和查看元数据的对象的名称都是大写的。
后来想起来是不是统计信息不对称导致的呢?
试试:analyze table tt compute statistics;成功执行
在使用desc tt
既然OK了!
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16566331/viewspace-683066/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/16566331/viewspace-683066/