
Oracleパフォーマンス障害の克服(5)
SGAに起因するパフォーマンス障害を発見する Page 2/3
高橋 潤
2004/12/11
まずは、現在のバッファ・キャッシュに空きがあるか確認してみましょう。以下のSQLはX$BHにアクセスするので、SYSユーザーでのログインが必要です。
SQL> SET SERVEROUTPUT ON; |
| リスト3 X$BHからバッファ・キャッシュの空き比率を調べる |
![]() |
| 図3 リスト3の出力結果(クリックすると拡大します) |
X$BH表とは、Oracleの動的パフォーマンスビューの元表で、データベース・バッファ上にあるオブジェクトを確認できます。X$BH表でSTATE列が0のものはメモリ上の空き領域となります。リスト3のSQLを実行した結果、バッファキャッシュに余裕がない場合にバッファを拡張する必要があり、逆に余裕がある場合は縮小できます。つまり、過負荷時にデータベース全体で確保しているデータベース・バッファサイズのブロック数と空いているブロック数の比率を確認することで、現在のバッファサイズが適切であるかを判断しています。サーバ負荷のピーク時にデータベース・バッファ・キャッシュとして割り当てられたメモリの比率が0以下になってしまうと「バッファ・キャッシュ余裕なし」になってしまいます。平均的に妥当な値を探っていくことになりますが、バーストトラフィックなどを考慮に入れると全体の数%程度の余裕が必要であると考えます。
拡張するサイズを見積もるために、まず現在のバッファサイズを確認しましょう。V$SGAからも参照できますが、初期化パラメータの設定方法との関連で分かりやすいSHOW PARAMETERで確認してみます。データベース・バッファ・キャッシュの初期化パラメータには、Oracleのバージョンによる大きな違いがありますので注意が必要です。
Oracle9i以降
初期化パラメータの設定に必要な値は、
| データベース・バッファ・キャッシュサイズ=DB_CACHE_SIZE |
となります。初期化パラメータとしてはDB_BLOCK_BUFFERSも存在しますが、DB_CACHE_SIZEが設定されている場合この値は無視されます。
SQL> SHOW PARAMETERS DB_CACHE_SIZE |
Oracle8i以前
初期化パラメータの設定に必要なバッファサイズ値は、DB_BLOCK_BUFFERSとDB_BLOCK_SIZEの積で求めることができます。
| データベース・バッファ・キャッシュサイズ =DB_BLOCK_BUFFERS×DB_BLOCK_SIZE |
SQL> SHOW PARAMETERS DB_BLOCK_BUFFERS |
グラニュル
Oracle9i以降の動的コンポーネントに関するサイズの指定は、グラニュルという単位で割り当てられるようになりました。グラニュル単位は表1のように、SGA_MAX_SIZEの値によって決定できます。ただし、Windows
NTのような32ビットOSの場合、SGA_MAX_SIZEが128Mbytes以上の場合は8Mbytesとなりますので注意が必要です。
| SGA_MAX_SIZE | グラニュル単位 | |
| (1) | 128Mbytes未満 | 4Mbytes (SGA_MAX_SIZEが128Mbytesより少ない場合、グラニュル単位は4Mbytes) |
(2) |
128Mbytes以上 | 16Mbytes (SGA_MAX_SIZEが128Mbytes以上の場合、グラニュル単位は16Mbytes。ただし、32ビットOSは8Mbytes) |
| 表1 SGA_MAX_SIZEとグラニュル単位の関係 | ||
データベース・バッファ・キャッシュのサイズを設定する場合、DB_CACHE_SIZEパラメータを10Mbytesと設定するなら、(1)の場合は12Mbytes、(2)の場合は16Mbytesとなります。現在のグラニュル単位はV$SGA_DYNAMIC_COMPONENTSビューで確認できます。
取得したバッファ空き比率と現在設定されているバッファサイズの2項目を基に、最適なデータベース・バッファサイズを設定できます。Oracleデータベースサーバ設計時はデータベース・バッファサイズを論理的に見積りますが、今回取得した過負荷時の空きバッファ比率情報を統計的に取得しておくことにより、最適なデータベース・バッファサイズを設定することが可能です。
バッファサイズは小さくすることにより、OSのページングやスワップが少なくなりパフォーマンスが向上することもありますので、最適なバッファサイズを日々の運用の中から模索することも重要です。(次ページに続く)
| 2/3 |
| Index | |
| 連載 Oracleパフォーマンス障害の克服(5) SGAに起因するパフォーマンス障害を発見する |
|
| Page
1 ・データベース・バッファ・キャッシュはヒット率90%以上を維持する −データベース・バッファ・ヒット率の算出 |
|
| Page
2 −データベース・バッファ・キャッシュの見積もり |
|
| Page
3 ・共有プールは全体と使用目的を意識して設定する −共有プール全体のサイズを確認 −ライブラリ・キャッシュ・ヒット率の算出 −ディクショナリ・キャッシュ・ヒット率の算出 ・初期化パラメータの変更 |
|
| Oracleパフォーマンス障害の克服 |
TechTargetジャパン
- IBMが歴史を変える!? 新カテゴリの製品を発表 (2012/5/25)
IBMは新たな製品カテゴリとなる「PureSystems」を発表。DB2 10とビッグデータの関係、PureSytemsの斬新さはどこかに迫ります - クラウド時代のデータ処理を支える分散KVSの可能性 (2012/5/23)
現在、高速データ処理の主流はインメモリ型データ処理だが、別の方法として分散KVSが注目を集めている。今回は分散KVSについて話を聞いた - 複数の表からデータを取り出して表示させる(2) (2012/4/23)
前回はSQLの基本的な結合構文について説明しました。今回は、より複雑な自己結合や外部結合について説明します - SQL Server、OOWにIQ、盛りだくさんの4月 (2012/4/20)
オラクルオープンワールドが3年ぶりに東京で開催されたほか、SQL Server 2012が提供開始されるなど、今月は話題が盛りだくさんです
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

