ITPub博客

首页 > 数据库 > Oracle > Tablespace表空间优化心得

Tablespace表空间优化心得

原创 Oracle 作者:tangwuqiao 时间:2015-04-10 15:25:47 1 删除 编辑
1、首先检查表空间占用空间情况
select total.tablespace_name,
round(total.MB, 2) as Total_MB,
round(total.MB - free.MB, 2) as Used_MB,
round((1 - free.MB/total.MB)*100,2) || '%' as Used_Pct from
 (select tablespace_name, sum(bytes)/1024/1024 as MB from
  dba_free_space group by tablespace_name) free,
  (select tablespace_name, sum(bytes)/1024/1024 as MB from dba_data_files group by tablespace_name)
   total where free.tablespace_name = total.tablespace_name;
对利用率低的生产表进行整理

1、    临时增加SORT_AREA_SIZE的大小
ALTER SESSION SET SORT_AREA_SIZE=209715200;

2、根据空间总量,空间使用率,预估目标总量
   分阶段整理tablespaces的table,可以考虑第一阶段先处理空间总量的80%,第二阶段总量的60%,最后阶段处理到目标总量
   整理表时,必须考虑表对应的INDEX,表移动,INDEX自动失效
   2.1 对于TABLE表,自动生成执行脚本,并执行
   select DISTINCT 'ALTER TABLE '||t.owner||'.'||t.segment_name||' MOVE nologging;',t.BLOCK_ID
  from dba_extents t
 where t.tablespace_name = 'MPSCUR' AND T.segment_type='TABLE' and t.BLOCK_ID >89097;

   2.2 对于TABLE PARTITIONAL,处理方式有所区别
   select DISTINCT 'ALTER TABLE '||t.owner||'.'|| t.segment_name||' MOVE PARTITION '||T.PARTITION_NAME||' nologging;'
  from dba_extents t
 where t.tablespace_name = 'MPSCUR' AND T.segment_type='TABLE PARTITION' and t.BLOCK_ID >89097;

   2.3 对失效的INDEX重建    
   select DISTINCT 'alter index ' ||k.owner||'.'|| k.index_name || ' rebuild  nologging PARALLEL 4;'
  from dba_indexes k
  where k.status='UNUSABLE';

   2.4 对超过目标总量INDEX执行重建
   select DISTINCT 'ALTER INDEX '||t.owner||'.'||t.segment_name||' rebuild nologging PARALLEL 4;'
  from dba_extents t
 where t.tablespace_name = 'MPSCUR' AND T.segment_type='INDEX' and t.BLOCK_ID >89097
3、调整BLOCK_ID值,继续参照2.1、2.2、2.3、2.4执行
4、调整tablespace空间大小

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

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

注册时间:2015-03-14

  • 博文量
    23
  • 访问量
    910072