データベース管理システムの運用でトラブルが発生したらどうするか。データベースサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、Oracle Database 12c(12.1)で採用されたライセンス形態「Standard Edition 2(以下、SE2)」の機能制限がどのように行われるのかを検証します。
2015年9月にリリースされた「Oracle Database 12c(12.1.0.2)」以降のStandard Editionは、これまでのライセンス体系だったStandard Edition One(SE1)およびStandard Edition(SE)ではなく、新たなライセンス体系である「Standard Edition 2(SE2)」として提供されます。
SE2への変更は、これまでのSE1/SEにはなかった以下の「CPUスレッド数の制限」が特に大きな変更内容になります。
特に2番目の「インスタンス当たり、最大で16CPUスレッドまでしか同時に使えない」制限について、アシストのサポートセンターへ以下のような問い合わせが多く寄せられました。
今回はこれらの疑問を解消すべく、SE2のCPUスレッド数に関わる部分を確かめてみましょう。
検証環境は以下の通りです。
下記のように「1スレッドを占有する処理」を実行します。このセッションを1つずつ増やして、制限内となる16セッション目と、制限を超えた17セッション目以降でどのように変わるのかを確認します。
declare foo number; begin while (1=1) LOOP foo := 1+1; end loop; end; /
まず「mpstat」を確認しましょう(画像1)。すると、16セッションまで(画像1の左)はCPUを100%使っています。対して17セッションを超えた場合(画像1の右)には、何かしらの制限が掛かり、CPUが100%で使われなくなりました。
このセッションがどのような状態になっているのかを「V$SESSION」で確認してみます。すると、「resmgr: cpu quantum」の待機イベントで「待機」が発生していることが分かりました(画像2)。
resmgr: cpu quantumは、「Oracle Databaseリファレンス 12cリリース1(12.1)」によると、「セッションは、CPU数を割り当てるために待機しています。このイベントは、Resource Managerが使用可能で、CPU消費量を抑えている場合に発生します。この待機イベントの発生を減らすには、セッションのカレント・コンシューマ・グループに割り当てるCPUを増やします」とあります。セッションがCPUリソースを割り当てるために待機している、つまり割り当てられるCPUリソースがないときに発生します。
Copyright © ITmedia, Inc. All Rights Reserved.