16 永続メモリー・データベースの使用

データベースを永続メモリー(PMEM)に直接マップすることにより、パフォーマンスが大幅に向上します。

16.1 永続メモリー・データベースについて

永続メモリー・データベース機能には、直接マッピングされたバッファ・キャッシュと永続メモリー・ファイルストア(PMEMファイルストア)が組み込まれています。

16.1.1 永続メモリー・データベースとは

永続メモリー・データベース機能を使用すると、データベース・ファイルを不揮発性メモリーに配置できます。この機能では、PMEMファイルストアで単一インスタンスのOracle Databaseインスタンスがサポートされます。

16.1.2 Oracle永続メモリー・ファイルストアとは

PMEMファイルストアは、Oracle Databaseデータ・ブロックのアトミックな更新をサポートするポインタ切替えPMEMファイル・システムです。PMEMファイルストアは、永続メモリー・データベースに使用される基礎的なファイル・ストアです。PMEMファイルストアには、永続メモリー内で直接Oracleデータベースをマップしてしアクセスするための外部インタフェースが用意されています。

PMEMファイルストアのOracleデータベースの管理は、ネイティブ・ファイル・システムのOracleデータベースの管理と同様です。PMEMファイルストアは、Filesystem in Userspace (FUSE)プロトコルを実装しているため、Oracle DBAは通常のファイル・レベルのメンテナンスを実行できます。FUSEでは、Oracle Databaseソフトウェアの所有者などの非特権(非root)ユーザーが、ファイルシステムおよびそれらに含まれるディレクトリやファイルの作成および管理を実行できます。

通常のファイル・システムはバッキング・ストアとしてRAWストレージを使用しますが、PMEMファイルストアはPMEM DAXファイル・システムのネイティブ・オペレーティング・システム・ファイルからストレージを取得します。このファイルはバッキング・ファイルと呼ばれ、オペレーティング・システムのファイルとして認識できます。PMEMファイルストアはバッキング・ファイル内でストレージを分割し、それをローカル・ファイル・システムとして提示します。

PMEMファイルストアを作成してマウントすると、ユーザー指定のマウント・ポイントの下にローカル・ファイル・システムが表示されます。このローカル・ファイル・システムでは、ディレクトリと一般的なオペレーティング・システムのコマンド(lscpなど)がサポートされます。このローカル・ファイル・システムがPMEMファイルストアであり、Oracle Databaseファイルの保存に使用できるものです。PMEMファイルストアは、Oracle Databaseインスタンスが起動されているときのみ認識できる点に注意してください。

PMEMファイルストアは、データベース・ファイルと制御ファイルに使用できます。パフォーマンス上の理由から、REDOログ・ファイルは、EXT4/XFSなどのDAX対応ファイルシステムの独立したファイルとして保存することをお薦めします。トレース・ファイルや監査ファイルなどの管理ファイルは、PMEMファイル・ストアに保存できません。サーバー・パラメータ・ファイル(SPFILE)は、PMEMファイルストアに保存できません。これは、PMEMファイルストアの構成パラメータがSPFILEで指定されることがあるためです。

16.1.3 直接マップされたバッファ・キャッシュとは

直接マップされたバッファ・キャッシュは、従来のDRAMバッファ・キャッシュをバイパスして、永続メモリーのデータを直接読み取るためのOracle Databaseの機能です。さらに、このメカニズムでは、データ・アクセスを追跡して、アクセスの高速化のために頻繁に読み取られるデータと更新用のデータをPMEMからDRAMバッファ・キャッシュに自動的に移動します。直接マップされたバッファ・キャッシュ・メカニズムは、データファイルがPMEMファイルストアに配置されているときに自動的に起動されます。

16.1.4 永続メモリー・データベースを使用する利点

Oracle永続メモリー・データベースでは、永続メモリーにデータベース・ファイルを配置できます。これにより、Oracleは、このテクノロジに伴われるパフォーマンス強化機能を活用できるようになります。次に示す、永続メモリー・データベースを使用する利点について考えてみてください。
  • PMEMファイルストは、完全なOracleデータベース・ブロックへのアトミックな書込みを実現します。これにより、部分的に書き込まれたブロックによる停電後のメディア・リカバリの必要性がなくなります。
  • 永続メモリー・データベースでは、PMEMストレージに対するI/Oをメモリー・コピーによって実行します。これは、従来のオペレーティング・システム・コールによるI/Oの実行よりも大幅に高速です。
  • データベース問合せは、Oracle Databaseサーバーが永続メモリーからのデータに直接アクセスするため、ストレージからの従来の読取りとメモリー・コピーをバッファ・キャッシュに保存します。

16.2 永続メモリー・データベースの初期化パラメータの設定

初期化パラメータのPMEM_FILESTOREは、Oracle Databaseインスタンスの起動時に自動的にマウントされるPMEMファイルストアを指定するために使用できます。

16.2.1 永続メモリー・データベースの初期化パラメータ

PMEM_FILESTORE初期化パラメータは、Oracle Databaseインスタンスが起動時に自動的にマウントするPMEMファイルストアを指定します。パラメータは、順序付けられた文字列のペアに設定されます。パラメータ値リストの最初の文字列は、PMEMファイルストアがマウントされるディレクトリです。2番目の文字列は、バッキング・ファイルです。

PMEMファイルストアのバッキング・ファイルは、オペレーティング・システムのファイル・システム階層内のファイルとして認識できます。通常のファイル・システムはバッキング・ストアとしてRAWストレージを使用しますが、PMEMファイルストアはPMEM DAXファイル・システムのネイティブ・オペレーティング・システム・ファイルからストレージを取得します。Linuxでは、PMEMファイルストアのバッキング・ファイルが、-o daxオプションを使用してマウントしたXFSまたはext4ファイル・システムに配置されます。

16.3 Oracle DatabaseのPMEMファイルストアの作成

永続メモリー・データベース機能を使用する場合は、Oracle Databaseファイル用のPMEMファイルストアを作成します。

16.3.1 データベース作成前のPMEMファイルストアの作成

次のステップを実行して、Oracleデータベース用のPMEMファイルストアを作成します。

  1. Oracle DatabaseインスタンスをNOMOUNTモードで起動します。
  2. PMEMファイルストアを作成するためにCREATE PMEM FILESTOREコマンドを実行して、次の項目を指定します。
    • ファイル・ストアのマウント・ポイント。最後のサブディレクトリ名は、PMEMファイルストア名と同じにする必要があります。
    • DAXモードでマウントされたネイティブXFSまたはext4ファイルシステムのバッキング・ファイル。このバッキング・ファイルは、ファイルストア内に作成されるすべてのファイルを保持するためにPMEMファイルストアによって使用されます。
    • ブロック・サイズ。通常、データベース・データファイルのデフォルトのブロック・サイズと同じです。
      次に例を示します。
      CREATE PMEM FILESTORE db1_pmemfs
      MOUNTPOINT '/u1/db/db1_pmemfs'
      BACKINGFILE '/u1/db_storage/db1'
      SIZE 2T
      BLOCK SIZE 8K
      AUTOEXTEND ON NEXT 10G
      MAXSIZE 3T;

      PMEMファイルストアは、作成後に自動的にマウントされます。PMEMファイルストアは、ネイティブ・ファイル・システムと同様に、指定されたマウント・ポイントの下に表示されます。

  3. PMEMファイルストアがインスタンスの起動時にマウントされるように構成します。

    SPFILEを使用してデータベース・インスタンスを起動した場合は、SPFILEにPMEM_FILESTORE初期化パラメータが追加されます。このパラメータを指定すると、データベース・インスタンスの起動時にPMEMファイルストアが自動的にマウントされます。CREATE PMEM FILESTOREコマンドの実行後、SPFILEには、PMEM_FILESTORE=('/u1/db/db1_pmemfs', '/u1/db_storage/db1')というエントリが含まれるようになります。パラメータ値リストの最初の文字列は、PMEMファイルストアがマウントされるディレクトリです。2番目の文字列は、バッキング・ファイルです。

    SPFILEを使用してデータベース・インスタンスを起動していない場合は、インスタンスの起動時にPMEMファイルストアがマウントされるように、PMEM_FILESTORE初期化パラメータを手動で追加する必要があります。または、ALTER PMEM FILESTORE … MOUNTコマンドを使用して、PMEMファイルストアを手動でマウントする必要があります。

16.3.2 PMEMファイルストアでのOracle Databaseの作成

PMEMファイルストアを作成すると、それをネイティブ・ファイル・システムとして使用して、Oracle Databaseを作成できます。データベースは、PMEMファイルストアの作成時に指定したマウント・ポイントの下に作成できます。詳細は、Oracle Multitenant管理者ガイドを参照してください。

16.3.3 Oracle DatabaseのPMEMファイルストアへの移行

PMEMファイルストアの作成後、次のステップを実行して既存のOracle DatabaseをPMEMファイルストアに移行するか、表領域を選択して移行します。

  1. RMAN RESTOREコマンドまたはオペレーティング・システムのコマンドを使用して、データベース・ファイルをコピーします。
  2. 必要に応じて、新しいオンラインREDOログ・ファイルを作成してから既存のREDOログ・ファイルを削除することで、REDOログ・ファイルのブロック・サイズを変更します。

ALTER DATABASEコマンドにMOVE DATAFILE句を使用して、オンライン・データファイルをPMEMファイルストアに移動することもできます。

16.4 PMEMファイルストアの管理

PMEMファイルストアに関する情報を表示して、そのPMEMファイルストアに様々な操作(ファイルストアのマウントとディスマウント、属性の変更、削除など)を実行できます。

16.4.1 PMEMファイルストアに関する情報の表示

V$PMEM_FILESTOREには、PMEMファイルストアに関する情報が提示されます。

V$PMEM_FILESTOREを問い合せると、PMEMファイルストアに関する次のような情報を表示できます。

  • PMEMファイルストアのマウント・ポイントのディレクトリ・パス

  • PMEMファイルストアのバッキング・ファイルのファイル・パス

  • PMEMファイルストアのブロック・サイズ(バイト単位)

  • PMEMファイルストアの現在のサイズ(バイト単位)

  • 自動拡張可能になっているかどうかと、その自動拡張の構成に関する詳細

  • 領域使用量(空き領域および使用領域)

16.4.2 PMEMファイルストアのマウント

データベース・インスタンスの起動時にPMEMファイルストアを自動的にマウントするPMEM_FILESTORE初期化パラメータを設定しなかった場合は、PMEMファイルストアを手動でマウントする必要があります。

次の文は、PMEMファイルストアをマウントするために使用します。

  • ALTER PMEM FILESTORE filestore_name MOUNT

初期化パラメータ・ファイルにPMEM_FILESTOREパラメータが含まれていない場合、このコマンドを実行するときに、MOUNTPOINT句とBACKINGFILE句をFORCEキーワードとともに含める必要があります。

MOUNTPOINT句とBACKINGFILE句をFORCEキーワードとともに含めると、初期化パラメータ・ファイルで指定したものとは別のファイル・パスを指定することもできます。データベースの起動にサーバー・パラメータ・ファイル(SPFILE)を使用していた場合は、ALTER PMEM FILESTORE MOUNTコマンドで指定したファイル・パスで更新されます。

このコマンドを実行する場合は、SYSDBA権限を持つユーザーとしてルート・コンテナ(CDB$ROOT)に接続している必要があります。

16.4.3 PMEMファイルストアのディスマウント

PMEMファイル・ストアの属性を変更する場合は、まずファイルストアをディスマウントする必要があります。

次の文は、PMEMファイルストアをディスマウントするために使用します。

  • ALTER PMEM FILESTORE filestore_name DISMOUNT

このコマンドを実行する場合は、SYSDBA権限を持つユーザーとしてルート・コンテナ(CDB$ROOT)に接続している必要があります。

16.4.4 PMEMファイルストアの属性の変更

PMEMファイル・ストアの属性(マウント・ポイント、バッキング・ファイル、サイズなど)は変更できます。

次の文は、PMEMファイルストアの属性を変更するために使用します。

  • ALTER PMEM FILESTORE

マウント・ポイントまたはバッキング・ファイルを変更する場合は、最初にファイルストアをディスマウントする必要があります。「PMEMファイルストアのディスマウント」を参照してください。

ファイルストアのブロック・サイズは変更できません。

このコマンドを実行する場合は、SYSDBA権限を持つユーザーとしてルート・コンテナ(CDB$ROOT)に接続している必要があります。

16.4.5 PMEMファイルストアの削除

PMEMファイルストアは、内容が空であるかどうかにかかわらず削除できます。

次の文は、PMEMファイルストアを削除するために使用します。

  • DROP PMEM FILESTORE

INCLUDING CONTENTSを指定すると、PMEMファイルストアのすべてのファイルが削除されます。すぐにファイルストアを削除するには、INCLUDING CONTENTSFORCEキーワードを使用してください。EXCLUDING CONTENTSを指定すると、PMEMファイルストアは空の場合にのみ削除されます。

データベース・インスタンスがSPFILEで起動された場合は、DROP PMEM FILESTOREが実行されるとSPFILEが更新されます。