暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DMT之后SMON还需要coalesce么?

原创 eygle 2008-02-22
416
在LMT之前,也就是说在DMT中,SMON的一个经常性工作是去合并(coalesce )相邻的自由空间。

那么在LMT之后,这个工作还需要么?



如果表空间创建是Extent的设置使用的是Uniform Size选项,那么显然在使用过程中自由空间不再需要被合并,因为请求的Extent将和现存的大小一致。



但是即使如此,在Oracle9i的某些版本中,仍然会存在Coalesce所带来的困然。

已知在Oracle 9.2.0.6数据库版本中,你可能会看到如下语句在Top SQL列表中出现:

select f.file#, f.block#, f.ts#, f.length from fet$ f, ts$ t whe    re t.ts#=f.ts# and t.dflextpct!=0 and t.bitmapped=0



这个语句就是用于空间管理的,t.dflextpct!=0是查找那些pct_increase不等于0的表空间,t.bitmapped=0是查找那些非本地管理表空间的。

虽然在很多9i之后的数据库中,这个查询的返回值统统是0,但是查询仍然在消耗资源。



虽然这个语句的返回值为0,但是执行计划并不简单:

PARSING IN CURSOR #1 len=115 dep=1 uid=0 oct=3 lid=0 tim=13490086563004 hv=2095543314 ad='54e34f24'

select f.file#, f.block#, f.ts#, f.length from fet$ f, ts$ t where t.ts#=f.ts# and t.dflextpct!=0 and t.bitmapped=0

END OF STMT

PARSE #1:c=0,e=220,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,tim=13490086562995

BINDS #1:

EXEC #1:c=0,e=95,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,tim=13490086563299

FETCH #1:c=0,e=2591,p=0,cr=236,cu=0,mis=0,r=0,dep=1,og=4,tim=13490086565948

STAT #1 id=1 cnt=0 pid=0 pos=1 obj=0 op='NESTED LOOPS '

STAT #1 id=2 cnt=0 pid=1 pos=1 obj=16 op='TABLE ACCESS FULL TS$ '

STAT #1 id=3 cnt=0 pid=1 pos=2 obj=12 op='TABLE ACCESS CLUSTER FET$ '



对于LMT的UNIFORM SIZE和AUTOALLOCATE,两者的区别还是明显的。

在Oracle9i、10g中,可以通过DBA_FREE_SPACE_COALESCED视图来查看各表空间的空间合并情况:

SQL> select * from v$version;

BANNER

----------------------------------------------------------------

Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production

PL/SQL Release 9.2.0.4.0 - Production

CORE    9.2.0.3.0      Production

TNS for Linux: Version 9.2.0.4.0 - Production

NLSRTL Version 9.2.0.4.0 - Production



SQL> select tablespace_name,extents_coalesced,blocks_coalesced from dba_free_space_coalesced;



TABLESPACE_NAME                EXTENTS_COALESCED BLOCKS_COALESCED

------------------------------ ----------------- ----------------

SYSTEM                                        2              448

UNDOTBS1                                      15            4312

USERS                                          1            26416

EYGLE                                          1            12464



SQL> select tablespace_name,EXTENT_MANAGEMENT,ALLOCATION_TYPE from dba_tablespaces;



TABLESPACE_NAME                EXTENT_MAN ALLOCATIO

------------------------------ ---------- ---------

SYSTEM                        LOCAL      SYSTEM

UNDOTBS1                      LOCAL      SYSTEM

TEMP                          LOCAL      UNIFORM

USERS                          LOCAL      SYSTEM

EYGLE                          LOCAL      SYSTEM

TEMP2                          LOCAL      UNIFORM



6 rows selected.

-The End-
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论