首页 > 数据库 > 数据库开发技术 > Analyze分析表或者索引
--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博客 ” ,链接:https://blog.itpub.net/7916042/viewspace-979149/ ,如需转载,请注明出处,否则将追究法律责任。