3 IM列ストアの有効化およびサイズ設定

IM列ストアを有効化または無効化するには、INMEMORY_SIZE初期化パラメータの値を指定します。

この章のトピックは、次のとおりです:

3.1 IM列ストアの有効化の概要

デフォルトでは、INMEMORY_SIZE初期化パラメータは0に設定されており、これは、IM列ストアが無効になっていることを意味します。

IM列ストアを有効にするには、データベース・インスタンスを起動する前に、初期化パラメータINMEMORY_SIZEをゼロ以外の値に設定します。ALTER SYSTEM文を使用することで、INMEMORY_SIZEサイズ設定を動的に増加させることができます。

デフォルトでは、表、表領域またはマテリアライズド・ビューに対してCREATEまたはALTER文のINMEMORY句を使用して、IM列ストアに移入するための候補を指定する必要があります。

関連項目:

3.2 IM列ストアの必須サイズの推定

要件に基づいてIM列ストアのサイズを推定してから、それらの要件に合わせてIM列ストアのサイズを変更します。圧縮の適用により、メモリー・サイズを削減できます。

IM列ストアで必要なメモリー量は、それに格納するデータベース・オブジェクト、および各オブジェクトに適用する圧縮方法によって異なります。INMEMORYオブジェクトに対する圧縮方法を選択する際には、使用可能なメモリー量に対するパフォーマンス利益のバランスを取ります。

  • メモリー・サイズを最大限に削減するには、FOR CAPACITY HIGHまたはFOR CAPACITY LOW圧縮方法を選択します。ただし、これらのオプションでは、データを解凍するための問合せ実行中にさらにCPUが必要となります。

  • 最善の問合せパフォーマンスを得るには、FOR QUERY HIGHまたはFOR QUERY LOW圧縮方法を選択します。ただし、これらのオプションでは、より多くのメモリーが消費されます。

IM列ストアのサイズ設定時には、次のガイドラインを考慮してください。

  1. IM列ストアに移入するすべてのオブジェクトについて、消費するメモリー量を推定します。

    Oracle Compression AdvisorではMEMCOMPRESS句を使用してユーザーが実感できる圧縮率を推定します。アドバイザはDBMS_COMPRESSIONインタフェースを使用します。

  2. 個々の容量を加算します。

    注意:

    移入後は、V$IM_SEGMENTSによって、ディスク上のそれらのオブジェクトの実サイズ、およびIM列ストアでのそれらのサイズが示されます。この情報を使用して、移入したオブジェクトの圧縮率を計算できます。ただし、オブジェクトがディスク上で圧縮された場合、この問合せでは正しい圧縮率は示されません。

  3. データベース・オブジェクトの拡大を考慮するため、およびDML操作後に行の最新版を格納するために、さらに領域を追加します。

    動的サイズ変更の最小容量は128 MBです。

関連項目:

3.3 データベースに対するIM列ストアの有効化

IM列ストアに表またはマテリアライズド・ビューを移入する前に、データベースのIM列ストアを有効にする必要があります。

前提条件

この作業では、次のことを想定しています。

  • データベースはオープンしています。

  • COMPATIBLE初期化パラメータが12.1.0以上に設定されています。

  • INMEMORY_SIZE初期化パラメータが0(デフォルト)に設定されています。

IM列ストアを有効にするには、次の手順を実行します。

  1. SQL*PlusまたはSQL Developerで、管理者権限を持つユーザーとしてデータベースにログインします。

  2. INMEMORY_SIZE初期化パラメータをゼロ以外の値に設定します。

    最小設定は、100Mです。

    ALTER SYSTEM文を使用してサーバー・パラメータ・ファイル(SPFILE)でこの初期化パラメータを設定する場合、SCOPE=SPFILEを指定する必要があります。

    たとえば、次の文では、インメモリー領域サイズを10 GBに設定します。

    ALTER SYSTEM SET INMEMORY_SIZE = 10G SCOPE=SPFILE;
  3. データベースを停止してから再度開きます。

    データベースを再度開いてSGA内のIM列ストアを初期化する必要があります。

  4. 必要な場合は、IM列ストアに現在割り当てられているメモリーの量を確認します。

    SHOW PARAMETER INMEMORY_SIZE

    注意:

    IM列ストアを有効にした後は、データベースを再度開くことなく、そのサイズを動的に増加できます。

例3-1 IM列ストアの有効化

INMEMORY_SIZE初期化パラメータが0に設定されていることが前提です。次のSQL*Plusの例では、INMEMORY_SIZEを10 GBに設定し、その変更内容が有効になるよう、データベース・インスタンスを停止してからデータベースを再度開きます。

SQL> SHOW PARAMETER INMEMORY_SIZE

NAME                                 TYPE        VALUE
------------------------------------ ----------- -----
inmemory_size                        big integer 0

SQL> ALTER SYSTEM SET INMEMORY_SIZE=10G SCOPE=SPFILE;

System altered.

SQL> SHUTDOWN IMMEDIATE
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> STARTUP
ORACLE instance started.

Total System Global Area   11525947392 bytes
Fixed Size                     8213456 bytes
Variable Size                754977840 bytes
Database Buffers              16777216 bytes
Redo Buffers                   8560640 bytes
In-Memory Area             10737418240 bytes
Database mounted.
Database opened.

SQL> SHOW PARAMETER INMEMORY_SIZE

NAME                                 TYPE        VALUE
------------------------------------ ----------- -----
inmemory_size                        big integer 10G

関連項目:

3.4 IM列ストアのサイズの動的な増加

IM列ストアにより多くのメモリーが必要な場合は、そのサイズを動的に増加できます。

IM列ストアのサイズを動的に減少することはできません。INMEMORY_SIZEを現在の設定よりも小さい値に設定する場合は、ALTER SYSTEM文にSCOPE=SPFILEを指定する必要があります。SCOPE=SPFILEを指定してこのパラメータを設定した場合は、変更を有効にするためにデータベースを再起動する必要があります。

前提条件

IM列ストアのサイズを動的に増加させるには、次の前提条件を満たしている必要があります。

  • 列ストアが有効になっている必要があります。

  • 互換性レベルが12.2.0以上である必要があります。

  • データベース・インスタンスをSPFILEで起動する必要があります。

  • IM列ストアの新しいサイズが、現在のINMEMORY_SIZE設定よりも128 MB以上大きい必要があります。

  1. SQL*PlusまたはSQL Developerで、管理者権限でデータベースにログインします。
  2. 必要な場合は、IM列ストアに現在割り当てられているメモリーの量を確認します。
    SHOW PARAMETER INMEMORY_SIZE
    
  3. SCOPE=BOTHまたはSCOPE=MEMORYが指定されたALTER SYSTEM文で、INMEMORY_SIZE初期化パラメータを現在のIM列ストアのサイズよりも大きい値に設定します。

    このパラメータを動的に設定する場合は、現在の値よりも高い値に設定する必要があり、IM列ストアのサイズを新しい値に動的に増加するには、SGAに使用可能な十分なメモリーが存在する必要があります。

    たとえば、次の文は、INMEMORY_SIZE500Mに動的に設定します。
    ALTER SYSTEM SET INMEMORY_SIZE = 500M SCOPE=BOTH;

関連項目:

3.5 IM列ストアの無効化

INMEMORY_SIZE初期化パラメータをゼロに設定してからデータベースを再度開くことで、IM列ストアを無効にできます。

前提

この作業では、開いているデータベースでIM列ストアが有効になっていることを想定しています。

IM列ストアを無効にするには、次の手順を実行します。

  1. サーバー・パラメータ・ファイル(SPFILE)でINMEMORY_SIZE初期化パラメータを0に設定します。

  2. データベースを停止します。

  3. データベース・インスタンスを起動してから、データベースを開きます。

関連項目:

INMEMORY_SIZE初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。