移动数据文件,平衡磁盘负载

通过v$filestat和v$dbfile视图的联合查询,找出热点文件。主要是indx和USERS表空间所属的这两个文件。

  今天在做性能测试的时候,发现查询TT_AUDITPURGE业务表的时候datavg的I/O占用比率很高,但由于是新release的build,且department内部release的installation guide还没有提级数据I/O优化这快儿,那么在instance这一级,做了一点分散I/O的optimzer.其实很简单:

  通过v$filestat和v$dbfile视图的联合查询,找出热点文件。主要是indx和USERS表空间所属的这两个文件,在read和write上占用了大量的I/O,目前所有数据文件都是放在一块盘上。造成了磁盘的负载不均衡,导致I/O很高。 


   SQL> select name,phyrds,phywrts,readtim,writetim
  2 from v$filestat a,v$dbfile b
  3 where a.file#=b.file#
  4 order by readtim desc;
  NAME
  ---------------------------------------------------------
  PHYRDS PHYWRTS READTIM WRITETIM
  ---------- ---------- ---------- ----------
  /oradata/irmdb/indx01.dbf
  55981 4096 12858 208530
  /oradata/irmdb/users01.dbf
  65990 12561 5269 536128
  /oradata/irmdb/system01.dbf
  8300 1808 3345 6259
  /oradata/irmdb/sysaux01.dbf
  2257 7330 1398 12258
  /oradata/irmdb/undotbs01.dbf
  92 24161 44 613217

  开始迁移这两个数据文件和undo表空间中的数据文件分开存储。通过这种移动数据文件的到其他disk的方式来均衡我们的文件I/O,由于不是生产环境,所以我们把表空间直接offline.


      SQL>alter tablespace INDX offline;
  System altered.
  SQL>!
  $cp /oradata/irmdb/indx01.dbf /oradata2/irmdb/indx01.dbf;
  SQL>alter tablespace INDX rename datafile '/oradata/irmdb/indx01.dbf' to '/oradata2/irmdb/indx01.dbf';
  SQL>alter tablespace tablespace online;

  USERS表空间的修改也如INDX一样,其实就是移动了一下数据文件。

posted on 2008-11-22 23:10  一江水  阅读(398)  评论(0编辑  收藏  举报