web-dev-qa-db-ja.com

ASMファイルを物理Linuxデバイスにマップする

ログファイルの同期待機に定期的に問題があります。 ASMを使用する2ノードのRACクラスターがあります。 iostatを使用してREDOログファイルを含む物理デバイスを監視したいのですが、どの物理デバイスにREDOロググループが含まれているかわかりません。 150台程度の物理デバイスがあるので、できるだけ絞り込みたいと思います。 REDOログを含むASMファイルを物理Linuxデバイスにマップするにはどうすればよいですか?

1
GregH

まず第一に、人々はしばしばこれに陥りますが、高い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
2
Balazs Papp