深度解析dba_segments和sys.seg$中的细节差异(下)
生活随笔
收集整理的這篇文章主要介紹了
深度解析dba_segments和sys.seg$中的细节差异(下)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
繼續(xù)昨天的內(nèi)容?http://blog.itpub.net/23718752/viewspace-1624762/
我們已經(jīng)根據(jù)dba_segments和sys.seg$的不同發(fā)現(xiàn)最后的差距有2T左右,已經(jīng)定位到了dba_segments的一些細節(jié)信息,可以發(fā)現(xiàn)其實還是一個層級的調(diào)用關系。
我們把SYS_DBA_SEGS是一個處于中間層的角色,它的定義是3個union all,可以從定義中看到,差別主要還是segment_type的不同,我們采用逐個擊破的方法,一個一個來看。
-->第一個子查詢
?select NVL(u.name, 'SYS'), sum(s.blocks)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?from sys.user$ u, sys.obj$ o, sys.ts$ ts, sys.sys_objects so, sys.seg$ s,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? sys.file$ f
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?where s.file# = so.header_file
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.block# = so.header_block
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = so.ts_number
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = ts.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and o.obj# = so.object_id
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and o.owner# = u.user# (+)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.type# = so.segment_type_id
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and o.type# = so.object_type_id
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = f.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.file# = f.relfile#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and u.name='PRDAPPO'
group by u.name ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
NVL(U.NAME,'SYS') ? ? ? ? ? ? ?SUM(S.BLOCKS)
------------------------------ -------------
PRDAPPO ? ? ? ? ? ? ? ? ? ? ? ? ? ?323983920
SQL> select 32398390*8192/1024/1024 size_MB from dual;
? ?SIZE_MB
----------
253112.422
-->第二個子查詢。
select NVL(u.name, 'SYS'),sum( s.blocks)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?from sys.user$ u, sys.ts$ ts, sys.undo$ un, sys.seg$ s, sys.file$ f
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?where s.file# = un.file#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.block# = un.block#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = un.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = ts.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.user# = u.user# (+)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.type# in (1, 10)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and un.status$ != 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and un.ts# = f.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and un.file# = f.relfile#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and u.name='PRDAPPO'
group by u.name ?
no rows selected
-->第三個子查詢
select NVL(u.name, 'SYS'), sum( s.blocks)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?from sys.user$ u, sys.ts$ ts, sys.seg$ s, sys.file$ f
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?where s.ts# = ts.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.user# = u.user# (+)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.type# not in (1, 5, 6, 8, 10)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = f.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.file# = f.relfile#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and u.name='PRDAPPO'
group by u.name ? ? ? ??
no rows selected
所以看來主要的數(shù)據(jù)還是在第一個子查詢,但是如果細想,有點奇怪啊,基表中查到的數(shù)據(jù)是2.6T左右。那剩下的2T還沒有找到原因,到底差在哪了。
我們這個時候可以往回看,sys.seg$里的信息得到的是2.6T,dba_segments里面得到的信息是5T左右。那么唯一的差別就在于sys_dba_segs了,是不是這個中間表做了什么操作呢。
我們截取相關的字段查看一下。
select sum(decode(bitand(segment_flags, 131072), 131072, blocks,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (decode(bitand(segment_flags,1),1,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dbms_space_admin.segment_number_blocks(tablespace_id, relative_fno,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?header_block, segment_type_id, buffer_pool_id, segment_flags,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?segment_objd, blocks), blocks))))
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?from sys_dba_segs where owner='PRDAPPO' ?;
SUM(DECODE(BITAND(SEGMENT_FLAGS,131072),131072,BLOCKS,(DECODE(BITAND(SEGMENT_FLA
--------------------------------------------------------------------------------
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?607401104
這下數(shù)字就對上了,可以看到在統(tǒng)計過程中,做了大量的判斷,可以從下面改動的語句中做一些基本的分析。
SQL> select?
? ? sum(decode(bitand(segment_flags, 131072), 131072,blocks)) col1,
? ? sum(decode(bitand(segment_flags,1),1,dbms_space_admin.segment_number_blocks(tablespace_id, relative_fno,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?header_block, segment_type_id, buffer_pool_id, segment_flags,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?segment_objd, blocks))) ?col2
from sys_dba_segs where owner='PRDAPPO' group by segment_flags ;?
? 12860336 ? 12860336
? ? ? ? ? ? ? 4145504
?209686704 ?210292912
? ? ? ? ? ? 385152992
可以從上面的語句看出,主要的差別數(shù)據(jù)都在dbms_space_admin.segment_number_blocks調(diào)用中產(chǎn)生差異。
對此,我們需要查看一下這個包中對應的代碼,但是不幸的是這部分代碼做了屏蔽,我們看看是怎么描述的。
?function segment_number_blocks(
? ? ? ? header_tablespace_id ? ?in ? ?natural ,
? ? ? ? header_relative_file ? ?in ? ?positive ,
? ? ? ? header_block ? ? ? ? ? ?in ? ?positive ,
? ? ? ? segment_type ? ? ? ? ? ?in ? ?positive ,
? ? ? ? buffer_pool_id ? ? ? ? ?in ? ?natural ,
? ? ? ? dictionary_flags ? ? ? ?in ? ?natural ,
? ? ? ? data_object_id ? ? ? ? ?in ? ?number,
? ? ? ? dictionary_blocks ? ? ? in ? ?number
? ? ? ? ? ? ? ? ? ? ? ? ) return pls_integer;
? pragma RESTRICT_REFERENCES(segment_number_blocks,WNDS,WNPS,RNPS);
? --
? -- Returns the number of blocks which belong to the segment. Will return
? -- NULL if segment has disappeared. IS NOT to be used for any other
? -- purposes but by the views which need it and are sure that there info
? -- is correct. Else internal errors will abound
我們繼續(xù)來看一下,盡管沒有代碼可供參考,但是我們還是能夠做些什么,至少我們可以定位到底是哪些segment在統(tǒng)計時出現(xiàn)了大的數(shù)據(jù)出入。
我們用下面的語句來看一下。
col segment_name format a30
col partition_name format a20
select t1.segment_name,t1.partition_name,t1.sum_blocks,t2.sum_blocks,(t1.sum_blocks-t2.sum_blocks)*8192/1024/1024 diff_size_MB
from
(select owner,segment_name,partition_name,sum(blocks) sum_blocks from dba_segments where owner='PRDAPPO' group by owner,segment_name,partition_name )t1,
(select NVL(u.name, 'SYS')owner,o.name oname,o.subname,sum(s.blocks) sum_blocks
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?from sys.user$ u, sys.obj$ o, sys.ts$ ts, sys.sys_objects so, sys.seg$ s,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? sys.file$ f
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?where s.file# = so.header_file
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.block# = so.header_block
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = so.ts_number
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = ts.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and o.obj# = so.object_id
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and o.owner# = u.user# (+)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.type# = so.segment_type_id
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and o.type# = so.object_type_id
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = f.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.file# = f.relfile#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and u.name='PRDAPPO' ?
group by ? ?u.name,o.name,o.subname)t2
where t1.owner=t2.owner
and t1.segment_name=t2.oname
and t1.partition_name=t2.subname
and t1.sum_blocks-t2.sum_blocks>0
order by t1.sum_blocks-t2.sum_blocks desc?
可以看到,對于不同的segment_type產(chǎn)生的數(shù)據(jù)差異??梢钥吹皆诜謪^(qū)表中還是存在著較大的出入,數(shù)據(jù)差別 779705M+697946M+445368 大約是1.9T左右,可見問題的定位找到了一些突破口。 SEGMENT_TYPE ? ? ? SUM_BLOCKS SUM_BLOCKS DIFF_SIZE_MB
------------------ ---------- ---------- ------------
TABLE PARTITION ? ? 292044544 ?192242304 ? ? ? 779705
INDEX PARTITION ? ? 131229056 ? 41891872 ? ?697946.75
LOB PARTITION ? ? ? 110592896 ? 53585792 ? ? ? 445368
INDEX ? ? ? ? ? ? ? ?27807392 ? ?4629536 ? ? ? 181077
TABLE ? ? ? ? ? ? ? ?44770432 ? 31578752 ? ? ? 103060
LOBSEGMENT ? ? ? ? ? ?5386880 ? ? 220928 ? ? ? ?40359
LOBINDEX ? ? ? ? ? ? ? ?14336 ? ? ?14336 ? ? ? ? ? ?0
通過上面的語句我們可以繼續(xù)分析。為什么有些分區(qū)相關的段有較大的數(shù)據(jù)差異。
同時也在Metalink上查了一下,有一篇文章:Bug 12940620??Cached block/extent counts in SEG$ not updated after ADD extent
這個里面描述的是一個bug,是關于查詢比較慢的問題,和目前的使用的場景有些類似,可以做進一步的關注。
《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀
我們已經(jīng)根據(jù)dba_segments和sys.seg$的不同發(fā)現(xiàn)最后的差距有2T左右,已經(jīng)定位到了dba_segments的一些細節(jié)信息,可以發(fā)現(xiàn)其實還是一個層級的調(diào)用關系。
我們把SYS_DBA_SEGS是一個處于中間層的角色,它的定義是3個union all,可以從定義中看到,差別主要還是segment_type的不同,我們采用逐個擊破的方法,一個一個來看。
-->第一個子查詢
?select NVL(u.name, 'SYS'), sum(s.blocks)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?from sys.user$ u, sys.obj$ o, sys.ts$ ts, sys.sys_objects so, sys.seg$ s,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? sys.file$ f
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?where s.file# = so.header_file
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.block# = so.header_block
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = so.ts_number
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = ts.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and o.obj# = so.object_id
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and o.owner# = u.user# (+)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.type# = so.segment_type_id
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and o.type# = so.object_type_id
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = f.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.file# = f.relfile#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and u.name='PRDAPPO'
group by u.name ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
NVL(U.NAME,'SYS') ? ? ? ? ? ? ?SUM(S.BLOCKS)
------------------------------ -------------
PRDAPPO ? ? ? ? ? ? ? ? ? ? ? ? ? ?323983920
SQL> select 32398390*8192/1024/1024 size_MB from dual;
? ?SIZE_MB
----------
253112.422
-->第二個子查詢。
select NVL(u.name, 'SYS'),sum( s.blocks)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?from sys.user$ u, sys.ts$ ts, sys.undo$ un, sys.seg$ s, sys.file$ f
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?where s.file# = un.file#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.block# = un.block#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = un.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = ts.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.user# = u.user# (+)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.type# in (1, 10)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and un.status$ != 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and un.ts# = f.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and un.file# = f.relfile#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and u.name='PRDAPPO'
group by u.name ?
no rows selected
-->第三個子查詢
select NVL(u.name, 'SYS'), sum( s.blocks)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?from sys.user$ u, sys.ts$ ts, sys.seg$ s, sys.file$ f
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?where s.ts# = ts.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.user# = u.user# (+)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.type# not in (1, 5, 6, 8, 10)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = f.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.file# = f.relfile#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and u.name='PRDAPPO'
group by u.name ? ? ? ??
no rows selected
所以看來主要的數(shù)據(jù)還是在第一個子查詢,但是如果細想,有點奇怪啊,基表中查到的數(shù)據(jù)是2.6T左右。那剩下的2T還沒有找到原因,到底差在哪了。
我們這個時候可以往回看,sys.seg$里的信息得到的是2.6T,dba_segments里面得到的信息是5T左右。那么唯一的差別就在于sys_dba_segs了,是不是這個中間表做了什么操作呢。
我們截取相關的字段查看一下。
select sum(decode(bitand(segment_flags, 131072), 131072, blocks,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (decode(bitand(segment_flags,1),1,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dbms_space_admin.segment_number_blocks(tablespace_id, relative_fno,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?header_block, segment_type_id, buffer_pool_id, segment_flags,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?segment_objd, blocks), blocks))))
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?from sys_dba_segs where owner='PRDAPPO' ?;
SUM(DECODE(BITAND(SEGMENT_FLAGS,131072),131072,BLOCKS,(DECODE(BITAND(SEGMENT_FLA
--------------------------------------------------------------------------------
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?607401104
這下數(shù)字就對上了,可以看到在統(tǒng)計過程中,做了大量的判斷,可以從下面改動的語句中做一些基本的分析。
SQL> select?
? ? sum(decode(bitand(segment_flags, 131072), 131072,blocks)) col1,
? ? sum(decode(bitand(segment_flags,1),1,dbms_space_admin.segment_number_blocks(tablespace_id, relative_fno,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?header_block, segment_type_id, buffer_pool_id, segment_flags,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?segment_objd, blocks))) ?col2
from sys_dba_segs where owner='PRDAPPO' group by segment_flags ;?
? 12860336 ? 12860336
? ? ? ? ? ? ? 4145504
?209686704 ?210292912
? ? ? ? ? ? 385152992
可以從上面的語句看出,主要的差別數(shù)據(jù)都在dbms_space_admin.segment_number_blocks調(diào)用中產(chǎn)生差異。
對此,我們需要查看一下這個包中對應的代碼,但是不幸的是這部分代碼做了屏蔽,我們看看是怎么描述的。
?function segment_number_blocks(
? ? ? ? header_tablespace_id ? ?in ? ?natural ,
? ? ? ? header_relative_file ? ?in ? ?positive ,
? ? ? ? header_block ? ? ? ? ? ?in ? ?positive ,
? ? ? ? segment_type ? ? ? ? ? ?in ? ?positive ,
? ? ? ? buffer_pool_id ? ? ? ? ?in ? ?natural ,
? ? ? ? dictionary_flags ? ? ? ?in ? ?natural ,
? ? ? ? data_object_id ? ? ? ? ?in ? ?number,
? ? ? ? dictionary_blocks ? ? ? in ? ?number
? ? ? ? ? ? ? ? ? ? ? ? ) return pls_integer;
? pragma RESTRICT_REFERENCES(segment_number_blocks,WNDS,WNPS,RNPS);
? --
? -- Returns the number of blocks which belong to the segment. Will return
? -- NULL if segment has disappeared. IS NOT to be used for any other
? -- purposes but by the views which need it and are sure that there info
? -- is correct. Else internal errors will abound
我們繼續(xù)來看一下,盡管沒有代碼可供參考,但是我們還是能夠做些什么,至少我們可以定位到底是哪些segment在統(tǒng)計時出現(xiàn)了大的數(shù)據(jù)出入。
我們用下面的語句來看一下。
col segment_name format a30
col partition_name format a20
select t1.segment_name,t1.partition_name,t1.sum_blocks,t2.sum_blocks,(t1.sum_blocks-t2.sum_blocks)*8192/1024/1024 diff_size_MB
from
(select owner,segment_name,partition_name,sum(blocks) sum_blocks from dba_segments where owner='PRDAPPO' group by owner,segment_name,partition_name )t1,
(select NVL(u.name, 'SYS')owner,o.name oname,o.subname,sum(s.blocks) sum_blocks
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?from sys.user$ u, sys.obj$ o, sys.ts$ ts, sys.sys_objects so, sys.seg$ s,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? sys.file$ f
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?where s.file# = so.header_file
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.block# = so.header_block
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = so.ts_number
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = ts.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and o.obj# = so.object_id
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and o.owner# = u.user# (+)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.type# = so.segment_type_id
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and o.type# = so.object_type_id
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.ts# = f.ts#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and s.file# = f.relfile#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and u.name='PRDAPPO' ?
group by ? ?u.name,o.name,o.subname)t2
where t1.owner=t2.owner
and t1.segment_name=t2.oname
and t1.partition_name=t2.subname
and t1.sum_blocks-t2.sum_blocks>0
order by t1.sum_blocks-t2.sum_blocks desc?
可以看到,對于不同的segment_type產(chǎn)生的數(shù)據(jù)差異??梢钥吹皆诜謪^(qū)表中還是存在著較大的出入,數(shù)據(jù)差別 779705M+697946M+445368 大約是1.9T左右,可見問題的定位找到了一些突破口。 SEGMENT_TYPE ? ? ? SUM_BLOCKS SUM_BLOCKS DIFF_SIZE_MB
------------------ ---------- ---------- ------------
TABLE PARTITION ? ? 292044544 ?192242304 ? ? ? 779705
INDEX PARTITION ? ? 131229056 ? 41891872 ? ?697946.75
LOB PARTITION ? ? ? 110592896 ? 53585792 ? ? ? 445368
INDEX ? ? ? ? ? ? ? ?27807392 ? ?4629536 ? ? ? 181077
TABLE ? ? ? ? ? ? ? ?44770432 ? 31578752 ? ? ? 103060
LOBSEGMENT ? ? ? ? ? ?5386880 ? ? 220928 ? ? ? ?40359
LOBINDEX ? ? ? ? ? ? ? ?14336 ? ? ?14336 ? ? ? ? ? ?0
通過上面的語句我們可以繼續(xù)分析。為什么有些分區(qū)相關的段有較大的數(shù)據(jù)差異。
同時也在Metalink上查了一下,有一篇文章:Bug 12940620??Cached block/extent counts in SEG$ not updated after ADD extent
這個里面描述的是一個bug,是關于查詢比較慢的問題,和目前的使用的場景有些類似,可以做進一步的關注。
《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的深度解析dba_segments和sys.seg$中的细节差异(下)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 06/05/2015
- 下一篇: 转[WinForm] VS2010发布、