このチュートリアルでは、"メモリ不足"エラーをできるだけ回避するために自動メモリ管理を使用する方法について説明します。
約15分
このチュートリアルでは、以下のトピックについて説明します。
| 概要 | |
| 前提条件 | |
| 自動メモリ管理の使用 | |
| まとめ |
このアイコンの上にカーソルを置くと、すべてのスクリーンショットがロードし、表示されます。
(警告:すべてのスクリーンショットが同時にロードされるため、ご使用のインターネット接続によってはレスポンス・タイムが遅くなる場合があります。)
注:各手順に関連したスクリーンショットのみを表示する場合は、それぞれの手順にあるアイコンの上にカーソルを置いてください。スクリーンショットをクリックすると、非表示になります。
Oracle Database 11gは、自動メモリ管理機能を使用して、ワークロードに従ってPGAおよびSGAコンポーネントのサイズ設定を自動化します。メモリを管理するもっとも簡単な方法は、データベースによる自動的な管理と調整を可能にすることです。ほとんどのプラットフォームでこれを実現するには、ターゲット・メモリ・サイズ初期化パラメータ(MEMORY_TARGET)と最大メモリ・サイズ初期化パラメータ(MEMORY_MAX_TARGET)を設定する必要があります。ターゲット・メモリ初期化パラメータは動的なため、データベースを再起動することなく、いつでもターゲット・メモリ・サイズを変更できます。最大メモリ・サイズは、ターゲット・メモリ・サイズに非常に大きい値を誤って設定しないように、上限の役割を果たします。特定のSGAコンポーネントは簡単に縮小できない、あるいは最小サイズを維持する必要があるため、データベースに対しても小さすぎるターゲット・メモリ・サイズの設定は回避されます。
このチュートリアルを始める前に、以下を確認してください。
| 1. | Oracle Database 11gがインストールされていること |
|
| 2. | amm.zipファイルを作業ディレクトリにダウンロードおよび解凍してあること |
|
自動メモリ管理は、使用要件に基づいたメモリの割当てを動的に調整します。
以下の手順を実行して、自動メモリ管理の使用方法について学習します。
| 1. |
User NameをOracleとしてターミナル・ウィンドウを開きます。 /home/oracle/wkdir/ammディレクトリに移動します。 amm_setup.sh スクリプトを実行します。このスクリプトは、このOBEに必要なすべてのオブジェクトを作成します。また、自動メモリ管理を有効にして、このOBEで実行されるパラレル問合せが、後でOracle Enterprise Managerで見やすい表示にするためにラージ・プール・メモリを使用していることを確認します。注:本番環境でこのスクリプトを実行しないでください。 ./amm_setup.sh スクリプトの最終ステップでは、次のようなサイズのSGAを使用してデータベースを再起動します。
|
|
| 2. |
ブラウザ・ウィンドウを開いて、User NameをSYSとしてOracle Enterprise Managerにログオンします。Homeページで「Server」タブをクリックします。Serverサブページで「Memory Advisors」リンクをクリックします。
|
|
| 3. |
Memory Advisorsページで、Automatic Memory Managementが有効になっていることを確認します。このページで自動メモリ管理を有効または無効にできます。
|
|
| 4. |
ターミナル・セッションから、User Nameをamm(パスワードはamm)としてSQL*Plusへの接続を開始し、query1.sqlスクリプトを実行します。 このスクリプトは、並列度を24に設定したパラレル問合せを開始します。 データベースは構成されているため、この文はラージ・プール内の大量のメモリを使用することになります。
|
|
| 5. |
同じターミナル・セッションからquery2.sqlスクリプトを実行します。 このスクリプトは、並列度を25に設定したパラレル問合せを開始します。 この文では、さらにラージ・プール・メモリが必要になります。
| |
| 6. |
同じターミナル・セッションからquery3.sqlスクリプトを実行します。このスクリプトは、メモリで大きい配列を構築するPL/SQLプロシージャを起動します。 この実行には、より大きな共有プールが必要です。 少なくとも5分間実行できることを確認します。
| |
| 7. |
Oracle Enterprise Managerセッションに戻って、Memory Advisorsページの上部の「Refresh」ボタンをクリックします。前3回の実行のメモリへの影響を確認できます。 最初の2回の実行で多くのラージ・プール・メモリを使用したため、その他のメモリ領域はこれに対応するために動的に減ります。 3回目の実行でより大きな共有プールが必要であったため、メモリは動的に再割当てされました。"メモリ不足"エラーを発生させずに自動的にすべて実行されました。
| |
| 8. |
SQL*Plusを終了します。次に、amm_cleanup.shスクリプトを実行します。 このスクリプトはデータベースをリセットし、このOBEより前の設定に戻すものです。 ./amm_cleanup.sh
|
|
このチュートリアルでは、自動メモリ管理の使用方法を学習しました。