ORACLE 统计信息
1.查看统计信息被锁定的表
  SELECT OWNER, TABLE_NAME
    FROM DBA_TAB_STATISTICS
   WHERE STATTYPE_LOCKED IS NOT NULL AND OWNER = 'XXXXX'
GROUP BY OWNER, TABLE_NAME;
2.自动统计信息的查看与关闭
3.手动设置统计信息
3.1.普通表设置统计信息
EXEC DBMS_STATS.SET_TABLE_STATS('MONKEY','TESTTABLE',NUMROWS=>175603,NUMBLKS=>2794,AVGRLEN=>109);
SELECT NUM_ROWS,BLOCKS,AVG_ROW_LEN FROM USER_TABLES WHERE TABLE_NAME='TESTTABLE';
3.2.分区表设置统计信息
-- 手动设置分区统计信息
EXEC DBMS_STATS.SET_TABLE_STATS('TABLE_OWNER','TABLE_NAME',PARTNAME=>'PART_P201403',NUMROWS=>690857285,NUMBLKS=>17753800,AVGRLEN=>121);
-- 得到全部分区设置脚本
SELECT    'exec DBMS_STATS.SET_TABLE_STATS('''
       || OWNER
       || ''','''
       || TABLE_NAME
       || ''',partname=>'''
       || PARTITION_NAME
       || ''',numrows=>690857285,numblks=>17753800,avgrlen=>121);'
  FROM dba_tab_statistics
 WHERE     owner = 'MONKEY'
       AND table_name = 'TESTTAB'
       AND PARTITION_NAME IS NOT NULL;
-- 设置分区表整表统计信息
SELECT SUM (NUM_ROWS), SUM (BLOCKS)
  FROM dba_tab_statistics
 WHERE     owner = 'MONKEY'
       AND table_name = 'TESTTAB'
       AND partition_name IS NOT NULL;      
-- sum(num_rows)和sum(blocks)为上一步得到的值,avgrlen和每个分区相同 
EXEC DBMS_STATS.SET_TABLE_STATS('MONKEY','TESTTAB',numrows=>sum(NUM_ROWS),numblks=>sum(BLOCKS),avgrlen=>121);    
4.手动收集统计信息
EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>'MONKEY',TABNAME=>'DYSAM',ESTIMATE_PERCENT=>DBMS_STATS.AUTO_SAMPLE_SIZE,METHOD_OPT => 'for all columns size auto' ,CASCADE => TRUE ,DEGREE=>6);
ESTIMATE_PERCENT:采样百分比(默认值为DBMS_STATS.AUTO_SAMPLE_SIZE,由oracle自动决定,也可以设置为30,采样百分之三十)
METHOD_OPT:
for all columns:统计所有列的直方图
for all indexed columns:统计所有indexed列的直方图
for all hidden columns:统计隐藏列列的直方图
for columns  SIZE 
CASCADE:是否统计索引的统计信息
DEGREE:并行度
5.删除统计信息
EXEC DBMS_STATS.DELETE_TABLE_STATS(OWNNAME => 'MONKEY',TABNAME => 'DYSAM') ;
6.自动统计信息收集的条件
6.1.收集的对象
- 没有统计信息
 - 上次收集万统计信息中间执行过truncate操作
 - 上次收集后表行的变化量超过一定数量的(行的变化量记录在dba_tab_modifications中,调用dbms_stats.flush_database_monitoring_info可以刷新视图)
 
6.2.查看统计信息过时表
select owner,table_name,stale_stats from dba_tab_statistics;
-- stale_stats:no没有过时,yes已经过时,none丢失统计信息
参考:
                    
                
                
            
        
浙公网安备 33010602011771号