本篇内容主要讲解“怎么理解I/O性能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解I/O性能”吧!

为了理解I/O性能,你必须要详细了解存储文件的存储层次信息。Oracle提供了一组动态性能视国来显示文件到逻辑卷中间层到实际的物理设备之间的映射信息。使用这些动态性能视图,可以找到一个文件的任何数据块所内置的实际物理磁盘。Oracle数据库使用一个名叫FMON的后台进程来管理映射信息。Oracle提供了PL/SQL dbms_storage_map包来将映射操作填充到映射视图中。Oracle数据库文件映射当映射Oracle ASM文件时不需要使用第三方的动态库。另外,Oracle数据库支持在所有操作系统平台上对Oracle ASM文件的映射。

对Oracle ASM文件启用文件映射
为了启用文件映射,需要将参数file_mapping设置为true。数据库实例不必关闭来设置这个参数。可以使用以下alter system语句来设置这个参数:

SQL>altersystemsetfile_mapping=truescope=bothsid='*';Systemaltered.

执行合适的dbms_storage_map映射过程
.在冷启动情况下,Oracle数据库在刚刚启动时没有映射操作被调用。可以执行dbms_storage_map.map_all过程来为数据库相关的整个I/O子系统来构建映射信息。例如,下面的命令构建映射信息并且提供10000事件:

SQL>executedbms_storage_map.map_all(10000);PL/SQLproceduresuccessfullycompleted.

.在暖启动情况下,Oracle数据库已经构建了映射信息,可以选择执行dbms_storage_map.map_save过程来将映射信息保存在数据字典中。缺省情况下这个过程将被dbms_storage_map.map_all过程调用,这将强制SGA中的所有映射信息被刷新到磁盘。缺省情况下dbms_storage_map.map_save过程将被dbms_storage_map.map_all()。在重启数据库后,使用dbms_storage_map.restore()过程来还原映射信息到SGA中。如果需要,dbms_storage_map.map_all()可以用来刷新映射信息。

由dbms_storage_map包生成的映射信息会被捕获到动态性能视图中。这些视图包括v$map_comp_list,v$map_element,v$map_ext_element,v$map_file,v$map_file_extent,v$map_file_io_stack,v$map_library与v$map_subelement。
可以使用v$map_file来查询文件映射信息:

SQL>selectfile_map_idx,substr(file_name,1,45),file_type,file_structurefromv$map_file;FILE_MAP_IDXSUBSTR(FILE_NAME,1,45)FILE_TYPEFILE_STRU--------------------------------------------------------------------------------------------------------------------------0+DATA/CS/DATAFILE/system.272.970601831DATAFILEASMFILE1+DATA/CS/DATAFILE/sysaux.273.970601881DATAFILEASMFILE2+DATA/CS/DATAFILE/undotbs1.274.970601905DATAFILEASMFILE3+DATA/CS/4700A987085B3DFAE05387E5E50A8C7B/DATDATAFILEASMFILE4+DATA/CS/4700A987085B3DFAE05387E5E50A8C7B/DATDATAFILEASMFILE5+DATA/CS/DATAFILE/users.275.970601909DATAFILEASMFILE6+DATA/CS/4700A987085B3DFAE05387E5E50A8C7B/DATDATAFILEASMFILE7+DATA/CS/DATAFILE/undotbs2.284.970602381DATAFILEASMFILE8+DATA/CS/DATAFILE/test.326.976211663DATAFILEASMFILE9+DATA/CS/DATAFILE/jy.331.976296525DATAFILEASMFILE10+DATA/CS/6C61AD7B443C2CD2E053BE828A0A2A74/DATDATAFILEASMFILE11+DATA/CS/6C61AD7B443C2CD2E053BE828A0A2A74/DATDATAFILEASMFILE12+DATA/CS/6C61AD7B443C2CD2E053BE828A0A2A74/DATDATAFILEASMFILE13+DATA/CS/ONLINELOG/group_2.277.970601985LOGFILEASMFILE14+DATA/CS/ONLINELOG/group_1.278.970601985LOGFILEASMFILE15+DATA/CS/ONLINELOG/group_3.285.970602759LOGFILEASMFILE16+DATA/CS/ONLINELOG/group_4.286.970602761LOGFILEASMFILE17+DATA/CS/ONLINELOG/redo05.logLOGFILEASMFILE18+DATA/CS/ONLINELOG/redo06.logLOGFILEASMFILE19+DATA/CS/ONLINELOG/redo07.logLOGFILEASMFILE20+DATA/CS/ONLINELOG/redo08.logLOGFILEASMFILE21+DATA/CS/ONLINELOG/redo09.logLOGFILEASMFILE22+DATA/CS/ONLINELOG/redo10.logLOGFILEASMFILE23+DATA/CS/TEMPFILE/temp.279.970602003TEMPFILEASMFILE24+DATA/CS/67369AA1C9AA3E71E053BE828A0A8262/TEMTEMPFILEASMFILE25+DATA/CS/6C61AD7B443C2CD2E053BE828A0A2A74/TEMTEMPFILEASMFILE26+DATA/arch/1_222_970601983.dbfARCHIVEFILEASMFILE27+DATA/arch/1_223_970601983.dbfARCHIVEFILEASMFILE28+DATA/arch/2_277_970601983.dbfARCHIVEFILEASMFILE29+DATA/arch/2_278_970601983.dbfARCHIVEFILEASMFILE30+DATA/arch/2_279_970601983.dbfARCHIVEFILEASMFILE31+DATA/CS/CONTROLFILE/current.276.970601979CONTROLFILEASMFILE31rowsselected.

可以使用dbms_storage_map PL/SQL包中的过程来控制映射操作。例如,可以使用dbms_storage_map.map_object过程通过指定对象名,所有者与类型来对数据库对象来构建映射信息。在dbms_storage_map.map_object过程运行之后,那么可以通过查询map_object视图来查询映射信息

SQL>executedbms_storage_map.map_object('T1','C##TEST','TABLE');PL/SQLproceduresuccessfullycompleted.SQL>selectio.object_nameo_name,io.object_ownero_owner,io.object_typeo_type,2mf.file_name,me.elem_name,io.depth,3(sum(io.cu_size*(io.num_cu-decode(io.parity_period,0,0,4trunc(io.num_cu/io.parity_period))))/2)o_size5frommap_objectio,v$map_elementme,v$map_filemf6whereio.object_name='T1'7andio.object_owner='C##TEST'andio.object_type='TABLE'89andme.elem_idx=io.elem_idx10andmf.file_map_idx=io.file_map_idx11groupbyio.elem_idx,io.file_map_idx,me.elem_name,mf.file_name,io.depth,12io.object_name,io.object_owner,io.object_type13orderbyio.depth;O_NAMEO_OWNERO_TYPFILE_NAMEELEM_NAMEDEPTHO_SIZE---------------------------------------------------------------------------------------------------------------------------------------T1C##TESTTABLE+DATA/CS/DATAFILE/users.275.970601909+/dev/asmdisk04064

到此,相信大家对“怎么理解I/O性能”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!