Flex DiskGroup 使ってみたよ!
この記事は 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!
概要図は以下のような感じです↓
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上で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さん のアドカレ!( ˙꒳˙ᐢ )