1、ANALYZE INDEX index_name VALIDATE STRUCTURE;
使用这种OFFLINE方式会比使用ONLINE方式得到更精确的分析结果?
2、使用ONLINE方式,无法在INDEX_STATS中产生分析数据,既然分析是为了验证是否需要重建索引,但INDEX_STATS又没有数据,这种ONLINE方式还有什么用处呢?
3、OFFLINE重建索引是否产生一个4级别的锁,禁止DML操作,但允许SELECT操作?
4、“在收集与CBO优化器不相关的统计信息的时候ANALYZE语句要优于DBMS_STATS包”,请问这里什么是与CBO优化器不相关的统计信息?谢谢指点!

解决方案 »

  1.   

    1、online不产生分析数据,offline能产生分析结果。
    2、貌似没用(该语句的功能是较验索引数据块是否损坏,可能将坏块信息写入告警日志,没测试验证过)。
    3、肯定允许,S锁是一种共享锁,只是阻止其它事务在表上加排它锁。
    4、指的是INDEX_STATS中的信息,DBMS_STATS包并不在INDEX_STATS中生成信息。
      

  2.   

    1、请问这里什么是与CBO优化器不相关的统计信息?
    例如一个表频繁的进行delete、update和insert操作,我要判断这个表的索引是否需要重建,是用dbms_stats还是analyze语句?2、如果用analyze,可以分析表后查看index_stats中的height和del_row比例来判断是否需要重建索引,但如果使用dbms_stats,怎样使用并根据什么值来判断是否需要重建索引呢?
      

  3.   

    建议还是用dbms_stats,这样收集的信息更精确,而且可以并行。
      

  4.   

    CHAINED ROWS
    是什么意思呢?
      

  5.   

    使用ANALYZE后查看index_stats根据其中的值来判断是否需要重建索引,请问如果使用dbms_stats,我如何知道是否需要重建索引呢?另外,dbms_stats不适用于CHAINED ROWS和Validate Structure,请问CHAINED ROWS是什么意思?如果dbms_stats不能Validate Structure,是说对于重建索引的判断就不能用dbms_stats了么?