oracle碎片中的空间能使用么,Oracle空间碎片的处理

今天在客户现场处理了一起空间碎片的问题。有问题的表空间已经使用97.1%,数据文件为自动扩展,但磁盘空间已经很紧张。整个表空间已经达到14G之多,另外,查询速度也是越来越慢。[@more@]

查询如下语句:

SQL> select tablespace_name "TABLESPACE",file_id,count(*) "PIECES", max(blocks) "MAXIMUM",min(blocks) "MinIMUM",avg(blocks) "AVERAGE",SUM(blocks) "TOTAL" from dba_free_space group by tablespace_name,file_id;

TABLESPACE FILE_ID PIECES MAXIMUM MinIMUM AVERAGE TOTAL

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

SMSCDRRPT 16 1 15600 15600 15600 15600

SMSCDRRPT 17 3 240 32 106.666667 320

SMSCDRRPT 18 2 15344 144 7744 15488

SMSCDRRPT 20 1 15856 15856 15856 15856

SMSCDRRPT 21 5 3072 16 704 3520

SMSCDRRPT 22 2 16112 6912 11512 23024

SMSCDRRPT 23 1 32496 32496 32496 32496

SQL> col FSFI for 999

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

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

CWMLITE 100

DRSYS 100

EXAMPLE 100

INDX 100

RMANTS 100

SMSCDMACDR01 100

SMSCDMACDR02 100

SMSCDMACDR03 100

SMSCDRRPT 28

SMSGSMCDR01 100

SMSGSMCDR02 100

TABLESPACE_NAME FSFI

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

SMSGSMCDR03 100

SYSTEM 100

TOOLS 100

UNDOTBS 17

USERINDEX 84

USERS 36

SQL> col owner for a5

SQL> col segment_name for a25

SQL>select owner, SEGMENT_NAME,TABLESPACE_NAME ,bytes/1024/1024 mb from dba_segments where tablespa;

OWNER SEGMENT_NAME TABLESPACE_NAME MB

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

SMS T_RPT_COUNT SMSCDRRPT 8378.00781

SMS T_RPT_COUNT_BACKUP SMSCDRRPT .0625

SMS T_CDR_FILE_REC SMSCDRRPT .0625

SMS T_C_FILELOAD SMSCDRRPT 39

SMS T_EMAIL_LIST SMSCDRRPT .0625

SMS IDX_T_PRPT_COUNT SMSCDRRPT 5483.00781

SMS IDX_T_RPT_COUNT_BACKUP SMSCDRRPT .0625

SMS PK_T_CDR_FILE_REC SMSCDRRPT .0625

SMS IDX_T_C_FILELOAD SMSCDRRPT 20

已选择9行。

SMSCDRRPT表空间的碎片问题还是很严重的,alter tablespace SMSCDRRPT coalesce好象只对范围起作用,但对段的碎片无能为力,表空间中有两最大的SEGMENT_NAME ,一个是表,达到8G多,另一个是索引,5G多。经沟通得知情况如下:T_RPT_COUNT 可以只保存最近三个月以来的数据,其它的都可以不保留:),如此一来,问题就非常容易处理了。

1、create table T_PRPT_COUNTNEW as select * from T_RPT_COUNT where ......取最近三个月的;

2、truncate T_PRPT_COUNT;

3、drop T_PRPT_COUNT;

3、rename T_PRPT_COUNTNEW to T_PRPT_COUNT;

做完之后,空间降为800M,用户非常^_^。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值