Database Support Blog

Database Support Blog>【Oracle SE2】CPUスレッド数制限の動作検証結果~その3~

  • Oracle Database
2016.05.17

【Oracle SE2】CPUスレッド数制限の動作検証結果~その3~

SE2 RAC環境の片ノードのインスタンスが停止したらCPUスレッド数制限はどうなる?

【Oracle SE2】CPUスレッド数制限の動作検証結果~その2~ では同一サーバ内に複数のデータベースを構築したケースで、どのようにスレッド数制限が行われるか確認をしました。SE2のスレッド数制限の最終回は「Real Application Clusters(以下、RAC)環境でどのように制御されるか」を検証しましたので、その結果を紹介します。

SE2 RAC環境の片ノードのインスタンスが停止したらCPUスレッド数制限はどうなる?

Oracle JapanのFAQ" Oracle Database Standard Edition 2で制限される「CPUスレッド」とは何ですか? "には、スレッド数制限はデータベース単位で行われ、各データベースごとに使用するCPUスレッドが16(RACの場合は8)までに制限されると記載されています。

今回はこの8CPUスレッド数の制限に着目します。片方のインスタンスが停止した場合に、起動しているノードの制限が16CPUスレッドに変わる/8CPUスレッドのまま、どちらになるのかを以下の環境を使って検証を行います。

IBM Power System
POWER8 3.72GHz E850 16Core(Hyper-Treading有効)
480GBメモリ
Storwize V3700 10Krpm 900GB SAS HDD * 12
AIX 7.1
Oracle Grid Infrastructure 12.1.0.2
Oracle Database 12.1.0.2 SE2(RAC環境)

【検証 1】両ノードのインスタンスが起動した状態で、
9セッションでCPUを使用する処理を実行すると?

まずはRAC環境の場合は8CPUスレッド数で制限されることを確認します。CPUを使用する処理を行うセッションを増やしていくと、両ノードとも8CPUスレッドの制限を超えたところで「resmgr:cpu quantum」の待機イベントが発生しました。これは期待したとおりの動作です。

gv$session(制限内:7セッションがCPUを使用)

▲gv$session(制限内:7セッションがCPUを使用)

gv$session(制限超え:9セッションがCPUを使用)

▲gv$session(制限超え:9セッションがCPUを使用)

【検証 2】片ノードのインスタンスを停止した状態で、
9セッションでCPUを使用する処理を実行すると?

ここからが本番です。片ノードのインスタンスを停止した状態で起動しているノードにCPUを使用するセッションを増やしていきます。8CPUスレッド、16CPUスレッドどちらの動作となるのでしょうか。

はじめに7セッション。当然制限はかかりません。

gv$session(片ノードが停止した状態で7セッションがCPUを使用)

▲gv$session(片ノードが停止した状態で7セッションがCPUを使用)

もう2セッション追加して合計9セッション。結果は…。

gv$session(片ノードが停止した状態で9セッションがCPUを使用)

▲gv$session(片ノードが停止した状態で9セッションがCPUを使用)

うーん。実は16CPUスレッドに変わってくれることを期待していたのですが、制限は8CPUスレッドのままでした。

まとめ:縮退運転時のCPUスレッド数制限に注意

SE2のCPUスレッド制限は起動インスタンス数に関係なく、RAC環境であるかどうかがポイントのようです。制限が動的に変わらないところを見ると初期化パラメータの CLUSTER_DATABASE あたりを考慮しているのでしょうか。この記事を書いている時には検証環境を返却してしまっており、確認できませんでした。

RAC環境を構築する際には片ノードのインスタンスが意図せず停止した際、生存ノードに処理が集中してもサービスの提供が継続できるようにハードウェアリソースやデータベースの初期化パラメータなどを考慮します。SE2でRAC環境の利用を検討する場合には、シングルインスタンス以上にCPUスレッド数制限を意識する必要がありそうですね。

3回にわたってお送りした【Oracle SE2】CPUスレッド数制限の動作検証結果、いかがでしたでしょうか。ご利用環境の移行を検討するのにあたり、少しでもお役に立てば幸いです。

筆者情報

大野 高志

サービス事業部 サポートセンター

2007年にアシスト入社後、Oracle Databaseのサポート業務に従事。現在はサポートの傍ら、未解決のトラブルを一つでも多く減らせるよう、サポートセンターに蓄積されているノウハウを社内外に伝える活動を行っている。

関連している記事

  • Oracle Database
2016.09.21

再現ケースを簡単に作成!SQLテスト・ケース・ビルダーの使用方法

再現ケースに必要な情報を一括で容易に取得できる「SQLテスト・ケース・ビルダー」の使用方法を紹介します。

  • Oracle Database
2016.08.31

DataGuard構築後に使うSQLコマンドまとめ(逆引き)

DataGuard構築後に使うSQLコマンドを逆引きでまとめました。DataGuardを構築した方、これから構築する方は押さえておきましょう。トラブル発生時に焦らないように。

  • Oracle Database
2016.08.12

仮想列関連エラーORA-54032/ORA-54033の原因と対処方法

仮想列に関するエラー(ORA-54032、ORA-54033等)が発生した際の対処方法をご紹介します。Oracle Database 12cでは仮想列が自動で作成されるため、このようなエラーにつながるケースがあります。

カテゴリ一覧

アシストサポートセンターのご紹介 Oracle Database研修

ページの先頭へ戻る