Oracle EBS Concurrent Request:Gather Schema Statistics

本文深入解析Oracle EBS中的性能优化工具GatherSchemaStatistics,包括其工作原理、运行条件及步骤,以及如何通过SQL查询判断数据库对象的统计情况和上次运行时间,提供实用的操作指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle EBS 的Concurrent Request"Gather Schema Statistics"是一个和性能相关的Concurrent Program,它会对表,列和索引的做数据采样,并生成统计信息。基于成本的优化器(Cost-Based OptimizationCBO)会根据你的数据采样来评估执行计划,最终选取一个最高效的方式来执行SQL。

补充一点:数据采样十分类似于问卷调查,假如你的目标群体非常庞大,你就不可能对所有目标客户逐一进行调研,正确有效地做法是在目标人群中挑选一定百分比的人进行调查,最终根据这部分被调查的人来推导出目标人群的情况。

什么样的情况下运行“Gather Schema Statistics”

当数据库发生较大变化的时候,比如新增了很多数据或者很多数据被删除,都应该运行一下这个program。需要注意的是,这个Request比较耗时,并且非常消耗数据库资源,所以最好把运行这个program的时间安排到周末或者晚上。


如何运行“Gather Schema Statistics

1. Responsibility = System Administrator
2. Concurrent > Requests
3. 查询“Gather Schema Statistics”
4. 输入参数

Parameter

需要特别提到的是:

Schema Name:指的是你要对那个Schema下的对象进行统计,如果要对所有数据库对象进行统计,这里可以选择ALL。

Estimate Percent(评估比):是指对数据库对象的采样比例,默认为10%,这个值不要设置的太高,否则反会影响性能。(refer:OTN的一帖子)

其他Parameter可以参见UserGuide。


如何判断数据库对象上一次运行统计的时间和统计比

SELECT num_rows,sample_size,last_analyzed from dba_tables WHERE table_name = 'MTL_SYSTEM_ITEMS_B';

output:
NUM_ROWS:151210

SAMPLE_SIZE:15121

LAST_ANALYZED:2011-11-10

Last_Analyzed的时间就是上次运行统计收集的时间。

Sample_Size是采样的行数,Num_Rows是真实数据库表中的行数。Same_Size/Num_Rows = 15121/151210 = 10%,这个10%实际上就是Estimate Percent。

另外下边的SQL可以查看制定表中列的统计情况

SELECT last_analyzed,sample_size 
FROM  dba_tab_columns 
WHERE table_name = 'MTL_SYSTEM_ITEMS_B';

=====EOF====


转载请注明出处:http://blog.youkuaiyun.com/pan_tian/article/details/7685957


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值