0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Unified Memory を試す(Oracle AI Database 26ai)

0
Last updated at Posted at 2026-03-30

メモリー設定の推移

 Oracle Database にはメモリー量の設定を行う多数の初期化パラメーターが存在します。初期の Oracle Database では、各メモリー領域のサイズを細かく変更してチューニングを行ってきました。その後、データベース運用の自動化が進むにつれて設定すべきパラメーターは減少していきました。
  例えば初期化パラメーター sort_area_size や hash_area_size は pga_aggregate_target に統合され、共有サーバー構成以外では使われることはありません。初期化パラメーター db_cache_size や shared_pool_size 等も sga_target に統合され、個別のメモリー領域の下限を示す初期化パラメーターとして存続しています。

メモリー領域 初期化パラメーター 統合先初期化パラメーター
バッファ・キャッシュ db_cache_size sga_tager
Redoログ・バッファ log_buffer sga_target
ラージ・プール large_pool_size sga_target
共有プール shared_pool_size sga_target
Streamsプール streams_pool_size sga_target
ソート領域 sort_area_size pga_aggregate_target
ハッシュ領域 hash_area_size pga_aggregate_target

SGA と PGA を統合する「自動メモリー管理(AMM)」機能が提供された時期もありますが、以下のような制限があって使いにくいものでした。

  • HugePages との併用ができない
  • 初期化パラメーター memory_max_target を大きく設定するとあらかじめ領域を確保されてしまう
  • OS に搭載されたメモリーが 4 GB 以下

AMM は初期化パラメーター memory_target と memory_max_target で SGA + PGA 両方で使うメモリー量を設定します。

Unified Memory

Oracle AI Database 26ai では、共有メモリーとなる SGA と、SQL エンジンの仮想メモリーである PGA を統合する Unified Memory を利用できるようになりました。

初期化パラメーター

初期化パラメーター 説明 動的変更 備考
memory_size SGA + PGA 全体のメモリー量 可能 最大値は memory_max_size
memory_max_size memory_size の最大値 不可

どちらの初期化パラメーターも CDB 専用であるため、PDB では変更できません。

初期化パラメーター memory_size は下限が決められており、それ以下の値を設定するとインスタンスが起動できません。マニュアル 上では下限値は 1536 MB ですが、私の検証環境では 2400 MB 以下には設定できませんでした。ORA-00093 エラーが発生します。

インスタンス起動不可
SQL> STARTUP
ORA-01078: failure in processing system parameters
ORA-00093: Parameter memory_size outside valid range 2516582400 to 14754351513.
SQL> 

インスタンスの起動に成功すると、アラートログに以下のメッセージが出力されます。

アラートファイル
Unified Memory ENABLED
Enabling UNIFIED MEMORY for PDB 1
Setting Unified PGA Pool max size 1000MB for PDB 1

他の初期化パラメーターとの併用

 初期化パラメーター memory_size は、複数のメモリー領域を統合する機能ですが、あえてこれまでと同様の初期化パラメーターを設定した場合にどのような動作になるかを検証しました。

初期化パラメーター 動作 実際の値
memory_size 設定値になる 設定値
memory_max_size 設定値になる 設定値、設定しない場合は memory_size
memory_target 設定値を無視 0
memory_max_target 設定値を無視 0
sga_target 設定値を無視 計算値
sga_max_size 設定値を無視 計算値
pga_aggregate_target 下限になる
pga_aggregate_limit 設定値を無視 計算値
log_buffer 下限になる
large_pool_size 下限になる
shared_pool_size 下限になる
db_cache_size 下限になる

 上記の通り、SGA のコンポーネントは SGA の下限として動作し、sga_target が計算値に上書きされることがわかります。PGA は pga_aggregate_limit は無視されますが、pga_aggregate_target は設定値が有効に機能します。

初期化パラメーター memory_size が指定されると、一部の初期化パラメーターが無視されることを示す警告がアラートファイルに出力されます。

設定値が無視される警告
WARNING: Since memory_size is set, memory_target is ignored
WARNING: Since memory_size is set, memory_max_target is ignored
WARNING: Since memory_size is set, sga_target set by user is ignored
Starting ORACLE instance (normal) (OS id: 2725)

HugePages との関係

 通常 Linux のメモリーは 4 KB のページで管理されていますが、より大きなサイズにした方が管理負荷を小さくできます。Linux では大きなページを利用する機能を HugePages と呼び、カーネル・パラメーター vm.nr_hugepages でページ数を設定します。Oracle Database では初期化パラメーター use_large_pages で HugePages 機能を利用するかを決定します。

設定値 説明 備考
TRUE 利用できる範囲で HugePages を使う
FALSE HugePagess を使わない
AUTO システムに使用量を要求、使えなければ TRUE と同じ
ONLY HugePages のみを使う、使えなければ起動エラー
AUTO_ONLY システムに使用量を要求、使えなければ起動エラー

詳細はデータベース・リファレンス マニュアルを参照してください。

 カーネル・パラメーター、初期化パラメーター use_large_pages 設定をデフォルトの状態でインスタンスを起動すると、アラート・ログに以下のメッセージが出力されます。

アラートログ
Large pages will not be used. Only standard 4K pages will be used

RECOMMENDATION:
 1. For optimal performance, configure system with expected number
 of pages for every supported system pagesize prior to the next
 instance restart operation.

初期化パラメーター use_large_pages を auto に設定してインスタンスを再起動します。

初期状態
# sysctl -a|grep nr_hugepages
vm.nr_hugepages = 0
vm.nr_hugepages_mempolicy = 0

初期状態ではカーネル・パラメーター vm.nr_hugepages は 0 の状態です。インスタンスを起動します。

インスタンス起動
$ sqlplus / as sysdba

SQL*Plus: Release 23.26.1.0.0 - Production on Mon Mar 30 16:23:08 2026
Version 23.26.1.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> STARTUP
ORACLE instance started.

Total System Global Area 4275285504 bytes
Fixed Size                  5017088 bytes
Variable Size            1795162112 bytes
Database Buffers         2466250752 bytes
Redo Buffers                8855552 bytes
Database mounted.
Database opened.
SQL> SHOW PARAMETER sga_max_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 4080M
SQL>

カーネル・パラメーター vm.nr_hugepages が自動的に初期化パラメーター sga_max_size で計算された値になりました。この時、アラートログには以下のメッセージが出力されていました。

use_large_pages=auto の場合のアラートログ
 Available system pagesizes:
  4K, 2048K
 Supported system pagesize(s):
  PAGESIZE  AVAILABLE_PAGES  EXPECTED_PAGES  ALLOCATED_PAGES  ERROR(s)
        4K       Configured              12        On-Demand        NONE
     2048K             2040            2040        On-Demand        NONE

Author: Noriyoshi Shinoda / Date: March 30, 2026

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?