トップ > DBA上級 RAC > 6章
6章 ASMディスグループの作成
RACを構築するには以下の順で実施してきます。

・Grid Infrastruncture(GI)インストール
・Oracleインストール
・ASMディスクグループの作成 ←今回はここ
・データベース作成

前回GIインストール、Oracleインストールが完了したので、いよいよデータベースを
作成する工程となりますが、その前にデータベースファイルを格納する
領域(ファイルシステム)を準備する必要があります。


ASM(自動ストレージマネージメント)とは


データベースファイルはデータファイル、REDOログファイル、制御ファイルなどがありますが、
それらは共有ディスクに格納します。共有ディスク上にファイルを格納するには、
クラスタファイルシステムが必要です。
クラスタファイルシステムとはLinux等のext4,xfsなどの通常のファイルシステムではなく、
共有ディスクで使用できる排他制御が可能なファイルシステムです。

クラスタファイルシステムを提供するのはOracleのASM(自動ストレージマネージメント)です。
GIインストール時にOCR,投票ディスクを格納する為のASMディスクグループを作成しました。
今回は新しいASMディスクグループを作成し、RACデータベースで使用するよう構成していきたいと
思います。

ASMはボリュームマネージャとクラスタファイルシステムの機能をもっており、
Oracleが提供しています。

この機能を使用するとクラスタファイルシステムを別途準備する必要はありません。

またOracle用に考案されたファイルシステムである為、Oracle DB用に作成されたファイルシステムで
ある為、性能も他のファイルシステムと比較しても性能は高いと言われています。


ASM(自動ストレージ管理)

ASMはDBインスタンスとは別にASMインスタンスが起動します。
ASMインスタンスはASMディスクグループの情報を管理する為に使用されます。

また通常は各ノードにASMインスタンスが起動しますが、
Oracle12c以降はFlex ASMと言う新機能を使用して、
ASMインスタンスを起動するノードを決めることが出来ます。

ASMはGIインストールをすると自動で構成されます。その後は特に構成する必要はありません。



ASMディスクグループ


データファイル等を格納する領域はASMディスクグループと呼ばれます。
ASMディスクグループは1つ以上のディスクで構成することができます。

ASMディスクグループは複数のディスクを1つの領域として作成することが出来ます。
またディスク障害時に備えて、ファイルのミラーを設定することも可能です。
ミラーのタイプは3つあります。

・高
・標準
・外部

ASMの冗長構成

外部は、ASMディスクグループ内ではミラーを実施しません。
外部というのはASMの他の機能を使用して冗長化を構成するからという意味です。
例えばストレージのRAID機能を使用している場合はASM内で冗長化をする必要はないので
その場合は外部冗長を選択します。

ストレージがRAID構成でない場合はASMディスク上で冗長を行う通常もしくはを選択します。
通常はミラーを2つ構成
GIインストール時はOCRファイル、投票ディスクを格納するASMディスクグループを作成しました。
その為、現状は1つASMディスクグループが存在しています。

それでは現状のASMディスクグループを確認してみます。
ASMディスクグループの情報はgridユーザでSQL文を使用して確認できます。
ではASMインスタンスに接続して情報を確認してみます。


  # ps -ef | grep smon_+ASM
        grid      7170     1  0 16:19 ?        00:00:00 asm_smon_+ASM1

上記でASMインスタンスが起動していることが確認できます。
ASMインスタンスも同様SMONプロセスなどDBインスタンス同じプロセスが存在します。
インスタンス名は固定で+ASM1,+ASM2で数字はノードごとに変わります。

ログイン方法はDBインスタンスと一緒でSQL*Plusで接続が可能です。


  # ps -ef | grep smon_+ASM

  $ id
  uid=1100(grid) gid=54321(oinstall) 所属グループ=54321(oinstall),
  1200(asmadmin),1201(asmdba),1202(asmoper)

  $ echo $ORACLE_SID
  +ASM1

  $ echo $ORACLE_HOME
  /u01/app/12.2.0/grid

  $ sqlplus / as sysasm

  SQL*Plus: Release 12.2.0.1.0 Production on Wed Nov 8 XX:XX:XX 2017

  Copyright (c) 1982, 2016, Oracle.  All rights reserved.

  Connected to:
  Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production


SQLで現状のASMディスクグループの情報や、ASMの初期化パラメータ確認、設定、
ASMディスクグループの作成、削除などを行うことが出来ます。

ディスクグループ情報の確認のみであればDBインスタンスでも確認できます。


  SQL> SELECT name,type,total_mb FROM v$asm_diskgroup;

  NAME                           TYPE     TOTAL_MB
  ------------------------------ ------ ----------
  MGMT                           EXTERN      40952


TYPEは冗長性を確認する項目です。EXTERNは外部冗長性です。
次にASMディスクグループがどこのデバイスを使用しているかは
以下で確認できます。


  SQL> SELECT name,path FROM v$asm_disk;

  NAME       PATH
  ---------- --------------------
  MGMT1      AFD:MGMT1
             /dev/sdb1
             /dev/sdc1


PATH名は使用しているデバイス名を表示しますが、
今回はASMFDの機能によりラベル名が表示されています。

ASMフィルタドライバ(ASMFD)はASMディスクとして使用する為の
共有デバイスのOS設定を簡略化するための機能です。
ASMFDを使用している場合は以下を実施します。

  $ asmcmd afd_lsdsk
  ------------------------------------------------------------------------
  Label                     Filtering   Path
  ========================================================================
  MGMT1                       ENABLED   /dev/sdc1


上記より、DATA1のASMディスクグループは/dev/sdb1を使用していることとが分かります。
このコマンドはasmcmdコマンドと言い、SQL文ではなくOracleが提供するASM上の
ファイルをOSコマンドと同じコマンドで操作を可能にする機能です。


asmcmdコマンド


前述でも登場しましたが、asmcmdコマンドを使用すると実際の
ASMファイルシステムにアクセスが出来ます。
ASMもファイルシステムである為、OSコマンドと同じようにlsなどのコマンドを
使用できるようにするモードです。

OSコマンドだけではなく、Oracleに特化したコマンドも多く提供されています。

lsnrctlと同様、asmcmdだけ実行するとASMCMDモードとなり、コマンドを実行できますが、
asmcmd コマンドで実行することも可能です。

  $ asmcmd help
  asmcmd
          Starts asmcmd or executes the command

  Synopsis
          asmcmd [-V] [--nocp] [-v {errors | warnings | normal | info | debug}]
           [--privilege {sysasm | sysdba} ] [-p] [--inst ] [--discover][]

  Description
          The environment variables ORACLE_HOME and ORACLE_SID determine the
          instance to which the program connects, and ASMCMD establishes a
          bequeath connection to it, in the same manner as a SQLPLUS / AS
          SYSASM.  The user must be a member of the OSASM group.
  ・・・
          cd, cp, du, find, help, ls, lsct, lsdg, lsof, mkalias
          mkdir, pwd, rm, rmalias, setsparseparent, showclustermode
          showclusterstate, showpatches, showversion
  ・・・


helpを確認するとls,cp,cdコマンドなど基本的なOSコマンドが実行できるようです。
asmcmdコマンドを使用して、データベースファイルをコピーしたり、
削除したりすることが可能ですが、ASMディスクグループの作成、削除は実行できません。

  $ asmcmd help

   $ asmcmd
   ASMCMD> ls
   MGMT/
   ASMCMD> cd mgmt
   ASMCMD> ls
   ASM/
   _mgmtdb/
   orapwasm_backup
   rac-cluster/
   spfile-MGMTDB.ora
   ASMCMD> ls -l spfile*
   Type           Redund  Striped  Time             Sys  Name
   PARAMETERFILE  UNPROT  COARSE   NOV 13 10:00:00  N    spfile-MGMTDB.ora => 
                 +MGMT/_mgmtdb/PARAMETERFILE/spfile.285.947866437


上記のようにASM上でcdやlsコマンドを実行してどのようなファイルがあるか確認できます。

今回ASMインスタンスが存在し、ASMインスタンスに接続することで情報取得などが
出来ることを確認しました。ASMインスタンスが障害で停止してしまうと、

DBも正常な処理が行えなくなります。
その為、GIがASMインスタンスが停止していないか監視しています。
GIインストールを行うと自動的にASMインスタンスはGIリソー
スとして登録されて管理されています。

以下のコマンドでクラスタウェアが管理しているリソースの一覧とステータス情報を表示できます。
コマンドは後ほど紹介します。


  $ crsctl stat res -t -w "TYPE = ora.asm.type"
  --------------------------------------------------------------------------------
  Name           Target  State        Server                   State details
  --------------------------------------------------------------------------------
  Cluster Resources
  --------------------------------------------------------------------------------
  ora.asm
        1        ONLINE  ONLINE       rac01                    Started,STABLE
        2        ONLINE  ONLINE       rac02                    Started,STABLE
        3        OFFLINE OFFLINE                               STABLE
  --------------------------------------------------------------------------------


ASM(ora.asm)がクラスタ上で管理されており、ノード(rac01,rac02)で起動しています。

ディスクグループもクラスタウェアのリソースとして登録されています。

  $ crsctl stat res -t -w "TYPE = ora.diskgroup.type"
  --------------------------------------------------------------------------------
  Name           Target  State        Server                   State details
  --------------------------------------------------------------------------------
  Local Resources
  --------------------------------------------------------------------------------
  ora.MGMT.dg
                 ONLINE  ONLINE       rac01                    STABLE
                 ONLINE  ONLINE       rac02                    STABLE
  --------------------------------------------------------------------------------


MGMTディスクグループが各ノードで起動していることが分かります。



ASMディスクグループ作成


それでは前置きが長くなりましたが、ASMディスクグループとしては
GIインストール時に作成した1つのみです。

これからデータベースファイル用にもう1つASMディスクグループを作成していきます。

ASMディスクグループは役割が決まっているわけではない為、既に作成済みのOCR、
投票ディスクを格納しているMGMTのASMディスクグループに格納することも可能です。

しかしI/O性能やバックアップなどの要件もある為、
用途に分けてASMディスクグループを作成することがお奨めです。

細かく分ける場合は、REDOログ、データファイル、アーカイブログ用にディスクグループを分けても良いと思います。


ASMディスクグループを作成するには以下の方法があります。

・SQL*PlusによるSQL文での作成(ASMインスタンス実施)
・ASMCA
・Enterprise Manager


先ほどの方法でASMインスタンスに接続し、SQL文での作成も可能です。
またASMCAというツールを使用し、GUIで作成することも可能です。
ASMCAはgridユーザ(GIインストールユーザ)で実行します。

  $ asmca

上記コマンドでASMコンフィグレーションアシスタントが起動します。

ASMの冗長構成
上記の様にASMCAが起動してくるのであとはGUI画面でASMディスクグループを作成します。
その他には作成したASMディスクグループを確認したり、マウント、ディスマウントなどが
実施できます。


  SQL> SELECT name,type,total_mb FROM v$asm_diskgroup;

  NAME                           TYPE     TOTAL_MB
  ------------------------------ ------ ----------
  DATA                           EXTERN      20472
  MGMT                           EXTERN      40952

ASMCAでも作成したASMディスクグループを確認できますが、
SELECT文で実施したい場合は上記コマンドを使用します。
今回はDATAディスクグループを作成してみました。

簡単ではありますがASMに関しては以上となります。
もう少し細かい内容に関しては次回ご紹介したいと思います。


本章は以上となります。お疲れ様でした!