しばちょう先生の試して納得!DBAへの道 indexページ▶▶

 


みなさん、こんにちは。”しばちょう”こと柴田長(しばた つかさ)です。

さあ、今年もOracle DBA & Developer Day 2016(10/27@ウェスティンホテル東京)がやってきます!私も午前中のKeynoteと午後に二コマぶち抜きセッションを担当させて頂きますので、是非ともご参加をお願い致します。

とは言え、この記事が公開されるのはその前日位なので、今書いている文章の効果を発揮できるのは一日程度ですけどね・・・

さて今回は、Oracle Database 12c Release 1から、ASMディスク・グループ内のディスクの置換(Replace Diskコマンド)が実装されています。この機能が実装されるまではASMディスクに障害が発生した際には、基本的に冗長性回復の為に残ったASMディスクでリバランスを実行してディスクを交換した後に、そのASMディスクを追加して再度リバランスを実行します。となると、リバランスが2回で無駄な感じがしてしまいますよね。そこで登場するのが本機能!一回のリバランスで、障害のあったASMディスク上に配置されていたデータだけを新たに追加したディスク上にミラーデータを使用して復元できるのです。普段はあまり使用し無いかもしれませんが、知っておくとイザという時に役に立つコマンドを幾つか学んでおきましょう!

以下の演習をOracle Database 12c Release 12.1.0.2 のデータベースで試してみてください。なお、Oracle Database 12c Release 1 (12.1.0.2) の単一インスタンス・データベースのインストレーション・ガイド 及び、Oracle VM VirtualBoxを用いたOracle Database 12c Release 1 環境の構築ガイドが、Oracle Technology Networkのこちらのページに公開されておりますので、参考にしてみてください。

 
  • 【今回ご紹介するネタ一覧(逆引き)】
  • ✓ ユーティリティでのASMディスクの状態確認方法(演習2)
  • ✓ ASMインスタンス上でのASMファイル番号の確認方法(演習3)
  • ✓ ASMインスタンス上でのASMファイルのFull Path取得方法(演習3)
  • ✓ ASMディスクの置換コマンド(演習9)


1. High Redundancyもしくは、Normal RedundancyなASMディスク・グループ上に、以下のスクリプトを参考として検証用の表を作成して下さい。

[oracle@vm12c1 ~]$ sqlplus / as sysdba
SQL>
create tablespace TBS49 datafile '+DATA(DATAFILE)' size 100m ;
create user TRY identified by TRY12345 default tablespace TBS49 ;
grant CONNECT, RESOURCE, DBA to TRY ;
connect TRY/TRY12345
create table TAB49 (COL1 number, COL2 char(1000)) ;
insert /*+append */ into TAB49
  select LEVEL, 'sibacho' from DUAL connect by LEVEL <=7*128*32 ;
commit ;
set linesize 150 pages 5000
col SEGMENT_NAME for a16
select SEGMENT_NAME, BYTES/1024/1024 from USER_SEGMENTS ;

SEGMENT_NAME     BYTES/1024/1024
---------------- ---------------
TAB49                         33


set linesize 150 pages 5000
col FILE_NAME for a60
select FILE_NAME, TABLESPACE_NAME, BYTES/1024/1024 from DBA_DATA_FILES ;

FILE_NAME                                  TABLESPACE_NAME BYTES/1024/1024
------------------------------------------ --------------- ---------------
+DATA/ORCL/DATAFILE/system.261.841575323   SYSTEM                      800
+DATA/ORCL/DATAFILE/sysaux.262.841575331   SYSAUX                      400
+DATA/ORCL/DATAFILE/tbs49.263.925534375    TBS49                       100
+DATA/ORCL/DATAFILE/users.269.920275325    USERS                       100
+DATA/ORCL/DATAFILE/undotbs.267.896676927  UNDOTBS                     200

はい、こちらは毎度の指の準備体操ですから、説明は割愛させて頂きます。なお、ASMディスク・グループの作成方法は「第30回 ASMディスク・グループの作成と使用量の確認」を参考にしてみて下さい。

これ以降の演習では、模擬的ではありますがASMディスクの障害を発生させることになりますので、必ず、High RedundancyもしくはNormal RedundancyのASMディスク・グループで実行をして下さい。あくまで学習の為に記載させて頂いておりますので、本番環境では絶対に実行しないようにお願い致します。自己責任でお願い致します!


2. ASMディスク・グループのASMディスク状態について、asmcmdユーティリティを使用して確認して下さい。

[grid@vm12c1 ~]$ 
$ export ORACLE_SID=+ASM
$ asmcmd

ASMCMD> lsdsk -pk -G DATA
Total_MB  Free_MB  OS_MB  Name       Failgroup  Failgroup_Type  Library  Label  UDID  Product  Redund   Group_Num  Disk_Num      Incarn  Mount_Stat  Header_Stat  Mode_Stat  State   Path
    2047      846   2047  DATA_0000  DATA_0000  REGULAR         System                         UNKNOWN          1         0  3915952153  CACHED      MEMBER       ONLINE     NORMAL  /dev/sdc1
    2047      852   2047  DATA_0001  DATA_0001  REGULAR         System                         UNKNOWN          1         1  3915952152  CACHED      MEMBER       ONLINE     NORMAL  /dev/sdd1
    2047      842   2047  DATA_0002  DATA_0002  REGULAR         System                         UNKNOWN          1         2  3915952150  CACHED      MEMBER       ONLINE     NORMAL  /dev/sde1
    2047      851   2047  DATA_0003  DATA_0003  REGULAR         System                         UNKNOWN          1         3  3915952151  CACHED      MEMBER       ONLINE     NORMAL  /dev/sdf1

ASMディスクの状態を確認するビューとしてはV$ASM_DISKですが、SQL*Plusを使用してSELECT文を毎回書くのは面倒だという私にお薦めなのが、asmcmdユーティリティでの「lsdsk」コマンドですね。幾つか引数オプションがありますので、自分好みの表示を模索してみて下さいね。ちなみに私は上記の回答例の通り「-pk」です。色々な語呂と紐づけて覚えておけるので便利ですよー

でもって、上記のとおり、私の検証環境のASMディスク・グループ「DATA」は4本のASMディスクで構成されており、全てのASMディスクが「ONLINE」なので健全な状態ですね。これ以降の演習では、4本目のASMディスク(ASMディスク名=DATA_0003で、障害グループDATA_0003に属している)に模擬障害を発生させる予定です。

 

3. (おまけ) 演習1で作成したデータファイルのASMファイル番号を特定して下さい。

[grid@vm12c1 ~]$ sqlplus / as sysasm
SQL>
set lines 110 pages 500
col NAME for a32
col ALIAS_DIRECTORY for a16
select NAME, GROUP_NUMBER, FILE_NUMBER, FILE_INCARNATION, ALIAS_DIRECTORY
  from V$ASM_ALIAS
 where GROUP_NUMBER=1
 order by 3,1 ;

NAME                             GROUP_NUMBER FILE_NUMBER FILE_INCARNATION ALIAS_DIRECTORY
-------------------------------- ------------ ----------- ---------------- ----------------
REGISTRY.253.841570641                      1         253        841570641 N
orapwasm                                    1         256        841570641 N
pwdasm.256.841570641                        1         256        841570641 N
Current.257.841575309                       1         257        841575309 N
group_1.258.841575311                       1         258        841575311 N
group_2.259.841575315                       1         259        841575315 N
group_3.260.841575319                       1         260        841575319 N
SYSTEM.261.841575323                        1         261        841575323 N
SYSAUX.262.841575331                        1         262        841575331 N
TBS49.263.925534375                         1         263        925534375 N
TEMP.264.841575341                          1         264        841575341 N
spfile.266.841576639                        1         266        841576639 N
spfileorcl.ora                              1         266        841576639 N
UNDOTBS.267.896676927                       1         267        896676927 N
spfile.268.859269573                        1         268        859269573 N
spfileorcl.ora_1411678772197                1         268        859269573 N
USERS.269.920275325                         1         269        920275325 N
ASM                                         1  4294967295       4294967295 Y
ASMPARAMETERFILE                            1  4294967295       4294967295 Y
CONTROLFILE                                 1  4294967295       4294967295 Y
DATAFILE                                    1  4294967295       4294967295 Y
ONLINELOG                                   1  4294967295       4294967295 Y
ORCL                                        1  4294967295       4294967295 Y
PARAMETERFILE                               1  4294967295       4294967295 Y
PASSWORD                                    1  4294967295       4294967295 Y
TEMPFILE                                    1  4294967295       4294967295 Y

ちょっと脱線しますが、ASMの世界でもファイルという概念はあります。それはデータベースが扱っているファイルと同じ単位なので、例えば、データベース・ファイル=ASMファイルですね。じゃあ、それっぽい名前であるV$ASM_FILEビューを参照してみれば、ASMファイルの情報が確認できます。と思いますが、実は、V$ASM_FILEビューには、ASMファイル名を表示する列が存在しない・・・なんてことだ!

では、どうするのかと言うと、ASMファイル名はV$ASM_ALIASビューで保持されているのですね。そして、ASMファイルにもASMファイル番号なるものがあり、この番号はV$ASM_FILEビューとV$ASM_ALIASビューの両方で保持しているので、それを紐づける事になります。知らなくても困らないのですが、知っていると鼻高な情報だと思いまして、今回おまけとして記載してみました。

さらに、上記の回答例のV$ASM_ALIASビューを見て頂くと分かるように、ALIAS_DIRECTORY列に「Y」or「N」が入っていますが、これはその行の情報がディレクトリ情報なのか否かを示しています。FILE_NUMBER列も合わせてみて頂くと理解が進むと思いますが、ASMファイルにはASMファイル番号が振られています。ディレクトリ情報にはASMファイル番号が非常に大きな値となっていますね。と解説してくると疑問が沸きます。そのASMファイルのFull Pathはどうやって取得するのだ?

と言う事で、出血大サービスのSELECT文を公開しちゃいますよー

$ sqlplus / as sysasm
SQL>
select * from (
select CONCAT('+'||GNAME, SYS_CONNECT_BY_PATH(ANAME, '/'))
       FULL_PATH, 
       SYSTEM_CREATED,
       ALIAS_DIRECTORY,
       FNO
  from ( select B.NAME            GNAME,
                A.PARENT_INDEX    PINDEX,
                A.NAME            ANAME,
                A.REFERENCE_INDEX RINDEX,
                A.FILE_NUMBER     FNO,
                A.SYSTEM_CREATED,
                A.ALIAS_DIRECTORY,
                C.TYPE            FILE_TYPE
           from V$ASM_ALIAS     A,
                V$ASM_DISKGROUP B,
                V$ASM_FILE      C
          where A.GROUP_NUMBER     = B.GROUP_NUMBER
            and A.GROUP_NUMBER     = C.GROUP_NUMBER(+)
            and A.FILE_NUMBER      = C.FILE_NUMBER(+)
            and A.FILE_INCARNATION = C.INCARNATION(+)
        )
 START WITH (MOD(PINDEX, POWER(2, 24))) = 0
 CONNECT BY PRIOR RINDEX = PINDEX)
 where ALIAS_DIRECTORY = 'N' ;

FULL_PATH                                                        SYS ALI        FNO
---------------------------------------------------------------- --- --- ----------
+DATA/ORCL/PASSWORD/pwdorcl.277.854489613                        Y   N          277
+DATA/ORCL/DATAFILE/UNDOTBS1.297.911148625                       Y   N          297
+DATA/ORCL/DATAFILE/USERS.285.911148639                          Y   N          285
+DATA/ORCL/DATAFILE/SYSTEM.298.911148613                         Y   N          298
+DATA/ORCL/DATAFILE/SYSAUX.290.911148621                         Y   N          290
+DATA/ORCL/CONTROLFILE/Current.301.911148591                     Y   N          301
+DATA/ORCL/ONLINELOG/group_1.280.911148591                       Y   N          280
+DATA/ORCL/ONLINELOG/group_3.296.911148607                       Y   N          296
+DATA/ORCL/ONLINELOG/group_2.284.911148599                       Y   N          284
+DATA/ORCL/PARAMETERFILE/spfile.304.911997209                    Y   N          304
+DATA/ORCL/TEMPFILE/TEMP.287.911148625                           Y   N          287
+DATA/ORCL/spfileorcl.ora                                        N   N          304
...(省略)...

如何ですか?是非是非、皆様のPC上に保管しておいて頂けると幸いです。

ちなみに、赤文字で記した二つのレコードを見比べてみて下さい。FNO列(ASMファイル番号)が「304」で同じだー何でだ―って驚いて下さい。実はこれ、「ASMエイリアス」っていう仕組みなのです。簡単に言えばシンボリック・リンク見たいなもので、「+DATA/ORCL/spfileorcl.ora」がシンボリック・リンクで、「+DATA/ORCL/PARAMETERFILE/spfile.304.911997209」が実態のファイルとなります。ユーザーが明示的にASMファイル名を指定するケースがあるかと思いますが、実際には、指定した名前のASMエイリアスが作成されて見えているのであって、実態のASMファイルは数字が後ろに沢山並んだ名前で作成されているのですよー。以上、おまけでした!

 

4. ASMディスクの疑似障害を発生させる目的で、ASMディスク・グループに所属するASMディスクを構成するデバイス・ファイルの所有者とグループを変更 して下さい。

### /dev/sdm1のパーミッションを確認(660)
[grid@vm11204]$ ls -lrt /dev/sdf1
brw-rw----. 1 grid asmadmin 8, 81 Oct 18 05:41 /dev/sdf1

### /dev/sdf1のパーミッションが自動的に変更されないようにudevのルールファイルを編集
[root@vm11204]# vi /etc/udev/rules.d/99-oracle.rules
#KERNEL=="sd[c-j]1",ACTION=="add|change",OWNER="grid",GROUP="asmadmin",MODE="660"
KERNEL=="sd[c-e]1",ACTION=="add|change",OWNER="grid",GROUP="asmadmin",MODE="660"
KERNEL=="sd[g-j]1",ACTION=="add|change",OWNER="grid",GROUP="asmadmin",MODE="660"

### udevに編集したルールファイルを認識させる
[root@vm11204]# udevadm control --reload-rules

### 念のため、所有者とグループを手動変更
[root@vm12c1 ~]# chown root:disk /dev/sdf1
[root@vm12c1 ~]# ls -lrt /dev/sdf1
brw-rw----. 1 root disk 8, 81 Oct 18 05:47 /dev/sdf1

いよいよ疑似障害を発生させてみました。

4本目のASMディスク(ASMディスク名=DATA_0003で、障害グループDATA_0003に属している)を構成するデバイス・ファイルの所有者とグループをroot : diskへ変更することで、gridユーザーで起動しているASMインスタンスが読み書き不可能になりますよね。ディスクが障害で見えなくなった状態とほぼほぼ似ている現象だと思います。

今回のASMディスク・グループはNormal Redundancyなので、一本のASMディスクで障害が発生しても問題無い構成となっています。繰り返しになりますが、くれぐれもExternal RedundancyのASMディスク・グループでは実行しないでくださいね。

 

5. TAB49表の全データを読み取れることを確認して下さい。

[oracle@vm12c1 ~]$ sqlplus /nolog
SQL>
-- Buffer Cacheからキャッシュの追い出し
connect / as sysdba
alter system flush buffer_cache ;

-- Table Full Scan
connect TRY/TRY12345
select count(*) from TAB49 ;

  COUNT(*)
----------
     28672

こちらの演習は問題無いでしょう。ASMのミラーリング機能がきちんと動作していることが確認出来たかと思います。


6. 疑似障害を発生させたASMディスクの状態を確認して下さい。

[grid@vm11204]$ sqlplus / as sysasm
SQL>
set lines 150 pages 500
col NAME for a17
col HEADER_STATUS for a8
col STATE for a8
col PATH for a9
col FAILGROUP for a12
select GROUP_NUMBER, DISK_NUMBER, HEADER_STATUS, STATE, PATH,
       NAME, FAILGROUP, TOTAL_MB, FREE_MB, REPAIR_TIMER
  from V$ASM_DISK
 where GROUP_NUMBER = 1
 order by 2 ;

GROUP_NUM DISK_NUM HEADER_S STATE  PATH      NAME      FAILGROUP TOTAL_MB FREE_MB REPAIR_TIMER
--------- -------- -------- ------ --------- --------- --------- -------- ------- ------------
        1        0 MEMBER   NORMAL /dev/sdc1 DATA_0000 DATA_0000     2047     846            0
        1        1 MEMBER   NORMAL /dev/sdd1 DATA_0001 DATA_0001     2047     852            0
        1        2 MEMBER   NORMAL /dev/sde1 DATA_0002 DATA_0002     2047     842            0
        1        3 UNKNOWN  NORMAL           DATA_0003 DATA_0003     2047     851        12960

はい、こちらも以前のASMの連載記事の中で確認して頂いていますので復習となります。

ASMディスクの障害を検出したので自動的にOFFLINE状態にしてくれていますね。そして、このOFFLINE状態で12960秒間経過した場合には、自動的にDROP Disk処理が開始される事を意味していますね。この辺りは必要であれば、「第35回 ASMのミラーリングによるデータ保護(2) ~高速ミラー再同期~」で復習しておいて下さいね。


7. 障害ディスクを空の新規ディスクと交換した状態を作り出す目的で、疑似障害を発生させたASMディスクを構成するデバイス・ファイルをゼロ埋めして下さい。

[root@vm12c1 ~]# dd if=/dev/zero of=/dev/sdf1 bs=1024000 count=200 oflag=direct
200+0 records in
200+0 records out
204800000 bytes (205 MB) copied, 1.7685 s, 116 MB/s

まさに演習問題文の通りです。ddコマンドの「oflag=direct」オプションは忘れずに指定しましょう。

申し訳ないですが、ここでは理由は割愛させて頂きますね。


8. 新規ディスクの所有者とグループ、パーミッションを元に戻すことで、ASMインスタンスが候補ディスクとして認識したのかを確認して下さい。

### ルールファイルを変更(元に戻す)
[root@vm11204]# vi /etc/udev/rules.d/99-oracle.rules
KERNEL=="sd[c-j]1",ACTION=="add|change",OWNER="grid",GROUP="asmadmin",MODE="660"
#KERNEL=="sd[c-e]1",ACTION=="add|change",OWNER="grid",GROUP="asmadmin",MODE="660"
#KERNEL=="sd[g-j]1",ACTION=="add|change",OWNER="grid",GROUP="asmadmin",MODE="660"

### udevに編集したルールファイルを認識させる
[root@vm11204]# udevadm control --reload-rules

### 念のため、所有者とグループ、パーミッションを手動変更
[root@vm12c1 ~]# chown grid:asmadmin /dev/sdf1
[root@vm12c1 ~]# chmod 660 /dev/sdf1
[root@vm12c1 ~]# ls -lrt /dev/sdf1
brw-rw----. 1 grid asmadmin 8, 81 Oct 18 05:48 /dev/sdf1


[grid@vm11204]$ sqlplus / as sysasm
SQL>
select GROUP_NUMBER, DISK_NUMBER, HEADER_STATUS, STATE, PATH,
       NAME, FAILGROUP, TOTAL_MB, FREE_MB, REPAIR_TIMER
  from V$ASM_DISK
 order by 1,2 ;

GROUP_N DISK_N HEADER_ST STATE    PATH      NAME      FAILGROUP TOTAL_MB FREE_MB REPAIR_TI
------- ------ --------- -------- --------- --------- --------- -------- ------- ---------
      0      0 CANDIDATE NORMAL   /dev/sdf1                            0       0         0
      1      0 MEMBER    NORMAL   /dev/sdc1 DATA_0000 DATA_0000     2047     846         0
      1      1 MEMBER    NORMAL   /dev/sdd1 DATA_0001 DATA_0001     2047     852         0
      1      2 MEMBER    NORMAL   /dev/sde1 DATA_0002 DATA_0002     2047     842         0
      1      3 UNKNOWN   NORMAL             DATA_0003 DATA_0003     2047     851     12589
      2      0 MEMBER    NORMAL   /dev/sdg1 FRA_0000  FRA_0000      2047    1549         0
      2      1 MEMBER    NORMAL   /dev/sdh1 FRA_0001  FRA_0001      2047    1548         0
      2      2 MEMBER    NORMAL   /dev/sdi1 FRA_0002  FRA_0002      2047    1547         0
      2      3 MEMBER    NORMAL   /dev/sdj1 FRA_0003  FRA_0003      2047    1549         0

はい、如何でしょう?前半のデバイス・ファイルの所有者とグループ、パーミッションの変更は問題無いでしょう。これにより、gridユーザーで起動しているASMインスタンスが、そのデバイス・ファイルへアクセス可能な状態となります。

そして、V$ASM_DISKビューを覗いてみると・・・あれ?なんか2行出ているけど、間違っていない?と思いがちですが、実はここが結構重要なポイントです。このデバイス・ファイルは直前までASMディスクとして使用していましたよね。ASMディスクとして使用していたという情報は、そのデバイス・ファイルの先頭に記録されているのです。ASMインスタンスはASMディスクとなりうる候補デバイス・ファイルを見つけると(正確には、ASM_DISKSTRING初期化パラメータの設定に依存)、そのデバイス・ファイルの先頭をちょっと読み込みます。そこに、「俺は、xxxディスク・グループのxxxディスクだぜ!」って書いてあるか否かが重要なのです。今回は、演習7でデバイス・ファイルの先頭をゼロ埋めしたので空っぽですから、どのASMディスク・グループにも所属していない空っぽなデバイス・ファイルと認識されます。よって、上記の回答例の通り、「GROUP_NUMBER=0」のCANDIDATE(候補)ディスクとして「/dev/sdf1」が認識されているのです。

一方、「GROUP_NUMBER=1」のASMディスク「NAME=DATA_0003」に関しては、対象のデバイス・ファイルが見つからない状態となっている為に、HEADER_STATUSが「UNKNOWN」ですし、PATHも表示されていません。


9. ディスクの置換(Replace Diskコマンド)を実行し、V$ASM_OPERATIONビューからどのような処理が行われているのかを確認して下さい。

[grid@vm11204]$ sqlplus / as sysasm
SQL>
alter diskgroup DATA replace disk DATA_0003 with '/dev/sdf1' power 1 ;


SQL>
select * from V$ASM_OPERATION ;

GROUP_NUMBER OPERA PASS      STAT POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES
------------ ----- --------- ---- ----- ------ ----- -------- -------- -----------
           1 REBAL RESYNC    RUN      1      1   733     1193     2085           0
           1 REBAL REBALANCE WAIT     1      1     0        0        0           0
           1 REBAL COMPACT   WAIT     1      1     0        0        0           0
(表示の都合上、一部の列を省略)

ようやく辿りつきましたが、今回の連載の目玉である「ディスクの置換」を実行してみた結果が上記の通りです。コマンド自体は非常にシンプルですね。こちらのマニュアルでもご確認下さいね。 今回のコマンドを具体的に表現すると、ASMディスク・グループ「DATA」のASMディスク「DATA_0003」をデバイス・ファイル「/dev/sdf1」に強度(power)「1」で置換して下さい。と命令しているだけです。「wait」オプションを付けることも可能ですよ。

そして、このコマンドを実行すると何が起きるのかをV$ASM_OPERATIONビューで確認してみると、「RESYNC」処理が流れているではありませんか。そうなのですよ。「REBALANCE」処理じゃないのですねー。これは非常に驚き。この処理中にdstatコマンド等でI/O量を見て頂ければ分かるように、既存のASMディスクから読み込みが発生し、新規ASMディスク(この場合は/dev/sdf1)に対してだけ書込みが発生していることも見えると思います。そういう意味で、「RESYNC」=再同期処理と言えるでしょう。


10. ディスクの置換が完了した後、V$ASM_DISKGROUPビューを使用してASMディスク名と障害グループ名が元通りになっているのかを確認して下さい。

[grid@vm11204]$ sqlplus / as sysasm
SQL>
select GROUP_NUMBER, DISK_NUMBER, HEADER_STATUS, STATE, PATH,
       NAME, FAILGROUP, TOTAL_MB, FREE_MB, REPAIR_TIMER
  from V$ASM_DISK
 order by 1,2 ;

GROUP_NUM DISK_NUM HEADER_ST STATE    PATH      NAME      FAILGROUP TOTAL_MB FREE_MB REPAIR_TI
--------- -------- --------- -------- --------- --------- --------- -------- ------- ---------
        1        0 MEMBER    NORMAL   /dev/sdc1 DATA_0000 DATA_0000     2047     846         0
        1        1 MEMBER    NORMAL   /dev/sdd1 DATA_0001 DATA_0001     2047     851         0
        1        2 MEMBER    NORMAL   /dev/sde1 DATA_0002 DATA_0002     2047     846         0
        1        3 MEMBER    NORMAL   /dev/sdf1 DATA_0003 DATA_0003     2047     848         0
        2        0 MEMBER    NORMAL   /dev/sdg1 FRA_0000  FRA_0000      2047    1549         0
        2        1 MEMBER    NORMAL   /dev/sdh1 FRA_0001  FRA_0001      2047    1548         0
        2        2 MEMBER    NORMAL   /dev/sdi1 FRA_0002  FRA_0002      2047    1547         0
        2        3 MEMBER    NORMAL   /dev/sdj1 FRA_0003  FRA_0003      2047    1549         0

と言う事で、見事に障害ディスクを正常ディスクに置換出来た結果が上記の通りです。ASMディスク名(NAME列)と障害グループ名(FILEGROUP列)の表示が、模擬障害発生前と全く同じですよね。素晴らしい!パチパチパチ

 

さて、Oracle Database 12c Release 1から実装された、ASMディスク・グループ内のディスクの置換(Replace Diskコマンド)を体験して頂きましたが、如何でしたでしょうか?

この機能が実装されるまではASMディスクに障害が発生した際には、基本的に冗長性回復の為に残ったASMディスクでリバランスを実行した後に、障害ディスクを正常ディスクに物理的に交換します。その後、正常ディスクから作り出したデバイス・ファイルを新たなASMディスクとして追加して再度リバランスを実行することになる為、リバランスを2回実行しなければなりませんでした。しかし、このディスクの置換(Replace Diskコマンド)を使用すれば、リバランスは1回で済んでしまうのですよ。リバランス処理はその強度を調節できるものの、完全にディスクI/Oを排除できるものではありません。そいう言う意味では、リバランス処理そのものの回数を減らすことが出来る事は、非常にメリットが大きいと私は思いますので、少しでも皆様の参考になったのであれば嬉しい限りです。

今回も最後までお付き合い頂きましてありがとうございました。是非、感想や質問をお待ちしておりますね。次回以降もどうぞよろしくお願い致します。


ページトップへ戻る▲

 

しばちょう先生の試して納得!DBAへの道 indexページ▶▶