ITPub博客

首页 > 数据库 > Oracle > 一次Oracle 表空间重整(重组)

一次Oracle 表空间重整(重组)

原创 Oracle 作者:steven_hua 时间:2016-10-17 15:40:30 0 删除 编辑


一、先来看看目前的空间状况,其中TDWCMSDB 的FSFI只有13,其中好几个表的extent数量都在200以上,例子是177个


SQL> select tablespace_name,sqrt(max(blocks)/sum(blocks))*(100/sqrt(sqrt(count(blocks)))) FSFI
     FROM dba_free_space
     group by tablespace_name order by 1;
 
  TABLESPACE_NAME                      FSFI
------------------------------ ----------
SYSAUX                         29.2920889
SYSTEM                         84.0498358
TDCMS_DATA                            100
TDMC_DATA                             100
TDMDOLOG_DATA                  29.2747955
TDSP_DATA                             100
TDTM_DATA                             100
TDWCMSDB                       13.3218369
TDWLDB_DATA                    50.3387017
TDWLDB_IDX                            100
TDWL_DATA                             100

TABLESPACE_NAME                      FSFI
------------------------------ ----------
TDWNET_DATA                           100
TDYWDSDB                       84.0512657
UNDOTBS1                       19.8632222
USERS                          56.1681666


SQL>  SELECT segment_name,
  2               SUM(bytes)/1024/1024 "SizeM",
  3              SUM(blocks)  blocks,
  4               COUNT(1) extent_count,
  5         MIN(bytes)/1024/1024 "inital_Extent(M)",
  6              MAX(bytes)/1024/1024 "max_Extent(M)"
  7         FROM dba_extents
  8              WHERE segment_name = 'TDWCMS_CHANNELITEM_EXCEPTION'
  9              AND owner = 'TDWCMSDB'
 10        group by segment_name  
 11  /

SEGMENT_NAME                   SizeM     BLOCKS EXTENT_COUNT inital_Extent(M) max_Extent(M)
------------------------- ---------- ---------- ------------ ---------------- -------------
TDWCMS_CHANNELITEM_EXCEPT        812     103936          177            .0625             8
ION


SQL> exec show_space('TDWCMS_CHANNELITEM_EXCEPTION','TDWCMSDB')
Total Blocks  ..........................103936
Total Bytes   ..........................851443712
Total MBytes  ..........................812
Unused Blocks ..........................0
Unused Bytes  ..........................0
Unused KBytes ..........................0
Used Blocks   ..........................103936
Used Bytes    ..........................851443712
Used KBytes   ..........................831488
Last Used Ext FileId....................7
Last Used Ext BlockId...................1850889
Last Used Block.........................1024
The segment is analyzed below
FS1 Blocks (0-25)   ....................3
FS2 Blocks (25-50)  ....................1
FS3 Blocks (50-75)  ....................1
FS4 Blocks (75-100) ....................571
Unformatted Blocks  ....................0
Full Blocks         ....................102851

PL/SQL procedure successfully completed.


二、执行move table 操作
满的数据块 站总块数比例103936/102851=99% , 这样move后,变化应该不大。因为extent比较小,可以exp compress 处理

SQL> alter table tdwcmsdb.TDWCMS_CHANNELITEM_EXCEPTION move;

Table altered.

SQL> exec show_space('TDWCMS_CHANNELITEM_EXCEPTION','TDWCMSDB')
Total Blocks  ..........................104704
Total Bytes   ..........................857735168
Total MBytes  ..........................818
Unused Blocks ..........................899
Unused Bytes  ..........................7364608
Unused KBytes ..........................7192
Used Blocks   ..........................103805
Used Bytes    ..........................850370560
Used KBytes   ..........................830440
Last Used Ext FileId....................18
Last Used Ext BlockId...................172544
Last Used Block.........................125
The segment is analyzed below
FS1 Blocks (0-25)   ....................0
FS2 Blocks (25-50)  ....................0
FS3 Blocks (50-75)  ....................0
FS4 Blocks (75-100) ....................0
Unformatted Blocks  ....................0
Full Blocks         ....................103292

PL/SQL procedure successfully completed.



SQL>  SELECT segment_name,
                 SUM(bytes)/1024/1024 "SizeM",
                SUM(blocks)  blocks,
                 COUNT(1) extent_count,
           MIN(bytes)/1024/1024 "inital_Extent(M)",
                MAX(bytes)/1024/1024 "max_Extent(M)"
           FROM dba_extents
                WHERE segment_name = 'TDWCMS_CHANNELITEM_EXCEPTION'
                AND owner = 'TDWCMSDB'
         group by segment_name  
   /

SEGMENT_NAME                   SizeM     BLOCKS EXTENT_COUNT inital_Extent(M) max_Extent(M)
------------------------- ---------- ---------- ------------ ---------------- -------------
TDWCMS_CHANNELITEM_EXCEPT        818     104704          174            .0625             8
ION

先试试收缩表段,效果是释放了Unused Blocks,降低了段高水位, extent的数量只减少了3个
SQL>       alter table tdwcmsdb.TDWCMS_CHANNELITEM_EXCEPTION enable row movement;
alter table tdwcmsdb.TDWCMS_CHANNELITEM_EXCEPTION shrink space cascade;
alter table tdwcmsdb.TDWCMS_CHANNELITEM_EXCEPTION disable row movement;
Table altered.

SQL>
Table altered.

SQL>

Table altered.

SQL>
SQL>
SQL>
SQL>  SELECT segment_name,
  2               SUM(bytes)/1024/1024 "SizeM",
  3              SUM(blocks)  blocks,
  4               COUNT(1) extent_count,
  5         MIN(bytes)/1024/1024 "inital_Extent(M)",
  6              MAX(bytes)/1024/1024 "max_Extent(M)"
  7         FROM dba_extents
  8              WHERE segment_name = 'TDWCMS_CHANNELITEM_EXCEPTION'
  9              AND owner = 'TDWCMSDB'
 10        group by segment_name  
 11        
SQL> /

SEGMENT_NAME                   SizeM     BLOCKS EXTENT_COUNT inital_Extent(M) max_Extent(M)
------------------------- ---------- ---------- ------------ ---------------- -------------
TDWCMS_CHANNELITEM_EXCEPT        811     103808          174            .0625             8
ION


SQL> exec show_space('TDWCMS_CHANNELITEM_EXCEPTION','TDWCMSDB')
Total Blocks  ..........................103808
Total Bytes   ..........................850395136
Total MBytes  ..........................811
Unused Blocks ..........................3
Unused Bytes  ..........................24576
Unused KBytes ..........................24
Used Blocks   ..........................103805
Used Bytes    ..........................850370560
Used KBytes   ..........................830440
Last Used Ext FileId....................18
Last Used Ext BlockId...................172544
Last Used Block.........................125
The segment is analyzed below
FS1 Blocks (0-25)   ....................0
FS2 Blocks (25-50)  ....................0
FS3 Blocks (50-75)  ....................0
FS4 Blocks (75-100) ....................0
Unformatted Blocks  ....................0
Full Blocks         ....................103292

PL/SQL procedure successfully completed.




三、执行exp compress 处理,合并extent
exp \'/ as sysdba\' file=tdwcmsdb.dmp compress=Y grants=Y indexes=Y owner=tdwcmsdb;
imp \'/ as sysdba \' file=tdwcmsdb.dmp commit=Y buffer=64000 full=Y IGNORE=Y

exp/imp之后会合并extent,情况如下:
tdwcmdb表空间的fsfi值变到33了, extent数据量明显减少到18个

SQL> @/home/oracle/maintain/sql/fsfi.sql
Connected.
SYSAUX                         27.4839711
SYSTEM                         84.0697033
TDCMS_DATA                            100
TDMC_DATA                             100
TDMDOLOG_DATA                  33.8016191
TDSP_DATA                             100
TDTM_DATA                             100
TDWCMSDB                       33.2900668
TDWLDB_DATA                    50.3387017
TDWLDB_IDX                            100
TDWL_DATA                             100
TDWNET_DATA                           100
TDYWDSDB                       84.0512657
UNDOTBS1                       16.5380801
USERS                          66.8513744

SQL>  exec show_space('TDWCMS_CHANNELITEM_EXCEPTION','TDWCMSDB')
Total Blocks  ..........................104448
Total Bytes   ..........................855638016
Total MBytes  ..........................816
Unused Blocks ..........................1024
Unused Bytes  ..........................8388608
Unused KBytes ..........................8192
Used Blocks   ..........................103424
Used Bytes    ..........................847249408
Used KBytes   ..........................827392
Last Used Ext FileId....................7
Last Used Ext BlockId...................1297289
Last Used Block.........................1024
The segment is analyzed below
FS1 Blocks (0-25)   ....................0
FS2 Blocks (25-50)  ....................0
FS3 Blocks (50-75)  ....................0
FS4 Blocks (75-100) ....................163
Unformatted Blocks  ....................0
Full Blocks         ....................102855

SQL>  SELECT segment_name,
                 SUM(bytes)/1024/1024 "SizeM",
                SUM(blocks)  blocks,
                 COUNT(1) extent_count,
           MIN(bytes)/1024/1024 "inital_Extent(M)",
                MAX(bytes)/1024/1024 "max_Extent(M)"
           FROM dba_extents
                WHERE segment_name = 'TDWCMS_CHANNELITEM_EXCEPTION'
                AND owner = 'TDWCMSDB'
         group by segment_name  
   /

SEGMENT_NAME                   SizeM     BLOCKS EXTENT_COUNT inital_Extent(M) max_Extent(M)
------------------------- ---------- ---------- ------------ ---------------- -------------
TDWCMS_CHANNELITEM_EXCEPT        816     104448          18                 8            64
ION




改造后的脚本:
show_space.sql
 
SQL>  exec show_space('TDWCMS_PRODUCT_DAY','TDWCMSDB')
Total Blocks  ..........................885888
Total Bytes   ..........................7257194496
Total MBytes  ..........................6921
Unused Blocks ..........................0
Unused Bytes  ..........................0
Unused KBytes ..........................0
Used Blocks   ..........................885888
Used Bytes    ..........................7257194496
Used KBytes   ..........................7087104
Last Used Ext FileId....................7
Last Used Ext BlockId...................1654793
Last Used Block.........................8192
The segment is analyzed below
FS1 Blocks (0-25)   ....................1
FS2 Blocks (25-50)  ....................0
FS3 Blocks (50-75)  ....................0
FS4 Blocks (75-100) ....................240
Unformatted Blocks  ....................3832
Full Blocks         ....................880585
The extent is analyzed below
Extent Count   .........................110
Inital Extent MBytes ...................18
Max Extent MBytes ......................64
Average Extent MBytes ..................62.92

PL/SQL procedure successfully completed.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/807718/viewspace-2126585/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-05-16

  • 博文量
    117
  • 访问量
    190344