SSJ Tech Lab - Oracle Database テクニカルラボ

Database In-MemoryのOUT OF MEMORYを監視する(V$INMEMORY_AREA)

対応バージョン

Oracle Database 12.1.0.2

2016-06-23記事公開

Database In-Memoryのデータのポピュレーションについて、メモリ上に乗り切らない場合の動作について説明します。(ポピュレーションとは、物理ディスクからインメモリ用のメモリ領域にデータを移入する処理です。)

データの準備

メモリ領域の準備

インメモリに入れるデータの準備を行います。
初期化パラメータにて、100MBのメモリ領域を指定しています。

テストユーザの準備

TESTという名前のユーザを作成し、INMEMというテーブルをインメモリ化することでテストを行います。データは適当にDBA_TABELSのデータを増幅しています。

データのインメモリ化確認

作成後の状態です。データが少ないためすぐにポピュレーションが完了し、メモリ上にデータが移入されていることが確認できます。

データの追加時の変化の確認

データの追加を行なった際の変化を確認します。

2分毎にトリクル再移入(自動的に差分のポピュレーションを行う処理)を行っているため、2分間待ちます。

DBMS_INMEMORY.POPULATEを実行し、手動によるポピュレーション処理を実施します。

メモリ設定を超えたデータが投入された場合の確認

さらにデータを追加し、メモリサイズ以上のデータを投入します。

INMEMORY化を一度解除し、再度メモリに載せます。これにより、OUT OF MEMORYのステータスとなることを確認します。

OUT OF MEMORY となることを確認できました。こちらの検証から、新規追加時でないとOUT OF MEMORYのステータスとならないことが確認できます。
また、ポピュレーションが終わらない場合はMBYTES_NOT_POPULATEDの値がいつまでも残ったままとなることが確認できました。