Shoeisha Technology Media

EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

#7 復習しておこう!Oracle Database 10gからの変更点

edited by DB Online   2011/06/27 07:00

第6回目である前回は、Oracle Database 11g Release 2へのアップグレード後に行う作業について解説しました。第7回目となる今回は、前バージョンであるOracle Database 10gからの変更点について解説します。

10gのこんな変更点、ご存じですか?

さて、アップグレード作業が完了したので早速Oracle Database 11gの新機能を解説したいところですが、まずは前バージョンであるOracle Database 10gでの重要な変更点について復習しておきたいと思います。数ある10gからの変更点の中から、今回はちょっと地味であまり知られていない(?)次の3点について解説します。

  1. 共有プールの計算方法
  2. ハッシュ・アルゴリズムによるグルーピング処理
  3. スリムになったCONNECTロール

共有プールの計算方法

Oracle Database 10g Release 1から、共有プールの計算方法が変更されました。10g Release 1より前のリリースでは、割り当てられる共有プール・メモリーの量は以下のように算出されます。

【割り当てられる共有プール・メモリーの量】 =
【SHARED_POOL_SIZE初期化パラメータの値】 +
【インスタンス起動時に計算された内部SGAオーバーヘッドの量】

『内部SGAオーバーヘッド』とは、他の複数の初期化パラメータの値に基づいて起動時にOracle Databaseによって割り当てられるメモリーです。

このメモリーは、SGAのさまざまなサーバー・コンポーネントの状態を維持するために使用されます。たとえば、SHARED_POOL_SIZEパラメータが64MBに設定されていて、算出された内部SGAオーバーヘッドの値が12MBである場合、共有プールの実際のサイズは64+12=76MBですが、SHARED_POOL_SIZEパラメータの値は64MBと表示されます。

10g Release 1以降のリリースでは、内部SGAオーバーヘッドのサイズは、ユーザーが指定するSHARED_POOL_SIZEの値に含まれます。つまり、起動時に割り当てられる共有プール・メモリーの量は、SHARED_POOL_SIZE初期化パラメータの値と等しくなります。

したがって、このパラメータには、必要な共有プール・サイズに内部SGAオーバーヘッドを加えた値を設定しなければなりません。前述の例の場合、起動時にSHARED_POOL_SIZEパラメータの値が64MBに設定されているとすると、内部SGAオーバーヘッドの値が変わっていなければ、起動後に使用可能な共有プールの値は64-12=52MBになります。起動後に共有プール・メモリーとして有効な値を64MB維持するには、SHARED_POOL_SIZEパラメータを64+12=76MBに設定する必要があります。

使用可能な共有プール

内部SGAオーバーヘッド(共有プールの起動オーバーヘッドとも呼ばれます)の正確な値は、V$SGAINFOビューから取得することができます。

SQL> CONNECT / AS SYSDBA
接続されました。
SQL> COLUMN NAME FORMAT A40
SQL> COLUMN BYTES FORMAT 999,999,999,990
SQL> COLUMN RESIZE FORMAT A6
SQL>
SQL> SELECT * FROM V$SGAINFO;

NAME                                                BYTES RESIZE
---------------------------------------- ---------------- ------
Fixed SGA Size                                  2,176,168 No
Redo Buffers                                    7,397,376 No
Buffer Cache Size                             956,301,312 Yes
Shared Pool Size                              469,762,048 Yes
Large Pool Size                                16,777,216 Yes
Java Pool Size                                134,217,728 Yes
Streams Pool Size                              16,777,216 Yes
Shared IO Pool Size                                     0 Yes
Granule Size                                   16,777,216 No
Maximum SGA Size                            1,603,411,968 No
Startup overhead in Shared Pool               100,663,296 No
Free SGA Memory Available                               0

ユーザー指定のSHARED_POOL_SIZEの値が小さすぎるために内部SGAオーバーヘッドの必要量にも満たない場合は、起動時にORA-00371エラー(「共有プール・メモリーが不足しています」)が発生しSHARED_POOL_SIZEパラメータの推奨値が提示されます。

また、10g Release 1より前のリリースから移行する場合、11gの移行ユーティリティでは、アップグレード前の環境の内部SGAオーバーヘッドの値とSHARED_POOL_SIZEパラメータの古い値に基づいて、SHARED_POOL_SIZEパラメータの新しい推奨値が提示されます。

なお、Oracle Database 10g Release 1から、共有メモリーの管理方式として新たに『自動共有メモリー管理モード』が提供されるようになりました。自動共有メモリー管理モードでは、Oracle Databaseが適切なSHARED_POOL_SIZE初期化パラメータのサイズを自動的に設定してくれるので、内部SGAオーバーヘッドや共有プールの計算方法を気にする必要はありません。特にシビアなチューニングを必要としない環境であれば、便利な自動共有メモリー管理モードの利用をお薦めます。


著者プロフィール

  • 白砂 丈太郎(シラスナ ジョウタロウ)

    日本オラクル(株)において、データベース事業のコアテクノロジー技術およびパフォーマンス技術のリーダーを務め、製品機能の検証および大規模/最重要プロジェクトでのベンチマークや実装を担当。 現在は(株)ワン・オー・ワンにおいて、データベースとWeb技術を中心としたシステム構築およびコンサルティングに従...

バックナンバー

連載:使ってナットク!Oracle Database 11g最新機能

もっと読む

All contents copyright © 2007-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5