• 検索結果がありません。

自己管理型データベース: 自動SGAメモリー管理

N/A
N/A
Protected

Academic year: 2021

シェア "自己管理型データベース: 自動SGAメモリー管理"

Copied!
13
0
0

読み込み中.... (全文を見る)

全文

(1)

自己管理型データベース

:

自動

SGA メモリー管理

オラクル・ホワイト・ペーパー

2004

8

(2)

自己管理型データベース: 自動 SGA メモリー管理

概要... 3 現在の課題... 3 自動共有メモリー管理の導入... 4 SGA_TARGET パラメータ ... 4 SGA コンポーネントの自動管理... 4 手動でサイズを指定するSGA コンポーネント... 6 利点... 7 柔軟性が高く、適応性のあるメモリー使用... 7 パフォーマンスの向上... 8 操作性... 8 自動共有メモリー管理の有効化... 8 SGA パラメータの動的変更 ... 10 SGA_TARGET の動的変更 ... 10 自動的に管理されるコンポーネントのパラメータの動的変更... 11 手動でサイズを変更するコンポーネントのパラメータ変更... 11 自動チューニング値の永続性... 12 結論... 12

(3)

自己管理型データベース: 自動 SGA メモリー管理

概要

Oracle Database 10g の自己管理に関する主要な機能拡張の 1 つが、自動共有 (SGA)メモリー管理です。この機能は Oracle Database 10g インスタンスが使用す

る共有メモリーの管理を自動化できるため、管理者は共有メモリー・コンポーネ ントの手動による構成が必要ありません。自動共有メモリー管理機能は、利用可 能なメモリーの使用をさらに効率化して追加ハードウェア・メモリー・リソース の取得費用を削減し、さらに動的で、柔軟性が高く、適応性のあるメモリー管理 スキームの導入により、Oracle データベース管理を著しく簡素化します。 このドキュメントでは、自動共有メモリー管理機能とその利点について説明しま す。

現在の課題

Oracle の共有グローバル領域(SGA)は、複数のメモリー・コンポーネントで構 成されています。コンポーネントとは、特定クラスのメモリー割当て要求に応じ るメモリー・プールです。メモリー・コンポーネントには、共有プール(SQL お よびPL/SQL 実行へのメモリー割当てに使用)、Java プール(Java オブジェクト およびその他のJava 実行メモリーに使用)、バッファ・キャッシュ(ディスク・ ブロックのキャッシュに使用)などがあります。 過去のリリースでは、SGA コンポーネントのサイズ指定には、Oracle 管理者が、 SHARED_POOL_SIZE、DB_CACHE_SIZE、LARGE_POOL_SIZE および JAVA_POOL_SIZE など多数のパラメータを手動による設定が必要でした。 個々のSGA コンポーネントのサイズを手動で調整することは、困難な作業です。 これらのコンポーネントのサイズをワークロードに合せた最適化が簡単ではな いためです。Oracle9i では、アドバイザ・メカニズムを導入し、DBA によるバッ ファ・キャッシュおよび共有プールの最適なサイズ決定の支援で、この問題が大 幅に改善されました。ただし、アドバイザによる推奨事項の実装は、管理者が行 う必要がありました。日中のオンライン・ユーザーと夜間のバッチ・ジョブなど、 時間によってワークロードが変化する状況では、さらに困難です。最も高い負荷 に合せたサイズ指定ではメモリーが浪費され、サイズを小さくするとメモリー不 足エラー(ORA-4031)が発生します。たとえば、毎夜実行される Recovery Manager のバックアップ・ジョブに対応する、システムを大きなラージ・プールで構成す ると、本来ならバッファ・キャッシュや共有プールでOLTP アクティビティによ り有効に使用可能なメモリーの多くの部分が、日中は未使用状態のままになりま す。同時に、失敗によるコストはビジネスの観点から膨大になり得るため、管理 者は適切なメモリー構成が必要になります。

(4)

自動共有メモリー管理の導入

これらの課題を解消するため、Oracle Database 10g では、自動共有メモリー管理 を導入しました。Oracle Database 10g で、DBA は新しいパラメータ SGA_TARGET を使用して、インスタンスで使用可能なSGA メモリーの合計量を指定するだけ です。後は、必要に応じて利用可能なメモリーが各コンポーネントに自動的に配 分されます。自動共有メモリー管理機能は、データベースの高度なアルゴリズム に基づいてワークロードの需要に応じて継続的にメモリー配分を監視し、必要に 応じて周期的に変更します。

SGA_TARGET パラメータ

SGA_TARGET パラメータは、SGA の合計サイズを示し、メモリーを次の機能に 割り当てます。 • Oracle インスタンスに必要な固定 SGA およびその他の内部割当て • ログ・バッファ • 共有プール • Java プール • バッファ・キャッシュ • 保持/リサイクル・バッファ・キャッシュ(指定されている場合) • 非標準ブロック・サイズ・バッファ・キャッシュ(指定されている場合) • ストリーム・プール(Oracle Database 10g の新機能) 重要なことは、SGA のすべてのメモリーが SGA_TARGET に含まれていることで す。この点が、構成済のSGA メモリー・パラメータの合計に内部割当てと固定 SGA のメモリーが追加されていた旧リリースとは異なります。したがって、 SGA_TARGET の使用で、Oracle データベースによって割り当てる共有メモリー 領域のサイズを正確に制御できます。

SGA コンポーネントの自動管理

SGA_TARGET を設定すると、一般的に構成されているコンポーネントのサイズ が自動的に指定されます。これらのアプリケーションの例を次に示します。 1. 共有プール(SQL および PL/SQL 実行) 2. Java プール(Java 実行状態) 3. ラージ・プール (Recovery Manager バックアップ・バッファなど、大量の割当て) 4. バッファ・キャッシュ これらのコンポーネントのサイズは明示的な指定が必要ありません。これらのコ ンポーネントのパラメータはデフォルトでゼロに設定されています。コンポーネ ントは、メモリーが必要になると、別のコンポーネントからのメモリー転送を内 部の自動チューニング・メカニズムを介して要求します。この作業は、ユーザー の介在なく透過的です。

(5)

各コンポーネントのパフォーマンスもOracle インスタンスによって監視されま す。インスタンスは内部ビューと統計を使用して、自動的にサイズ指定する各コ ンポーネントへのメモリー配分の最適化方法を決定します。このようにして、 ワークロードの変化に応じてメモリーが再配分され、新しいワークロードのパ フォーマンスは常に最適化されます。このアルゴリズムは、長期および短期の傾 向を考慮して、常に最適な配分が模索されます。 次の例では、曲線の屈曲部分よりも低い値に共有プールのサイズが指定されてお り、共有プールを大きくすれば解析時間が大幅に改善されることを共有プール・ アドバイザは示しています。このシナリオでは、自動チューニング・アルゴリズ ムによりメモリーをバッファ・キャッシュから共有プールへ転送することで、メ モリー配分を最適化できます。 図1: 共有プール・アドバイザ 管理者は、各コンポーネントの最小値を指定することで、自動チューニングされ るコンポーネントのサイズを制御できます。この作業は、コンポーネントの適切 な動作には一定量のメモリーが必要であることを管理者が把握している場合に 便利です。コンポーネントの最小値を指定するには、各コンポーネントのパラ メータを設定します。 次に構成例を示します。 SGA_TARGET = 256MB SHARED_POOL_SIZE = 32MB

(6)

DB_CACHE_SIZE = 100MB この例では、共有プールとデフォルトのバッファ・プールのサイズが指定値(そ れぞれ32MB、100MB)を下回ることはありません。これは、残りの 124MB を 4 つのコンポーネントに配分できることを意味します。したがって、SGA コンポー ネントに実際に配分される値は、たとえば次のとおりです。 実際の共有プール・サイズ = 64MB 実際のバッファ・キャッシュ・サイズ = 128MB 実際のJava プール・サイズ = 60MB 実際のラージ・プール・サイズ = 4MB 各SGA コンポーネントの現在のサイズは固定ビュー V$SGA_DYNAMIC_COMPONENTS に表示されます。最小値はパラメータ値 (DB_CACHE_SIZE、SHARED_POOL_SIZE など)で指定されています。SGA コ ンポーネントの現在のサイズは、Enterprise Manager メモリー構成ページで確認で きます。 図2: OEM の表示: 自動チューニングされた SGA コンポーネントの現在のサイズ

手動でサイズを指定する

SGA コンポーネント

SGA コンポーネントには、サイズが自動調整されないものもあります。このよう なコンポーネントのサイズは、アプリケーションの必要性に応じて、管理者が明 示的に指定する必要があります。次のコンポーネントでは、サイズが自動調整さ れません。

(7)

• 保持/リサイクル・バッファ・キャッシュ(DB_KEEP_CACHE_SIZE と DB_RECYCLE_CACHE_SIZE によって制御) • 非標準ブロック・サイズの追加バッファ・キャッシュ (DB_<N>K_CACHE_SIZE, N={2,4,8,16,32}によって制御) • ストリーム・プール (新規パラメータSTREAMS_POOL_SIZE によって制御) これらのコンポーネントのサイズは、管理者が指定するパラメータ値によって決 まります。これらの値は、Oracle Enterprise Manager または ALTER SYSTEM コマ ンドを介したコマンドラインで随時変更できます。 コンポーネントのサイズを手動で指定すると、その分自動調整で使用可能なメモ リー量が減少します。次の構成を例に説明します。 • SGA_TARGET = 256MB • DB_8K_CACHE_SIZE = 32MB • STREAMS_POOL_SIZE = 24MB 自動的にサイズが指定されるコンポーネントの配分にこのインスタンスに残さ れたメモリーは、200MB(256 − 32 − 24)です。

利点

柔軟性が高く、適応性のあるメモリー使用

自動SGA メモリー管理の最大の利点は、ユーザーの介在なしに SGA コンポーネ ントのサイズがワークロードの必要性に応じて柔軟に調整されることです。 このことを、次の例で説明します。SGA で利用できるメモリーが 1GB のとき、 手動による構成で配分します(簡略化のため、他のSGA コンポーネントは無視 します)。 SHARED_POOL_SIZE=128MB DB_CACHE_SIZE=896MB この場合、アプリケーションが128MB を超えるメモリーを共有プールから割り 当てると、利用できる共有プールがないことを示すORA-4031 が発生します。こ の状況が発生すると、バッファ・キャッシュに空きメモリーがあっても共有プー ルでは利用できないことに注意してください。ユーザーは、手動でバッファ・ キャッシュを小さくし、共有プールを大きくしてこの問題に対処します。 一方、自動管理では、DBA の作業は次のパラメータの設定のみです。 SGA_TARGET = 1GM これにより、ORA-4031 のエラー状況を回避するために共有プールのメモリーを 増やす必要がある場合、アプリケーションはバッファ・キャッシュからメモリー を取得することで簡単にそれを実現できます。

(8)

パフォーマンスの向上

自動共有メモリー管理機能を使用すると、使用可能なメモリーの最適化だけでな く、ワークロード・パフォーマンスも向上します。手動の構成では、共有プール のサイズ指定が適正でないため共有プールが不足し、コンパイル済のSQL 文が 頻繁に共有プールから削除されることがあります。この状況は、頻繁なハード解 析に関し顕著で、したがって、パフォーマンスが低下します。 一方、自動管理を有効化すると、内部チューニング・アルゴリズムがワークロー ド・パフォーマンスを監視し、共有プールのサイズを大きくすれば必要な解析数 が減ると判断する場合は、そのサイズを大きくします。この機能は、自動共有メ モリー管理機能の最も優れた点です。リソースの追加や手動によるチューニング 作業を必要とせず、そのままの状態でパフォーマンスが向上します。

操作性

1 つのパラメータのみ設定が必要なため、管理者の作業は非常に簡単です。DBA は、インスタンスが利用できるSGA メモリーの量を指定するだけです。個々の コンポーネントのサイズを計算する必要はありません。さらに、システム全体で メモリー不足が発生しないかぎり、メモリー不足エラーは発生しません。

自動共有メモリー管理の有効化

自動共有メモリー管理機能の有効化には、EM を使用するか、パラメータ SGA_TARGET を設定します。 手動の方法から移行するには、SGA パラメータの値を計算し、それに固定 SGA および内部オーバーヘッドの算入に16MB ほどの少量のメモリーの加算が最良 です。同時に、自動的にサイズが指定されるコンポーネントの値をパラメータ・ ファイルからも削除できます。 たとえば、次の構成の移行を考えてみます。 SHARED_POOL_SIZE=256MB DB_CACHE_SIZE=512MB LARGE_POOL_SIZE=256MB LOG_BUFFER=16MB これらのパラメータのかわりに、次のパラメータを指定できます。 SGA_TARGET=256MB+512MB+256MB+16MB+16MB(固定 SGA オーバーヘッ ド)=1056MB

自動共有メモリー管理は、動的な有効にもなります。Oracle Enterprise Manager の 使用には、「自動共有メモリー管理」画面で「有効化」ボタンをクリックするこ とでSGA チューニングを有効化できます。

(9)

図3: Oracle Enterprise Manager を使用した自動共有メモリー管理の有効化 OEM を使用して自動共有メモリー管理機能を有効にすると、SGA_TARGET の適 正値が前述の式に従って自動的に計算されます。さらに、自動管理の利点を最大 化するため、個別コンポーネントのサイズを指定するパラメータの設定がすべて 解除されます。 コマンドライン・インタフェースの場合には、次の手順で自動共有メモリー管理 を有効化します。

• SGA_TARGET を現在の SGA サイズに合せて動的に設定します。SGA の 現在のサイズは、次の問合せによって固定ビューV$SGA から取得できま す。

select sum(value) from v$sga;

• 次に、自動共有メモリー・チューニング・アルゴリズムに従い必要に応 じてサイズを変更するため、自動チューニングされるコンポーネントの サイズをゼロに設定します。

たとえば前述の問合せで536870912(512MB)という結果が返された場合には、 次の手順で自動SGA を有効化します。

alter system set sga_target=512M; alter system set db_cache_size = 0; alter system set shared_pool_size = 0; alter system set large_pool_size = 0; alter system set java_pool_size = 0;

(10)

SGA パラメータの動的変更

SGA_TARGET の動的変更

SGA_TARGET パラメータは、SGA_MAX_SIZE パラメータで指定された値まで動 的に増加します。また、このパラメータの値は減少もします。減少する場合、メ モリーの解放に1 つ以上の自動チューニング・コンポーネントが選択されます。 SGA_TARGET パラメータの値は、自動チューニングされる 1 つ以上のコンポー ネントが最小サイズに達するまで減少できます。 SGA_TARGET 変更時に、物理メモリーの使用量が変更されるは、OS プラット フォームによって異なります。動的共有メモリーに対応しない一部のUnix プラッ トフォームでは、SGA によって使用される物理メモリーが、SGA_MAX_SIZE の 値に等しくなります。このようなプラットフォームでは、SGA_TARGET の値が SGA_MAX_SIZE よりも低い設定は効果がありません。このため SGA_MAX_SIZE の設定はお薦めしません。Solaris Operating System や Microsoft Windows などその 他のプラットフォームでは、SGA によって使用される物理メモリーは SGA_TARGET パラメータと等しくなります。 SGA_TARGET サイズの変更時に影響するのは、自動チューニング・コンポーネ ントのみです。手動で構成したコンポーネントは影響を受けません。 たとえば、次のように構成された環境があるとします。 SGA_MAX_SIZE=1024MB SGA_TARGET = 512MB DB_8K_CACHE_SIZE = 128MB この例で、SGA_TARGET の値は 1024MB まで増加するか、バッファ・キャッシュ、 共有プール、ラージ・プールまたはJava プールのうち 1 つ以上がその最小サイズ に達するまで減少できます(正確な最小値は、システムのCPU の数など環境要 因によって異なります)。ただし、DB_8K_CACHE_SIZE の値は常に 128MB に 固定されています。 また、SGA_TARGET が減少する際、自動チューニング・コンポーネントのサイ ズの指定で最小サイズが制限されている場合には、それらのコンポーネントはそ の最小値を下回ることはありません。このことを考慮して、次のようなパラメー タの組合せを説明します。 SGA_MAX_SIZE=1024MB SGA_TARGET = 512MB DB_CACHE_SIZE = 96MB DB_8K_CACHE_SIZE = 128MB この例では、DB_8K_CACHE_SIZE が 128MB に永続的な固定だけでなく、第一 バッファ・キャッシュも96MB を下回ることはありません。このことでも、 SGA_TARGET の値の減少幅がさらに制限されます。

(11)

自動的に管理されるコンポーネントのパラメータの動的変更

パラメータSGA_TARGET が設定されていない場合、SGA_TARGET コンポーネ ント・パラメータのサイズを変更する規則は、旧リリースと同じです。これは、 SGA_TARGET がない場合は自動共有メモリー管理機能が無効になるためです。 ただし、前述のとおり、自動共有メモリー管理が有効に設定されているときは、 自動的にサイズが指定されるコンポーネントに対して手動で指定したサイズ (SHARED_POOL_SIZE など)がそのコンポーネントの下限となります。関連の パラメータの値を変更することで、この制限を動的に変更できます。 SGA コンポーネントのサイズに現在のサイズよりも小さい下限が指定された場 合には、そのコンポーネントのサイズは、すぐには変更されません。ただし、将 来的に自動チューニング・アルゴリズムが変更後の最小値に制限されます。 次の例を説明します。 SGA_TARGET = 512MB SHARED_POOL_SIZE = 256MB 現在の共有プール・サイズ=284MB この例では、SHARED_POOL_SIZE パラメータが動的に 128MB 以下になっても、 共有プールの現在のサイズは変わりません。 また、自動的にサイズが指定されるコンポーネントのサイズをゼロに設定すると、 そのコンポーネントのサイズにはユーザー指定の最小値が適用されなくなりま す。前述のとおり、これは、SGA_TARGET が設定されている場合の、自動的に サイズが指定されるコンポーネントのデフォルト動作です。 ただし、コンポーネントの現在のサイズよりも大きい値がこのパラメータに指定 された場合には、コンポーネントは変更されたサイズに応じて大きくなり、最小 値の増加が適用されます。前述の例では、SHARED_POOL_SIZE の値を 300MB にした場合、共有プールは300MB に増加します。このようなサイズ変更は、1 つ以上の自動チューニング・コンポーネントからメモリーを転送することで実現 されます。 自動的にサイズが変更される1 つ以上のコンポーネントの最小サイズを手動で 制限すると、動的調整に利用できるメモリーの合計量が少なくなるため、ワーク ロードの変化に応じたシステムで調整する機能が制限されます。したがって、例 外的なケースを除き、このオプションはお薦めしません。デフォルトの自動管理 動作は、システムのパフォーマンスと利用可能なリソースの両方を最大化する設 計がされています。

手動でサイズを変更するコンポーネントのパラメータ変更

手動でサイズを変更するパラメータも動的に変更できます。相違点は、パラメー タの値によってそのコンポーネントの正確なサイズが指定されることです。 したがって、手動コンポーネントのサイズを増やすと、自動的にサイズが指定さ れるコンポーネント(1 つまたは複数)からメモリーが削除されます。手動コン ポーネントのサイズを減らすと、解放されたメモリーは自動的にサイズが指定さ れるコンポーネントに追加されます。

(12)

次に例を示します。 SGA_TARGET = 512MB DB_8K_CACHE_SIZE=128MB この場合、DB_8K_CACHE_SIZE を 144MB(または、16MB の倍数)に増やすと、 自動的にサイズが指定されるコンポーネントから16MB が削除されます。同様に、 DB_8K_CACHE_SIZE を 112MB(または、16MB の倍数)に減らすと、自動的に サイズが指定されるコンポーネントに16MB が追加されます。

自動チューニング値の永続性

自動チューニングしたコンポーネントのサイズを停止後も保持するには、サー バー・パラメータ・ファイル(SPFILE)を使用します。これにより、システムは 特性ワークロードを毎回始めから調べる必要がなくなり、最後に停止した場所か ら再開します。 このため、自動共有メモリー管理機能とSPFILE との併用を強くお薦めします。

結論

メモリーは貴重なシステム・リソースです。管理者は現在、メモリー使用の最適 化に多くの時間を割いています。自動共有メモリー管理を使用すると、時間がか かる困難な作業を回避できます。柔軟性が高く適応性のあるこのソリューション は、既存のリソースの利用を最適化し、それにより企業は設備投資を抑制できま す。自動共有メモリー管理は、Oracle Database 10g に搭載された他の機能と同様 に、管理者の戦略的な役割をより有効にして、企業の収益増加を実現します。

(13)

自己管理型データベース: 自動 SGA メモリー管理 2004 年 8 月

著書: Tirthankar Lahiri、Arvind Nithrkashyap

寄稿者: Sushil Kumar、Brian Hirano、Kant Patel、Poojan Kumar Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海外からのお問合せ窓口: 電話: +1.650.506.7000 ファックス: +1.650.506.7200 www.oracle.com オラクル社は、インターネット上での活動を強化するソフトウェアを提供します。 Oracle はオラクル社の登録商標です。 このガイドで使用されているさまざまな製品名およびサービス名には、オラクル社の商標が含まれています。 その他のすべての製品名およびサービス名は、各社の商標です。

Copyright © 2004 Oracle Corporation All rights reserved.

図 3: Oracle Enterprise Manager を使用した自動共有メモリー管理の有効化  OEM を使用して自動共有メモリー管理機能を有効にすると、 SGA_TARGET の適 正値が前述の式に従って自動的に計算されます。さらに、自動管理の利点を最大 化するため、個別コンポーネントのサイズを指定するパラメータの設定がすべて 解除されます。  コマンドライン・インタフェースの場合には、次の手順で自動共有メモリー管理 を有効化します。

参照

関連したドキュメント

ライセンス管理画面とは、ご契約いただいている内容の確認や変更などの手続きがオンラインでできるシステムです。利用者の

自動車販売会社(2社) 自動車 自動車販売拠点設備 1,547 自己資金及び借入金 三菱自動車ファイナンス株式会社 金融 システム投資 他

まとめ資料変更箇所リスト 資料名 :設計基準対象施設について 章/項番号:第14条 全交流動力電源喪失対策設備

技術士のCPD 活動の実績に関しては、これまでもAPEC

自動車環境管理計画書及び地球温暖化対策計 画書の対象事業者に対し、自動車の使用又は

章番号 ページ番号 変更後 変更前

章番号 ページ番号 変更後 変更前

生物多様性の損失は気候変動とも並ぶ地球規模での重要課題で