Oracle 対応の Amazon Relational Database Service (Amazon RDS) for Oracle Database を共有サーバーで動作するように設定する方法を教えてください。

Oracle ユーザーは、専用サーバーまたは共有サーバーのプロセスのいずれかによって、DB インスタンスに接続できます。共有サーバーを利用する前に、以下の点を考慮します。

  • 共有サーバーを利用することで CPU のオーバーヘッドが生じ、その結果パフォーマンスが低下する可能性があります。
  • 共有サーバーを利用することは、UGA アロケーションがラージプール内に割り当てられることを意味します。共有サーバーを格納するため、SGA 内に十分な空き容量を確保する必要があります。空き容量が不十分な場合は、インスタンスのアラートログとトレースファイルに "large pool free" (ラージプールの空き容量) エラーが出ます。
  • 共有サーバーを利用すると、SGA メモリの再割り当てがさらに頻繁に行われ、パフォーマンスの問題を引き起こす場合があります。
  • 接続スループットに合わせて十分な高さの DISPATCHERS パラメータを設定しなかった場合、データベースの再起動やフェイルオーバー中にアプリケーション接続が急増することにより、ディスパッチャーに大きな負荷をかける場合があります。
  • 共有サーバーでのバッチ処理、実行時間の長いクエリ、重い負荷、実行時間の長い DBA タスクによってジョブの待ち行列が生じ、その結果、パフォーマンスの問題が生じる場合があります。大きなジョブには、専用サーバーを利用した方がいいでしょう。

Oracle Database 共有サーバーおよび専用サーバーのアーキテクチャについての詳細は、Understanding Shared Server Architecture を参照してください。

共有サーバーのメリットと制限とのバランスをとるには、以下に留意します。

  • 共有サーバーは、接続と切断を頻繁に繰り返し、負荷の軽い処理を行う、大量の OLTP セッションのために利用します。
  • 専用サーバーは、インデックス作成などの実行時間の長いバッチ処理や負荷のかかる管理タスクのために利用します。

注意: 例として次に、特定のインスタンスサイズ (db.r3. ラージインスタンス) で共有サーバーを有効化するためのベースラインを紹介します。管理担当者は、ユースケースに基づき、メモリを最適化できるパラメータグループとセキュリティグループを設定してください。詳細については、Amazon RDS での Oracle を参照してください。

1.   DISPATCHERS を最大許容値に設定します。

  dispatchers=(PROTOCOL=TCP)(DISPATCHERS=30)
  max_dispatchers=30

2.   インスタンスにログインし、ホストサイズの SESSIONS のデフォルト値を確認します。デフォルト設定を利用していない場合は、デフォルトパラメータグループのインスタンスをテストします。

  SQL> show parameter sessions
  2428

3.   SHARED_SERVERS と MAX_SHARED_SERVERS を SESSIONS デフォルト値の 10% に設定します。

  sessions=2428
  shared_servers=243
  max_shared_servers=243

4.   LARGE_POOL_SIZE を、SHARED_SERVERS の値 * 1 MB (この例の場合、243 * 1048576 バイト) の値と同一に設定します。

large_pool_size= 254803968

5.   large_pool_size の "free memory" を v$sgastat に照会し、ラージプールのサイズが適切であることを確認します。

SQL> select name, pool, bytes/1024/1024 megs from v$sgastat where name='free memory' and pool='large pool';
Name           POOL        Megs
-------------- ----------- -------
free memory    large pool  243

6.   実行中の Oracle インスタンスに適用されるパラメータグループの設定を確認し、インスタンスから次の SQL クエリを実行します。

select name, value from v$parameter where name in ('processes', 'sessions', 'shared_servers', 'dispatchers', 'memory_target', 'memory_max_target', 'large_pool_size');

7.   次の SQL クエリを Oracle インスタンスから実行し、セッションが共有接続しているか確認します。

SQL> select decode(server,'NONE','SHARED',server), count(*) from v$session
group by decode(server,'NONE','SHARED',server);

同一の Oracle への専用サーバーと共有サーバーのアクセスを有効にするために、以下の例のようなデュアル tnsnames.ora エントリを使用します。

  # make the default shared
 
  dbname = 
  (DESCRIPTION= 
      (ADDRESS_LIST= 
          (ADDRESS=(PROTOCOL=TCP)(HOST=dbname.endpoint.amazonaws.com)(PORT=1521))
      )
      (CONNECT_DATA=
          (SID=dbname)
      )
  )

  # use the dedicated one for batch processes and dba tasks such as creating indexes

  dbname_d=
  (DESCRIPTION=
      (ADDRESS_LIST=
          (ADDRESS=(PROTOCOL=TCP)(HOST=dbname.endpoint.amazonaws.com)(PORT=1521))
      )
      (CONNECT_DATA=
          (SID=dbname)
          (SERVER=DEDICATED)
      )
  )

このページは役に立ちましたか? はい | いいえ

AWS サポートナレッジセンターに戻る

サポートが必要ですか?AWS サポートセンターをご覧ください。

公開日: 2016 年 11 月 11 日

更新: 2018 年 5 月 22 日