ASM を味わう ~ ASM の情報を取得せよ ~ その3

投稿日: 2005年8月24日

<ASM を味わう ~ ASM の情報を取得せよ ~ その3>
ペンネーム:ダーリン

引き続き Oracle 10g の新機能である ASM の検証を行います。

Oracle 10g では ASM 関連の情報が得られる新しい動的パフォーマンスビュー
がいくつか増えています。でも、検索してもなにも表示されないビューがあり
ました。

SQL> select * from v$asm_alias;

no rows selected

SQL> select * from v$asm_file;

no rows selected

ちなみに ASM と名の付く動的パフォーマンスビューは 7 個あります。
( GV$ 表など実質同じビューに関しては省いています。)

ビュー名          DB インスタンス  ASM インスタンス
----------------- ---------------- ----------------
V$ASM_ALIAS             ×               ○
V$ASM_CLIENT            ○               ○
V$ASM_DISK              ○               ○
V$ASM_DISKGROUP         ○               ○
V$ASM_FILE              ×               ○
V$ASM_OPERATION         ×               ○
V$ASM_TEMPLATE          ○               ○

                     (○:検索可   ×:検索不可)

実はこれらのビューは、データベースインスタンスのほか、ASM インスタンス
でも検索することが出来ます。注意しなくてはいけないのが、同じ名前のビュ
ーですが、表示している内容は異なる点です。また、上記のようにデータベー
スインスタンスでは、データが表示されないビューもあります。
これらのビューからはおおむね次のような情報が取得できます。

ビュー名         説明                                     インスタンス
---------------- ---------------------------------------- ------------
V$ASM_ALIAS      ASM マウントされた DISK グループの名称      ASM
V$ASM_CLIENT     使用している ASM インスタンスの情報         DB
                 使用している DB インスタンスの情報          ASM
V$ASM_DISK       DB が使用している DISK の情報               DB
                 ASM がマウントしている DISK の情報          ASM
V$ASM_DISKGROUP  DB が使用している DISK Group の情報         DB
                 ASM がマウントしている DISK Group の情報    ASM
V$ASM_FILE       ASM がマウントしている DISK Group に存在    ASM
                 するファイルの情報
V$ASM_OPERATION  ASM インスタンスで実行されている処理情報    ASM
V$ASM_TEMPLATE   通信対象 ASM が管理する DISK Group のテ     DB
                 ンプレート情報
                 自身が管理する DISK Group のテンプレート    ASM
                 情報

さて今回は、これらを使って ASM で管理されているファイルの情報を取得し
ましょう。

もっともそれらしいのは、V$ASM_FILE でしょうか。でもこのビューを使って
もデータベースインスタンスではなにも情報が取得できません。
では、ASM インスタンスへログインして情報を見てみましょう。

ちなみに V$ASM_FILE で確かに ASM で管理しているファイルの情報がわかる
のですが実はファイル名が取得できません。 V$ASM_ALIAS とジョインするこ
とで、ファイル名と共に情報を取得してみます。

すると、こんな具合になります。

SQL> select a.name                   FILE_NAME
  2        ,b.blocks                 USED_BLOCKS
  3        ,trunc(b.bytes/1024/1024) USED_MBytes
  4        ,trunc(b.space/1024/1024) ALLOCATE_MBytes
  5        ,type                     TYPE
  6  from v$asm_alias a,v$asm_file b
  7  where a.group_number = b.group_number
  8    and a.file_number = b.file_number
  9    and a.file_incarnation = b.incarnation;

FILE_NAME          USED_BLOCKS USED_MBYTES ALLOCATE_MBYTES TYPE
------------------ ----------- ----------- --------------- -------------
SYSTEM.256.1             56321         440             885 DATAFILE
SYSAUX.257.1             29441         230             465 DATAFILE
UNDOTBS1.258.1            3201          25              52 DATAFILE
USERS.259.1                641           5              12 DATAFILE
Current.260.3              175           2              16 CONTROLFILE
Current.261.3              175           2              16 CONTROLFILE
group_1.262.1            20481          10              32 ONLINELOG
group_1.263.1            20481          10              32 ONLINELOG
group_2.264.1            20481          10              32 ONLINELOG
group_2.265.1            20481          10              32 ONLINELOG
group_3.266.1            20481          10              32 ONLINELOG
group_3.267.1            20481          10              32 ONLINELOG
TEMP.268.1                2561          20              42 TEMPFILE
spfile.269.1                 5           0               2 PARAMETERFILE
spfileora101.ora             5           0               2 PARAMETERFILE
TEST.270.1               12801         100             202 DATAFILE
TEST001.275.3             2561          20              42 DATAFILE

17 rows selected.

ファイル名とそのサイズ、さらに、ファイルの種類がわかります。ASM では、
データファイルのほか、制御ファイルや、REDO ログファイル、パラメータ
ファイルも管理することが出来るようです。もちろんこれ以外にも管理でき
るファイルのタイプがあるので、マニュアルを確認してみてください。

上記の結果から、どうやら先週削除した “TEST002” 表領域のデータファイル
“test002.274.3″ はASM 上からも削除されているということがわかります。
DB_CRAETE_FILE_DEST の設定ははずしたので、OMF は効いていないはずなの
ですが。。。んー、本当に OMF は必要なんだろうか? 疑問が残ってしまいま
した。継続して調査が必要なようです。

とにかく、上記の SQL からどんなファイルが ASM で管理されているのかを確
認することが出来そうです。しかし、次はどうもファイルのサイズが気になり
ます。”TEST001” 表領域は確か、20 MB で作成したはずです。USED_MBYTES は
確かに、20 MB です。では、ALLOCATE_MBYTES の 42 MB とは何のことでしょ
うか。良く見ると、他のデータファイルなども、USED_MBYTES よりも 大きな
領域が ALLOCATE_MBYTES になっています。マニュアルには、「割り当てられ
たバイト数」と書かれています。割り当てたのは、20 MB だっちゅうのに。

ふと見ると、データファイルと思われるファイルのサイズはおおむね、2 倍ほ
ど “ALLOCATE” されています。

皆さん気が付きましたか?

どうやら冗長化された分だけ多く “ALLOCATE” されているような気がしてきま
した。

SQL> select name,type from v$asm_diskgroup;

NAME                           TYPE
------------------------------ ------------------------------
DATA                           NORMAL

ふむふむ、ここで言う NORMAL とは、2 重化の意味です。

では、多重化しない DISK Group に表領域を作成した場合、多めに “ALLOCATE”
されるのかどうか見てみましょう。

ちょっとお隣の環境を借りてみます。

SQL> select a.name                   FILE_NAME
  2        ,b.blocks                 USED_BLOCKS
  3        ,trunc(b.bytes/1024/1024) USED_MBytes
  4        ,trunc(b.space/1024/1024) Allocate_Mbytes
  5        ,b.type                   TYPE
  6        ,c.type                   REDUNDANCY
  7  from v$asm_alias a,v$asm_file b,v$asm_diskgroup c
  8  where a.group_number = b.group_number
  9    and a.file_number = b.file_number
 10    and a.file_incarnation = b.incarnation
 11    and a.group_number = c.group_number

FILE_NAME         USED_BLOCKS USED_MBYTES ALLOCATE_MBYTES TYPE          REDUNDANCY
----------------- ----------- ----------- --------------- ------------- -----------
SYSTEM.256.1            56321         440             885 DATAFILE      NORMAL
SYSAUX.257.1            26881         210             425 DATAFILE      NORMAL
UNDOTBS1.258.1           3201          25              52 DATAFILE      NORMAL
USERS.259.1               641           5              12 DATAFILE      NORMAL
Current.260.3             175           2              16 CONTROLFILE   NORMAL
Current.261.3             175           2              16 CONTROLFILE   NORMAL
group_1.262.1           20481          10              32 ONLINELOG     NORMAL
group_1.263.1           20481          10              32 ONLINELOG     NORMAL
group_2.264.1           20481          10              32 ONLINELOG     NORMAL
group_2.265.1           20481          10              32 ONLINELOG     NORMAL
group_3.266.1           20481          10              32 ONLINELOG     NORMAL
group_3.267.1           20481          10              32 ONLINELOG     NORMAL
TEMP.268.1               2561          20              42 TEMPFILE      NORMAL
spfile.269.1                5           0               2 PARAMETERFILE NORMAL
spfileora101.ora            5           0               2 PARAMETERFILE NORMAL
TEST000.256.1            2561          20              21 DATAFILE      EXTERN
~~~~~~~~~~~~~~                        ~~~             ~~~              ~~~~~~~~
16 rows selected.

一番下の “TEST000” 表領域が多重化しない DISK Group に作成した表領域
です。どうやら予想は当たった見たいです。
ただ、いずれにしても少しオーバーヘッドがあるようですね。数MB 大きくな
っています。

今週はここまで。
台風接近中の茅ヶ崎にて