您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“怎么理解I/O性能”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么理解I/O性能”吧!
為了理解I/O性能,你必須要詳細(xì)了解存儲(chǔ)文件的存儲(chǔ)層次信息。Oracle提供了一組動(dòng)態(tài)性能視國(guó)來顯示文件到邏輯卷中間層到實(shí)際的物理設(shè)備之間的映射信息。使用這些動(dòng)態(tài)性能視圖,可以找到一個(gè)文件的任何數(shù)據(jù)塊所內(nèi)置的實(shí)際物理磁盤。Oracle數(shù)據(jù)庫使用一個(gè)名叫FMON的后臺(tái)進(jìn)程來管理映射信息。Oracle提供了PL/SQL dbms_storage_map包來將映射操作填充到映射視圖中。Oracle數(shù)據(jù)庫文件映射當(dāng)映射Oracle ASM文件時(shí)不需要使用第三方的動(dòng)態(tài)庫。另外,Oracle數(shù)據(jù)庫支持在所有操作系統(tǒng)平臺(tái)上對(duì)Oracle ASM文件的映射。
對(duì)Oracle ASM文件啟用文件映射
為了啟用文件映射,需要將參數(shù)file_mapping設(shè)置為true。數(shù)據(jù)庫實(shí)例不必關(guān)閉來設(shè)置這個(gè)參數(shù)。可以使用以下alter system語句來設(shè)置這個(gè)參數(shù):
SQL> alter system set file_mapping=true scope=both sid='*'; System altered.
執(zhí)行合適的dbms_storage_map映射過程
.在冷啟動(dòng)情況下,Oracle數(shù)據(jù)庫在剛剛啟動(dòng)時(shí)沒有映射操作被調(diào)用??梢詧?zhí)行dbms_storage_map.map_all過程來為數(shù)據(jù)庫相關(guān)的整個(gè)I/O子系統(tǒng)來構(gòu)建映射信息。例如,下面的命令構(gòu)建映射信息并且提供10000事件:
SQL> execute dbms_storage_map.map_all(10000); PL/SQL procedure successfully completed.
.在暖啟動(dòng)情況下,Oracle數(shù)據(jù)庫已經(jīng)構(gòu)建了映射信息,可以選擇執(zhí)行dbms_storage_map.map_save過程來將映射信息保存在數(shù)據(jù)字典中。缺省情況下這個(gè)過程將被dbms_storage_map.map_all過程調(diào)用,這將強(qiáng)制SGA中的所有映射信息被刷新到磁盤。缺省情況下dbms_storage_map.map_save過程將被dbms_storage_map.map_all()。在重啟數(shù)據(jù)庫后,使用dbms_storage_map.restore()過程來還原映射信息到SGA中。如果需要,dbms_storage_map.map_all()可以用來刷新映射信息。
由dbms_storage_map包生成的映射信息會(huì)被捕獲到動(dòng)態(tài)性能視圖中。這些視圖包括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> select file_map_idx, substr(file_name,1,45), file_type, file_structure from v$map_file; FILE_MAP_IDX SUBSTR(FILE_NAME,1,45) FILE_TYPE FILE_STRU ------------ ------------------------------------------------------------------------------------------ ----------- --------- 0 +DATA/CS/DATAFILE/system.272.970601831 DATAFILE ASMFILE 1 +DATA/CS/DATAFILE/sysaux.273.970601881 DATAFILE ASMFILE 2 +DATA/CS/DATAFILE/undotbs1.274.970601905 DATAFILE ASMFILE 3 +DATA/CS/4700A987085B3DFAE05387E5E50A8C7B/DAT DATAFILE ASMFILE 4 +DATA/CS/4700A987085B3DFAE05387E5E50A8C7B/DAT DATAFILE ASMFILE 5 +DATA/CS/DATAFILE/users.275.970601909 DATAFILE ASMFILE 6 +DATA/CS/4700A987085B3DFAE05387E5E50A8C7B/DAT DATAFILE ASMFILE 7 +DATA/CS/DATAFILE/undotbs2.284.970602381 DATAFILE ASMFILE 8 +DATA/CS/DATAFILE/test.326.976211663 DATAFILE ASMFILE 9 +DATA/CS/DATAFILE/jy.331.976296525 DATAFILE ASMFILE 10 +DATA/CS/6C61AD7B443C2CD2E053BE828A0A2A74/DAT DATAFILE ASMFILE 11 +DATA/CS/6C61AD7B443C2CD2E053BE828A0A2A74/DAT DATAFILE ASMFILE 12 +DATA/CS/6C61AD7B443C2CD2E053BE828A0A2A74/DAT DATAFILE ASMFILE 13 +DATA/CS/ONLINELOG/group_2.277.970601985 LOGFILE ASMFILE 14 +DATA/CS/ONLINELOG/group_1.278.970601985 LOGFILE ASMFILE 15 +DATA/CS/ONLINELOG/group_3.285.970602759 LOGFILE ASMFILE 16 +DATA/CS/ONLINELOG/group_4.286.970602761 LOGFILE ASMFILE 17 +DATA/CS/ONLINELOG/redo05.log LOGFILE ASMFILE 18 +DATA/CS/ONLINELOG/redo06.log LOGFILE ASMFILE 19 +DATA/CS/ONLINELOG/redo07.log LOGFILE ASMFILE 20 +DATA/CS/ONLINELOG/redo08.log LOGFILE ASMFILE 21 +DATA/CS/ONLINELOG/redo09.log LOGFILE ASMFILE 22 +DATA/CS/ONLINELOG/redo10.log LOGFILE ASMFILE 23 +DATA/CS/TEMPFILE/temp.279.970602003 TEMPFILE ASMFILE 24 +DATA/CS/67369AA1C9AA3E71E053BE828A0A8262/TEM TEMPFILE ASMFILE 25 +DATA/CS/6C61AD7B443C2CD2E053BE828A0A2A74/TEM TEMPFILE ASMFILE 26 +DATA/arch/1_222_970601983.dbf ARCHIVEFILE ASMFILE 27 +DATA/arch/1_223_970601983.dbf ARCHIVEFILE ASMFILE 28 +DATA/arch/2_277_970601983.dbf ARCHIVEFILE ASMFILE 29 +DATA/arch/2_278_970601983.dbf ARCHIVEFILE ASMFILE 30 +DATA/arch/2_279_970601983.dbf ARCHIVEFILE ASMFILE 31 +DATA/CS/CONTROLFILE/current.276.970601979 CONTROLFILE ASMFILE 31 rows selected.
可以使用dbms_storage_map PL/SQL包中的過程來控制映射操作。例如,可以使用dbms_storage_map.map_object過程通過指定對(duì)象名,所有者與類型來對(duì)數(shù)據(jù)庫對(duì)象來構(gòu)建映射信息。在dbms_storage_map.map_object過程運(yùn)行之后,那么可以通過查詢map_object視圖來查詢映射信息
SQL> execute dbms_storage_map.map_object('T1','C##TEST','TABLE'); PL/SQL procedure successfully completed. SQL> select io.object_name o_name, io.object_owner o_owner, io.object_type o_type, 2 mf.file_name, me.elem_name, io.depth, 3 (sum(io.cu_size * (io.num_cu - decode(io.parity_period, 0, 0, 4 trunc(io.num_cu / io.parity_period)))) / 2) o_size 5 from map_object io, v$map_element me, v$map_file mf 6 where io.object_name = 'T1' 7 and io.object_owner = 'C##TEST' and io.object_type = 'TABLE' 8 9 and me.elem_idx = io.elem_idx 10 and mf.file_map_idx = io.file_map_idx 11 group by io.elem_idx, io.file_map_idx, me.elem_name, mf.file_name, io.depth, 12 io.object_name, io.object_owner, io.object_type 13 order by io.depth; O_NAME O_OWNER O_TYP FILE_NAME ELEM_NAME DEPTH O_SIZE -------------------- -------------------- ----- -------------------------------------------------- -------------------- ---------- ---------- T1 C##TEST TABLE +DATA/CS/DATAFILE/users.275.970601909 +/dev/asmdisk04 0 64
到此,相信大家對(duì)“怎么理解I/O性能”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。