16 永続メモリー・データベースの使用
データベースを永続メモリー(PMEM)に直接マップすることにより、パフォーマンスが大幅に向上します。
- 永続メモリー・データベースについて
永続メモリー・データベース機能には、直接マッピングされたバッファ・キャッシュと永続メモリー・ファイルストア(PMEMファイルストア)が組み込まれています。 - 永続メモリー・データベースの初期化パラメータの設定
初期化パラメータのPMEM_FILESTORE
は、Oracle Databaseインスタンスの起動時に自動的にマウントされるPMEMファイルストアを指定するために使用できます。 - Oracle DatabaseのPMEMファイルストアの作成
永続メモリー・データベース機能を使用する場合は、Oracle Databaseファイル用のPMEMファイルストアを作成します。 - PMEMファイルストアの管理
PMEMファイルストアに関する情報を表示して、そのPMEMファイルストアに様々な操作(ファイルストアのマウントとディスマウント、属性の変更、削除など)を実行できます。
親トピック: Oracle Databaseの構造と記憶域
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ファイルストアを作成してマウントすると、ユーザー指定のマウント・ポイントの下にローカル・ファイル・システムが表示されます。このローカル・ファイル・システムでは、ディレクトリと一般的なオペレーティング・システムのコマンド(ls
やcp
など)がサポートされます。このローカル・ファイル・システムが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 永続メモリー・データベースを使用する利点
- 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ファイルストアを作成します。
- Oracle Databaseインスタンスを
NOMOUNT
モードで起動します。 - 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ファイルストアは、ネイティブ・ファイル・システムと同様に、指定されたマウント・ポイントの下に表示されます。
- 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ファイルストアに移行するか、表領域を選択して移行します。
- RMAN
RESTORE
コマンドまたはオペレーティング・システムのコマンドを使用して、データベース・ファイルをコピーします。 - 必要に応じて、新しいオンラインREDOログ・ファイルを作成してから既存のREDOログ・ファイルを削除することで、REDOログ・ファイルのブロック・サイズを変更します。
ALTER DATABASE
コマンドにMOVE DATAFILE
句を使用して、オンライン・データファイルをPMEMファイルストアに移動することもできます。
16.4 PMEMファイルストアの管理
PMEMファイルストアに関する情報を表示して、そのPMEMファイルストアに様々な操作(ファイルストアのマウントとディスマウント、属性の変更、削除など)を実行できます。
- PMEMファイルストアに関する情報の表示
V$PMEM_FILESTORE
には、PMEMファイルストアに関する情報が提示されます。 - PMEMファイルストアのマウント
データベース・インスタンスの起動時にPMEMファイルストアを自動的にマウントするPMEM_FILESTORE
初期化パラメータを設定しなかった場合は、PMEMファイルストアを手動でマウントする必要があります。 - PMEMファイルストアのディスマウント
PMEMファイルストアの属性を変更する場合は、まず、そのファイルストアをディスマウントする必要があります。 - PMEMファイル・ストアの属性の変更
PMEMファイル・ストアの属性(マウント・ポイント、バッキング・ファイル、サイズなど)は変更できます。 - PMEMファイルストアの削除
PMEMファイルストアは、内容が空であるかどうかにかかわらず削除できます。
親トピック: 永続メモリー・データベースの使用
16.4.1 PMEMファイルストアに関する情報の表示
V$PMEM_FILESTORE
には、PMEMファイルストアに関する情報が提示されます。
V$PMEM_FILESTORE
を問い合せると、PMEMファイルストアに関する次のような情報を表示できます。
-
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
)に接続している必要があります。
親トピック: PMEMファイルストアの管理
16.4.3 PMEMファイルストアのディスマウント
PMEMファイル・ストアの属性を変更する場合は、まずファイルストアをディスマウントする必要があります。
次の文は、PMEMファイルストアをディスマウントするために使用します。
-
ALTER
PMEM
FILESTORE
filestore_name
DISMOUNT
このコマンドを実行する場合は、SYSDBA
権限を持つユーザーとしてルート・コンテナ(CDB$ROOT
)に接続している必要があります。
親トピック: PMEMファイルストアの管理
16.4.4 PMEMファイルストアの属性の変更
PMEMファイル・ストアの属性(マウント・ポイント、バッキング・ファイル、サイズなど)は変更できます。
次の文は、PMEMファイルストアの属性を変更するために使用します。
-
ALTER
PMEM
FILESTORE
マウント・ポイントまたはバッキング・ファイルを変更する場合は、最初にファイルストアをディスマウントする必要があります。「PMEMファイルストアのディスマウント」を参照してください。
ファイルストアのブロック・サイズは変更できません。
このコマンドを実行する場合は、SYSDBA
権限を持つユーザーとしてルート・コンテナ(CDB$ROOT
)に接続している必要があります。
親トピック: PMEMファイルストアの管理
16.4.5 PMEMファイルストアの削除
PMEMファイルストアは、内容が空であるかどうかにかかわらず削除できます。
次の文は、PMEMファイルストアを削除するために使用します。
-
DROP
PMEM
FILESTORE
INCLUDING
CONTENTS
を指定すると、PMEMファイルストアのすべてのファイルが削除されます。すぐにファイルストアを削除するには、INCLUDING
CONTENTS
にFORCE
キーワードを使用してください。EXCLUDING
CONTENTS
を指定すると、PMEMファイルストアは空の場合にのみ削除されます。
データベース・インスタンスがSPFILEで起動された場合は、DROP
PMEM
FILESTORE
が実行されるとSPFILEが更新されます。
親トピック: PMEMファイルストアの管理