本视图记录各文件物理I/O信息。如果瓶颈与I/O相关,可用于分析发生的活动I/O事件。V$FILESTAT显示出数据库I/O的下列信息(不包括日志文件):
l 物理读写数
l 块读写数
l I/O读写总耗时
以上数值自实例启动即开始记录。如果获取了两个快照,那么二者之间的差异即是这一时间段内活动I/O统计。
V$FILESTAT中的常用列:
l FILE#:文件序号;
l PHYRDS:已完成的物理读次数;
l PHYBLKRD:块读取数;
l PHYWRTS:DBWR完成的物理写次数;
l PHYBLKWRT:写入磁盘的块数;
V$FILESTAT注意项:
l 因为multiblock读调用,物理读数和数据块读数有可能不同;
l 因为进程直写,物理写和数据块写也可能不一致;
l Sum(physical blocks read) 近似于v$sysstat中的physical reads;
l Sum(physical blocks written) 近似于v$sysstat中的physical writes;
l 数据读(由缓存读比直读好)由服务进程处理。从buffer cache写只能由DBWR进行,直写由服务进程处理。
V$FILESTAT中的连接列
Column View Joined Column(s)
----------- ------------------------- -------------------------
FILE# DBA_DATA_FILES FILE_ID
FILE# V$DATAFILE FILE#
示例:
1.获得数据文件物理读写和数据块读写信息:
select df.tablespace_name name,
df.file_name "file",
f.phyrds pyr,
f.phyblkrd pbr,
f.phywrts pyw,
f.phyblkwrt pbw
from v$filestat f, dba_data_files df where f.file# = df.file_id
order by df.tablespace_name;
注意:尽管oracle记录的读写次数非常精确,但如果数据库运行在Unix文件系统(UFS)有可能不能表现真实的磁盘读写,例如,读次数可能并非真实的磁盘读,而是UFS缓存。不过裸设备的读写次数应该是比较精准的。