ログファイルの同期待機に定期的に問題があります。 ASMを使用する2ノードのRACクラスターがあります。 iostatを使用してREDOログファイルを含む物理デバイスを監視したいのですが、どの物理デバイスにREDOロググループが含まれているかわかりません。 150台程度の物理デバイスがあるので、できるだけ絞り込みたいと思います。 REDOログを含むASMファイルを物理Linuxデバイスにマップするにはどうすればよいですか?
まず第一に、人々はしばしばこれに陥りますが、高いlog file sync
待機は、必ずしもI/Oの問題を意味するわけではありません。
次に、ASMディスクグループにREDOログがある物理デバイスが多数ある場合、ファイルのエクステントが複数のディスクに均等に分散されるため、これは非常に厄介な場合があります。
とにかく、REDOログのASMディスクグループ番号とファイル番号を見つける必要があります。たとえば、私のREDOログ:
select member from v$logfile
MEMBER
--------------------------------------------------
+O6CA_DATA/BRIX/ONLINELOG/group_1.258.915373939
+O6CA_FRA/BRIX/ONLINELOG/group_1.257.915373939
+O6CA_DATA/BRIX/ONLINELOG/group_2.259.915373939
+O6CA_FRA/BRIX/ONLINELOG/group_2.258.915373939
+O6CA_DATA/BRIX/ONLINELOG/group_3.266.915374563
+O6CA_FRA/BRIX/ONLINELOG/group_3.259.915374563
+O6CA_DATA/BRIX/ONLINELOG/group_4.267.915374563
+O6CA_FRA/BRIX/ONLINELOG/group_4.260.915374563
私はOMFを使用しているので、ファイル番号は名前(258、257、...)の一部であるため、簡単に認識できますが、次のように取得できます。
select
af.group_number,
af.file_number
from
v$asm_file af
join v$asm_alias aa on (af.group_number = aa.group_number
and af.file_number = aa.file_number)
join v$logfile lf on (substr(lf.member, instr(lf.member, '/', -1) + 1) = aa.name)
;
GROUP_NUMBER FILE_NUMBER
------------ -----------
1 258
2 257
1 259
2 258
1 266
2 259
1 267
2 260
ここで、最初のREDOログファイル(グループ1、ファイル258)について知りたいです。 ASMインスタンスでは(データベースインスタンスではない)、次のようにクエリできます:
select
group_kffxp,
disk_kffxp,
size_kffxp,
count(*)
from
x$kffxp
where
group_kffxp = 1
and number_kffxp = 258
group by
group_kffxp,
disk_kffxp,
size_kffxp
;
GROUP_KFFXP DISK_KFFXP SIZE_KFFXP COUNT(*)
----------- ---------- ---------- ----------
1 0 1 51
したがって、この単一のREDOログファイルには、ディスクグループ番号1、ディスク番号0に51のエクステントがあり、各エクステントは1アロケーションユニットのサイズです(使用したアロケーションユニットは1 MBで、50MBのサイズのREDOログを作成しました。しかし、それはここでは関係ありません)。そして、私の場合、その単一のディスクは次のとおりです。
select name, path from v$asm_disk where group_number = 1 and disk_number = 0
NAME PATH
--------------- ------------------------------
O6CA_DATA_0000 /dev/oracleasm/asm-o6ca_data1