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はDBインスタンスとは別にASMインスタンスが起動します。
ASMインスタンスはASMディスクグループの情報を管理する為に使用されます。
また通常は各ノードにASMインスタンスが起動しますが、
Oracle12c以降はFlex ASMと言う新機能を使用して、
ASMインスタンスを起動するノードを決めることが出来ます。
ASMはGIインストールをすると自動で構成されます。その後は特に構成する必要はありません。
ASMディスクグループ
データファイル等を格納する領域はASMディスクグループと呼ばれます。
ASMディスクグループは1つ以上のディスクで構成することができます。
ASMディスクグループは複数のディスクを1つの領域として作成することが出来ます。
またディスク障害時に備えて、ファイルのミラーを設定することも可能です。
ミラーのタイプは3つあります。
・高
・標準
・外部
外部は、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インストールユーザ)で実行します。
上記コマンドで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に関しては以上となります。
もう少し細かい内容に関しては次回ご紹介したいと思います。
本章は以上となります。お疲れ様でした!