暂无图片
分享
田弼元
2020-05-21
统计信息收集后,数据字典不更新
暂无图片 10M

用脚本收9张表的统计信息,只有前3张表成功收集了。后面6张表显示的是successfully,但是在dba_tab_statistics或者dba_tab_col_statistics、dba_tables都查不到有变化,还和以前一样。
之前的统计信息也很奇怪,6张表都是只有1个分区有数据,明明就很不准确,而且必然过期了,显示的却是没有过期。

收藏
分享
9条回答
默认
最新
田弼元

9张表都是分区表。granularit设置为ALL。设置force=>TRUE,那6张表还是收不到(显示successful,也收了很久,但是在数据字典里查不到)。单独收集一个分区也收不到。统计信息都没有被锁。

暂无图片 评论
暂无图片 有用 0
打赏 0
田弼元

select dbms_stats.get_prefs(‘INCREMENTAL’) 或者(‘INCREMENTAL’,‘用户名’,‘表名’),查得都是false

暂无图片 评论
暂无图片 有用 0
打赏 0
Moone

1、看看alertlog有没有啥报错,遇到过temp空间不足导致统计数据收集不了的;
2、使用dbms_stats.DELETE_TABLE_STATS清掉1个分区的统计数据,重新在收集看看

暂无图片 评论
暂无图片 有用 0
打赏 0
高达

可能需要对sys 用户下的内部对象进行统计信息收集操作,如收集 X$KCCRSR

暂无图片 评论
暂无图片 有用 0
打赏 0
田弼元

alert没有报错

暂无图片 评论
暂无图片 有用 0
打赏 0
田弼元

删除之后,确定dba_tab_statistics和dba_tab_col_statistics里面没有这张表的记录了,再收,还是不行。

暂无图片 评论
暂无图片 有用 0
打赏 0
田弼元

@高达
收了数据字典统计信息之后,再对6表其中1个表收集,还是不行

暂无图片 评论
暂无图片 有用 0
打赏 0
田弼元

已查明原因,optimizer_use_pending_stats参数虽然显示的是FALSE,但是在用户层面被修改为TRUE。

暂无图片 评论
暂无图片 有用 0
打赏 0
田弼元
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交