- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
?
?
在不影响Oracle生产库性能情况下,评估整库大小
?
?
最近碰到一个小问题:一TB级的Oracle生产库,因为要走数据迁移,需要先行评估整个库的迁移数据量大小,但又不得影响生产库运行性能。如何搞?大家都知道,expdp数据泵有两个很好用的参数ESTIMATE和ESTIMATE_ONLY,此两个参数可以保证在不真正发起逻辑备份的情况下评估整个迁移生产库的大小。今天念叨下这个小问题。
这里使用$expdp-help先看expdp的ESTIMATE和ESTIMATE_ONLY两个参数的介绍:
ESTIMATECalculatejobestimates.Validkeywordvaluesare:[BLOCKS]andSTATISTICS.
ESTIMATE_ONLYCalculatejobestimateswithoutperformingtheexport.
ESTIMATE
默认:blocks
指定计算每张表使用磁盘空间的方法
ESTIMATE=[BLOCKS|STATISTICS]
1.BLOCKS-通过块数和块大小计算?
2.STATISTICS-每张表的统计信息计算
Expdp可计算导出数据大小容量,一种是通过数据块数量、一种是通过统计信息中记录的内容估算。通过expdp的参数ESTIMATE_ONLY和ESTIMATE来评估导出的性能,ESTIMATE_ONLY仅作评估不会导出数据,通过ESTIMATE参数指定statistics和blocks参数来测试两者的差异。
以下是Oracle中的测试数据输出,在此版本中,我们来看下ESTIMATE的statistics和blocks两个参数各自评估大小和用时。
两条命令如下:
$expdp?\/?as?sysdba\?ESTIMATE_ONLY=y?FULL=y?ESTIMATE=blocks$expdp\/assysdba\ESTIMATE_ONLY=yFULL=yESTIMATE=statistics
具体执行如下:
如上可以看出,使用ESTIMATE=blocks评估出来的大小为2599.GB,耗时:00:02:50;
接下来再看ESTIMATE=statistics方式。命令如下:
如上,使用ESTIMATE=STATISTICS评估出来的大小为2132.GB,耗时:00:04:40;
可以看出,两种方式统计的大小不一样,为啥?
分析推断:
ESTIMATE的默认方式是blocks。个人理解为:Oracle的块大小默认为8KB,直接对库使用的块数计算使用量,简单明了,但考虑到块有高水位线、碎片等因素,故统计不精确。而STATISTICS方式因计算的是对每张表的实际使用情况,故更为精确。
但STATISTICS的方式也非很精确,原因为:1.该方式只是对表做统计,没有对索引、列、系统做统计,2.一个表中被修改的行数超过stale_percent(缺省值10%)时才会认为这个表的统计数据过时,需要重新搜集。
注意:
如果压缩了表,那么使用ESTIMATE=BLOCKS计算的值时不准确的,这个时候就应该使用ESTIMATE=STATISTICS。
推荐:
使用ESTIMATE的默认方式blocks进行估算,原因很简单,估值按最大值估算申请空间更靠谱。
为了加深理解,这里介绍下Oracle统计信息收集
大家都知道,Oracle较优执行计划的挑选是基于CBO(costbasedoptimized)判断,而CBO对哪个执行计划较优的判断是基于统计信息。优化器统计范围包含:
1.表统计:行数,块数,行平均长度;
all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN;
2.列统计:列中唯一值的数量(NDV),NULL值的数量,数据分布;
DBA_TAB_COLUMNS:NUM_DISTINCT,NUM_NULLS,HISTOGRAM;
3.索引统计:叶块数量,等级,聚簇因子;
DBA_INDEXES:LEAF_BLOCKS,CLUSTERING_FACTOR,BLEVEL;
4.系统统计:
I/O性能与使用率;
CPU性能与使用率;
存储在aux_stats$中,需要使用dbms_stats收集,I/O统计在X$KCFIO中;
查询表上一次收集统计信息的时间:
SQLselectowner,table_name,last_analyzedfromdba_tableswhere
文档评论(0)