Analyze分析表或者索引
demo:
[@more@]
--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来收集信息
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/