经常被访问的表应该被放置在那些与相应的索引分开的文件系统上;联机重做日至、控制文件和归档日志都应该与那些被用来恢复的数据文件分开放置。
1、分开存储数据和索引文件
通常应该把所连接的表(在一个查询中同时访问的表)的数据和索引分开放置。
注意:
Ÿ把下列关键数据文件分布在各个可用的磁盘上,这些文件包括SYSTEM表空间、TEMPORARY表空间、回滚段或UNDO段、联机重做日志文件、操作系统盘、Oracle_HOME目录中的关键Oracle文件、经常访问的表的数据文件以及经常访问的索引的数据文件。
Ÿ把控制文件的多个备份存储到不同的磁盘和控制器上。
2、避免I/O磁盘争用
监控磁盘争用,可以使用FILEIO Monitor来完成以下任务:
Ÿ显示用户访问实际的数据库文件的频率;
Ÿ移动表和索引,在所有磁盘上均匀分布访问。
V$FILESTAT动态性能视图用于显示文件读写统计信息,主要描述以下信息:
Column
Datatype
Description
FILE#
NUMBER
Number of the file
PHYRDS
NUMBER
Number of physical reads done
PHYWRTS
NUMBER
Number of times DBWR is required to write
PHYBLKRD
NUMBER
Number of physical blocks read
PHYBLKWRT
NUMBER
Number of blocks written to disk, which may be the same asPHYWRTSif all writes are single blocks
SINGLEBLKRDS
NUMBER
Number of single block reads
READTIM
NUMBER
Time (in hundredths of a second) spent doing reads if theTIMED_STATISTICSparameter istrue;0iffalse
WRITETIM
NUMBER
Time (in hundredths of a second) spent doing writes if theTIMED_STATISTICSparameter istrue;0iffalse
SINGLEBLKRDTIM
NUMBER
Cumulative single block read time (in hundredths of a second)
AVGIOTIM
NUMBER
Average time (in hundredths of a second) spent on I/O, if theTIMED_STATISTICSparameter istrue;0iffalse
LSTIOTIM
NUMBER
Time (in hundredths of a second) spent doing the last I/O, if theTIMED_STATISTICSparameter istrue;0iffalse
MINIOTIM
NUMBER
Minimum time (in hundredths of a second) spent on a single I/O, if theTIMED_STATISTICSparameter istrue;0iffalse
MAXIORTM
NUMBER
Maximum time (in hundredths of a second) spent doing a single read, if theTIMED_STATISTICSparameter istrue;0iffalse
MAXIOWTM
NUMBER
Maximum time (in hundredths of a second) spent doing a single write, if theTIMED_STATISTICSparameter istrue;0iffalse
通过SQL查询来确定文件的I/O问题:
SQL> set pagesize 100
SQL> col phyrds format 999,999,999
SQL> col phywrts format 999,999,999
SQL> col readtim format 999,999,999
SQL> col writetim format 999,999,999
SQL> col name format a50
SQL> select name,phyrds,phywrts,readtim,writetim
2from v$filestat a,v$dbfile b
3where a.file#=b.file#
4order by readtim desc;
NAMEPHYRDSPHYWRTS
READTIMWRITETIM
-------------------------------------------------- ------------ ------------ ---
--------- ------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\SYSTEM01.D16,9679,417
11,892539
BF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\SYSAUX01.D6,56754,448
6,1763,218
BF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\UNDOTBS01.7720,913
9761,253
DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\PERFSTAT.D15110
1973
BF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\EXAMPLE01.43610
1565
DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\USERS01.DB9843
998
F
已选择6行。
为了获得一个较好的均衡,可以移动数据文件。把数据文件分布在多个磁盘上,或者使用分区,都可以将对表或索引的访问移动到另外一个磁盘上。
3、通过移动数据文件来均衡I/O
按照以下步骤来物理移动一个导致文件争用的数据文件:
Ÿ使与数据文件有关的表空间脱机
Alter tablespace orders offline;
Ÿ把数据文件复制到磁盘的新位置上
$cp /disk1/orders1.dbf /disk2/orders1.dbf
Ÿ用新数据文件位置为表空间重命名数据文件
Alter tablespace orders rename datafile ‘/disk1/orders1.dbf’ to ‘/disk2/orders1.dbf’;
Ÿ使表空间重新联机
Alter tablespace orders online;
$rm /disk1/orders1.dbf