oracleanalyzetable的简单介绍

本篇文章给大家谈谈oracleanalyzetable,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

oracle中analyze table xxx compute statistics;这个语句放在存储过程中报错啊,需要怎么设置啊?

你把语句写成字符串后使用EXECUTE IMMEDIATE 来执行试试

例如,下面创建了一个T表

EXECUTE IMMEDIATE 'CREATE TABLE T (NAME VARCHAR2(20))'

你上次说写了会报错,你能把你写的尘迟掘过程派核贴出旦喊来么!!

oracle分析表有什么用

Oracle中分析表的作用

1.分析更新表的统计仿型宴信息,,有可能导致执行计划改变..

2.以的analyze table abc compute statistics;这条为例,生成的统计信息会存在于user_tables这个视图,查看一下select * from user_tables where table_name='ABC';

观察一下备银NUM_ROWS,BLOCKS,AVG_SPACE,AVG_ROW_LEN几列你就会明白,这就是变化。分析完表之后,会发现DBA_tables 视图中,以前很多列值是空的,现在开始有数据了。这些数据就是分析表得到的.

3.怎么样分析表或索引

命令行方式可以采用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来收集信息.

[img]

只知道对Oracle数据库的单表做表分析语句是 analyze table 表名 compute statistics

全表还是全库啊?

全表的话,可以针对某个用户来分析:

SQL exec dbms_stats.gather_schema_stats(ownname='scott',options='gather auto',estimate_percent=dbms_stats.auto_sample_size,degree=6); 具体的参数可以根据实际情慧指况修改,也可以加其他的参数进来

全库的话,10g会自动分析的,但是也可以收到分析,统计分析要消耗大量资源,建议不要在业务繁忙时做:

SQL exec dbms_stats.gather_system_stats('start'); 开态碧升始

SQL exec dbms_stats.gather_system_stats('stop'); 结束

SQL exec dbms_stats.gather_system_stats('interval',interval=N); 一直工作N分帆老钟

如何正确地分析Oracle数据库模式,表及索引

在Oracle 数据库中,我们经常需要去手工分析表和索迅告引,还有某个模式下所有的表和索引等等。oracle 提供了两种分析方法,分别是dbms_stats 包和analyze 命令。这些是我们在日常项目管理中的真实使用的方法,供参考。

在10g 中分析某一个用户下所有的对象,如user_miki 用户

Sql代码 收藏代码

sys.dbms_stats.gather_schema_stats(ownname = 'user_miki',estimate_percent = 30,method_opt = 'FOR ALL INDEXED COLUMNS SIZE AUTO',cascade = true,options = 'GATHER');

这是我在项目中分析一个用户所有对象的分析方法,取样比例为30% ,分析所有索引字段,生成柱形图,并且也分析索引。

(miki西游 @mikixiyou 文档,原文链接: )

在10g 中分析某一个用户下某一个表及其索引,如user_miki 用户下info 表和它的索引

Sql代码 收藏代码

execute dbms_stats.gather_table_stats(ownname = 'user_miki',tabname = 'info',estimate_percent = 30,method_opt = 'for all indexed columns size auto');

这是我在项目中单独分析一个用户中一张表亩链明的分析方法,取样比例为30% ,分析所有索引字段,生成柱形图,并且也分析索引。

我们在google 时,还能看到使用analzye 命令分析表的方法。

Sql代码 收藏代码

analyze table table_name compute statistics;

这个会将索引和表一起分析;

Sql代码 收藏代码

analyze table table_name compute statistics for table;

这个仅分析表;

analyze table table_name compute statistics for all columns;

这个仅分析表,和上面所有的字段,生成柱形图

analyze table table_name compute statistics for all indexed columns;

这个仅分析表,和上面所有建立索引的字段,生成柱形图

在9i 中,我们常常使用analyze 方法,在10g 以后,就改为dbms_stats.gather_schema_stats 类似的包来分析数据库对象了。

10g 的分析函数包比9i 的analyze 方法更灵活一些。

在10g 中,会有个系统的计划任务,每天10 点和周末两天都自动分析新的数据库对象和它认为统计信息已经过期的数据库对象。这个分析结果有时候不靠谱。

因此,我都采用10g 中提供的dbms_stats.gather_schema_stats 方法作为补充,设置一个计划任务定期去分析业务用户下所有数据库对象。

Sql代码 收藏代码

variable job number;

begin

sys.dbms_job.submit(job = :job,

what = 'sys.dbms_stats.gather_schema_stats(ownname = ''USR_MIKI'',estimate_percent = 30,method_opt = ''FOR ALL INDEXED COLUMNS SIZE AUTO'',cascade = true,options = ''GATHER'');',

next_date = to_date('16-12-2012 00:56:24', 'dd-mm-yyyy hh24:mi:ss'),

interval = 'sysdate+7');

commit;

end;

/

例如,设置唤斗为每周六运行一次。

oracle analyze table 怎么用

代码:

create table t1 as

select * from user_objects;

create table t2 as select * from

user_objects;

create table t3 as select * from user_objects;

create table

t4 as select * from user_objects;

create unique index pk_t1_idx on

t1(object_id);

create unique index pk_t2_idx on t2(object_id);

create

unique index pk_t3_idx on t3(object_id);

create unique index pk_t4_idx on

t4(object_id);

ANALYZE TABLE 有什么作用

Oracle的online document这样描述analyze的作用:

Use the ANALYZE statement to collect non-optimizer statistics, for example, to:

1、Collect or delete statistics about an index or index partition, table or table partition, index-organized table, cluster, or scalar object attribute.

2、Validate the structure of an index or index partition, table or table partition, index-organized table, cluster, or object reference (REF).

3、Identify migrated and chained rows of a table or cluster.

对于收集统计信息这敬厅块,我一般使用dbms_stats这个package,收集统计信息的做用使CBO方式激稿睁的优化选择执行计明岁划更准确。

关于oracleanalyzetable和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表