ASMのきもち

DBとAnsibleが気になって仕方ない人のブログ

Flex DiskGroup 使ってみたよ!

f:id:tomomo1015:20191216042525p:plain

この記事は JPOUG Advent Calendar 2019 16日目の記事です(꜆꜄•ω•)꜆꜄꜆

さてさて、昨日の記事は multilayerさんの「僕がAWRレポートを好きな理由(DBメモリ編)」でしたね。
非常に勉強になりました。私もAWRには日頃お世話になっていますが、いつもDB待機イベントばかりみていて、メモリのところはアプリの性能に問題ない&メモリ使用率が上がっていなければスルーしていました。
ちょうど明日、仕事で見ないといけないので参考にさせていただこうと思います。

JPOUG アドカレ2回目になります。前回で結構エネルギー消費してしまったので、すいませんだいぶ薄い内容になりますがご容赦ください。

本日のお題はFlex DiskGroup 使ってみたよ」です( ᐢ˙꒳​˙ᐢ )
すいません!「Flex ASM」ではなく「Flex Diskgroup」です

Flex DiskGroupとは?

  • Oracle GridInfrastracture 12.2から追加された新機能
  • 従来存在したDIsk Groupの属性 Nomal/High/External に加えて「Flex」が登場!
  • Flex DiskGroupの中にQuota/File Group を作成し、File Group 毎に「Nomal/High」を設定可能
  • CDB/PDB環境前提、非CDB/PDB環境、どちらでも使えます
  • 詳しくは管理者ガイドへGO!

概要図は以下のような感じです↓

f:id:tomomo1015:20191216050019p:plain


Flex DiskGroup 作る

使用に関し、以下前提条件にご注意ください。

  • 上記リンク先のマニュアルをよく読んでおいてください。(そりゃそうだ)
  • Oracle Grid Infrastructure 12.2 以上の環境でないと使用できません。
  • ASMのディスクグループ属性 COMPATIBLE.ASM と COMPATIBLE.RDBMS が12.2以上に設定されている必要があります。12.2以上でインストールしても、この設定値はデフォルト11.2とかになってることがありましたので、ご確認下さい。
  • Nomal/High → Flexに属性変換は出来ますが、Flex→Nomal/Highは出来ません。一方通行なのでご注意ください

ちなみに、asmcmdで作る場合は、ざっくりこんな感じです。環境は19cです。

Quota Groupの作り方

[grid@testdb ~]$ asmcmd
ASMCMD> lsqg -G FLEX1
Quotagroup_Num  Quotagroup_Name  Incarnation  Used_Quota_MB  Quota_Limit_MB  
1               GENERIC          1            140824         0   
ASMCMD> mkqg -G FLEX1 TESTDB
Diskgroup altered.
ASMCMD> lsqg -G FLEX1
[Fri Sep 27 15:48:29.164 2019] Quotagroup_Num  Quotagroup_Name  Incarnation  Used_Quota_MB  Quota_Limit_MB  
1               GENERIC          1            140824         0               
 2               TESTDB           1            0              0               

File Groupの作り方

ASMCMD> lsfg -G FLEX1
File Group         Disk Group  Quota Group  Used Quota MB  Client Name  Client Type  
DEFAULT_FILEGROUP  FLEX1       GENERIC      0                                        
TESTDB             FLEX1       GENERIC      140824         TESTDB       DATABASE     
ASMCMD> mvfg -G FLEX1 --filegroup TESTDB
Diskgroup altered.
ASMCMD> lsfg -G FLEX1
File Group         Disk Group  Quota Group  Used Quota MB  Client Name  Client Type  
DEFAULT_FILEGROUP  FLEX1       GENERIC      0                                        
TESTDB             FLEX1       TESTDB       140824         TESTDB       DATABASE     
ASMCMD> chfg '<filegroup name="TESTDB" dg="FLEX1"> <p name="redundancy" value="high"/> </filegroup>'

ご確認。

ASMCMD> lsfg -G FLEX1 --filegroup TESTDB
 File Group  Disk Group  Property           Value       File Type                  
 TESTDB      FLEX1       PRIORITY           MEDIUM                                 
 TESTDB      FLEX1       COMPATIBLE.CLIENT  19.0.0.0.0                             
 TESTDB      FLEX1       REDUNDANCY         HIGH        CONTROLFILE                
 TESTDB      FLEX1       STRIPING           FINE        CONTROLFILE                
 TESTDB      FLEX1       REDUNDANCY         HIGH        DATAFILE                   
 TESTDB      FLEX1       STRIPING           COARSE      DATAFILE                   
 TESTDB      FLEX1       REDUNDANCY         HIGH        ONLINELOG                  
 TESTDB      FLEX1       STRIPING           COARSE      ONLINELOG                  
 TESTDB      FLEX1       REDUNDANCY         HIGH        ARCHIVELOG                 
 TESTDB      FLEX1       STRIPING           COARSE      ARCHIVELOG                 
 TESTDB      FLEX1       REDUNDANCY         HIGH        TEMPFILE                   
 TESTDB      FLEX1       STRIPING           COARSE      TEMPFILE                   
 TESTDB      FLEX1       REDUNDANCY         HIGH        BACKUPSET                  
 TESTDB      FLEX1       STRIPING           COARSE      BACKUPSET                  
 TESTDB      FLEX1       REDUNDANCY         HIGH        PARAMETERFILE              
 TESTDB      FLEX1       STRIPING           COARSE      PARAMETERFILE              
 TESTDB      FLEX1       REDUNDANCY         HIGH        DATAGUARDCONFIG            
 TESTDB      FLEX1       STRIPING           COARSE      DATAGUARDCONFIG            
 TESTDB      FLEX1       REDUNDANCY         HIGH        CHANGETRACKING             
 TESTDB      FLEX1       STRIPING           COARSE      CHANGETRACKING             
 TESTDB      FLEX1       REDUNDANCY         HIGH        FLASHBACK                  
 TESTDB      FLEX1       STRIPING           COARSE      FLASHBACK                  
 TESTDB      FLEX1       REDUNDANCY         HIGH        DUMPSET      

メリデメ

メリット
  • 複数の部署やシステムが使うDB基盤に便利。例えば、初期構築の時にあらかじめ使用できるデータ領域を全部Flex Disk Groupに割り当てておき、PDB毎にNomal/Highの File Group をFlex領域に作成することができます
デメリット
  • DB単位でしか設定できない。(データファイル毎に設定できたりしたらもう少し利便性が上がるのでは?)
  • Flex上でHighにしても Redundancy は 1。つまり、DISK障害に対する挙動はNomalと変わらない。

障害グループが5つ以上の場合、許容されるディスク障害は2つです。障害グループが3つまたは4つの場合、許容されるディスク障害は1つです。
docs.oracle.com

デメリットの最後が、猛烈に痛かったです…Flexの中のFileGroup をHighにしても、Storageの障害グループ3つに対しディスク障害1しか対応できません。
例えば、ExadataのEighth/Quarterで Flex Diskgroup にデータ領域を持つと、Storage Server の1台障害は耐えられますが、2台障害が発生すると、DBは停止することになります。
(実は最初、この特性を見逃していて 障害試験で Redundancy を 1 状態にしたら、もれなくDBがお亡くなりに…)

二重障害と言えばそうですが、仮に1台がHW障害などで停止していた場合、もう1台が何かあると、DBダウン=サービス停止、となる場合はかなりのリスクになります。
こうゆう場合は、Flex Diskgroupを採用するメリットは無いので、お勧めできないなと思います。

個人的な感想

今後発展予定の機能なのかなーと思いました。
PDBが大量にあるシステムならいいかなと思いつつも、 Redundancyのところが辛かったです。
今後のUpdateが楽しみ、ということで⸜( •⌄• )⸝



明日は kjmtgmさん のアドカレ!( ˙꒳​˙ᐢ )