Analyze分析表或者索引

Analyze分析表或者索引

demo:
--62254
SELECT dt.table_name, dt.num_rows, dt.blocks, dt.empty_blocks AS empty,
       dt.avg_space, dt.chain_cnt, dt.avg_row_len,
       TO_CHAR( dt.LAST_ANALYZED, 'MM/DD/YYYY HH24:MI:SS' )
  FROM dba_tables dt
 WHERE dt.owner = 'INV'
   AND dt.table_name = 'MTL_MATERIAL_TRANSACTIONS';

DECLARE
  v_num_rows NUMBER;
  v_num_blocks NUMBER;
  v_avg_row_len NUMBER;
BEGIN
  -- retrieve the values of table statistics on INV.MTL_MATERIAL_TRANSACTIONS
  -- statistics table name: OE.SAVESTATS    statistics ID: TEST1
  sys.DBMS_STATS.get_table_stats( ownname => 'INV'
                                 ,tabname => 'MTL_MATERIAL_TRANSACTIONS'
                                 ,partname => NULL 
                                 ,stattab => NULL
                                 ,statid => NULL
                                 ,numrows => v_num_rows
                                 ,numblks => v_num_blocks
                                 ,avgrlen => v_avg_row_len
                                 ,statown => NULL);
  -- print the values
DBMS_OUTPUT.PUT_LINE( 'num_rows='
                    || v_num_rows
                    || ',num_blocks='
                    || v_num_blocks
                    || ',avg_row_len='
                    || v_avg_row_len);                     
-- num_rows=62254,num_blocks=2975,avg_row_len=271                     
END;  


-- 对schema 进行gather 
DECLARE
BEGIN
    sys.DBMS_STATS.gather_schema_stats(ownname => 'INV');
    sys.DBMS_STATS.gather_schema_stats(ownname => 'GL');
    sys.DBMS_STATS.gather_schema_stats(ownname => 'PO');
EXCEPTION
    WHEN OTHERS THEN
        dbms_output.put_line('error');
END;

参考文档:
http://www.oracle.com/technology/oramag/webcolumns/2003/techarticles/burleson_cbo_pt1.html http://www.oracle.com/technology/oramag/webcolumns/2003/techarticles/burleson_cbo_pt2_pt1.html

怎么样分析表或索引
[A]命令行方式可以采用analyze命令
如
Analyze table tablename compute statistics;
Analyze index|cluster indexname estimate statistics;
ANALYZE TABLE tablename COMPUTE STATISTICS
FOR TABLE
FOR ALL [LOCAL] INDEXES
FOR ALL [INDEXED] COLUMNS;
ANALYZE TABLE tablename DELETE STATISTICS
ANALYZE TABLE tablename VALIDATE REF UPDATE
ANALYZE TABLE tablename VALIDATE STRUCTURE
[CASCADE]|[INTO TableName]
ANALYZE TABLE tablename LIST CHAINED ROWS [INTO TableName]
等等。
如果想分析整个用户或数据库,还可以采用工具包,可以并行分析
Dbms_utility(8i以前的工具包)
Dbms_stats(8i以后提供的工具包)
如
dbms_stats.gather_schema_stats(User,estimate_percent=>100,cascade=> TRUE);
dbms_stats.gather_table_stats(User,TableName,degree => 4,cascade => true);
这是对命令与工具包的一些总结
1、对于分区表,建议使用DBMS_STATS,而不是使用Analyze语句。
a) 可以并行进行,对多个用户,多个Table
b) 可以得到整个分区表的数据和单个分区的数据。
c) 可以在不同级别上Compute Statistics:单个分区,子分区,全表,所有分区
d) 可以倒出统计信息
e) 可以用户自动收集统计信息
2、DBMS_STATS的缺点
a) 不能Validate Structure
b) 不能收集CHAINED ROWS, 不能收集CLUSTER TABLE的信息,这两个仍旧需要使用Analyze语句。
c) DBMS_STATS 默认不对索引进行Analyze,因为默认Cascade是False,需要手工指定为True
3、对于oracle 9里面的External Table,Analyze不能使用,只能使用DBMS_STATS来收集信息
[@more@]

ref: http://www.xiaobaicai.com/wiki/index.php?n=Oralce.Analyze%E5%88%86%E6%9E%90%E8%A1%A8%E6%88%96%E8%80%85%E7%B4%A2%E5%BC%95

desd desc dbms_outln_edit
就知道啦,CREATE_EDIT_TABLES就是创建outln用户的字典表的。 重建outln用户

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7916042/viewspace-979149/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7916042/viewspace-979149/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值