動的SGAと自動メモリ管理に関する検証 その2
<動的SGAと自動メモリ管理に関する検証 その2>
ペンネーム:アイスケーキ
今回も引き続き動的SGAと自動メモリ管理について検証をします。
先週は共有プールを拡張したので次は縮小してその他のSGAコンポーネントが
どうなるか見てみましょう。
☆★☆★☆★
先週まで
◆環境
Linux RAC10g1 2.4.9-e.40smp
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 – Prod
◆共有プールの拡張
現在、52MBの共有プールを56MBに拡張してみます。
NAME TYPE VALUE ------------------------------------ ----------- ----------- __shared_pool_size big integer 52M streams_pool_size big integer 0 __db_cache_size big integer 112M
SQL> ALTER SYSTEM SET shared_pool_size ='56M' SCOPE=MEMORY SID='ora101'; システムが変更されました。 NAME TYPE VALUE ------------------------------------ ----------- ----------- __shared_pool_size big integer 56M shared_pool_size big integer 56M __db_cache_size big integer 108M
shared_pool_size が 拡張(52MB->56MB)
db_cache_size が 縮小(112MB->108MB)されました。
☆★☆★☆★
それでは動的にメモリを縮小してみましょう。
Oracle9iでは動的に変更すると、MANUALモードとして即時にサイズ変更が反映
されましたが、Oracle10gでは内部モードが追加され、時間をおいて徐々に変
更されていきます。
拡縮のトリガーとしても”SGA_TARGET”値が重要な要素であることも分かります。
◆共有プールの縮小
56MBに拡張した共有プールを52MBへ縮小します。
SQL> ALTER SYSTEM SET shared_pool_size ='52M' SCOPE=MEMORY SID='ora101'; システムが変更されました。
共有プールパラメータは戻ったようですが、バッファキャッシュは変わりません。
どのタイミングでリサイズされるのでしょうか?
NAME TYPE VALUE ------------------------------------ ----------- ----------- __shared_pool_size big integer 56M shared_pool_size big integer 52M __db_cache_size big integer 108M ★ db_cache_size big integer 0
動的ビュー表でもSGAの空きサイズとして認識していないようです。
SQL> select * from V$SGA_DYNAMIC_FREE_MEMORY; CURRENT_SIZE ------------ 0
「V$SGA_RESIZE_OPS」にも結果が追加出力されません。
暫く待っていても良いのですが。。。忍耐が無いもので。。。
◆ひと押し
Oracle10gで追加された”SGA_TARGET”を変更すれば、自動メモリ管理機能により
再計算が行われるはずです。
現在”SGA_MAX_SIZE”と同様に176MBになっているので168MBに変更してみ
ます。当然、”SGA_MAX_SIZE”を超える事はできないので。。。
NAME TYPE VALUE ------------------------------------ ----------- ----------- lock_sga boolean FALSE pre_page_sga boolean FALSE sga_max_size big integer 176M sga_target big integer 176M
SQL> ALTER SYSTEM SET sga_target ='168M' SCOPE=MEMORY SID='ora101'; システムが変更されました。 NAME TYPE VALUE ------------------------------------ ----------- ----------- sga_max_size big integer 176M sga_target big integer 168M
176MB-168MB=8MBの空きメモリとして認識したみたいです。
SQL> select * from V$SGA_DYNAMIC_FREE_MEMORY; CURRENT_SIZE ------------ 8388608
「V$SGA_RESIZE_OPS」にリサイズされた結果が現れました。
デフォルト・バッファキャッシュは”SGA_TARGET”値で調整されて100MBへ縮
小されてしまいました。
Oracle9iでは存在しなかったモード”DEFERRED(延期)”で出力されています。
COMPONENT OPER_TYPE OPER_MODE PARAMETER ------------------------ ------------- --------- ------------ DEFAULT buffer cache SHRINK DEFERRED db_cache_size ^^^^^^^^ INITIAL_SIZE TARGET_SIZE FINAL_SIZE STATUS ------------ ----------- ---------- --------- 113246208 104857600 104857600 COMPLETE ^^^^^^^^^ START_TIME END_TIME ------------------- ------------------- 2004/07/11 15:35:23 2004/07/11 15:35:23 NAME TYPE VALUE ------------------------------------ ----------- ----------- __db_cache_size big integer 100M db_cache_size big integer 0
◆しばらくすると!!
NAME TYPE VALUE ------------------------------------ ----------- ----------- __db_cache_size big integer 96M db_cache_size big integer 0
またバッファキャッシュが縮小されています。
「V$SGA_RESIZE_OPS」にはIMMEDIATE(即時モード)でJavaプールが拡張され
デフォルト・バッファプールが100MBから96MBに縮小された情報が追加
格納されています。
COMPONENT OPER_TYPE OPER_MODE PARAMETER ------------------------ ------------- --------- -------------- java pool GROW IMMEDIATE java_pool_size DEFAULT buffer cache SHRINK IMMEDIATE db_cache_size ^^^^^^^^^ INITIAL_SIZE TARGET_SIZE FINAL_SIZE STATUS ------------ ----------- ---------- --------- 4194304 8388608 8388608 COMPLETE 104857600 100663296 100663296 COMPLETE ^^^^^^^^^ START_TIME END_TIME ------------------- ------------------- 2004/07/11 16:00:17 2004/07/11 16:00:17 2004/07/11 16:00:17 2004/07/11 16:00:17
以上のように、”SGA_TARGET”パラメータを変更すると内部チューニング・アル
ゴリズムにより最適サイズがワークロードに応じて決定されSGAコンポーネン
トのサイズが動的に変更されていきます。
注意 ○初期パラメータとして手動で構成されたコンポーネントは影響を受けません。 ○共有プールは拡張されても縮小されることはありません。 その他。。。諸々
今週迄で動的SGAと自動メモリ管理に関しての概要は終わりです。
来週は更に、ズバ~と踏み込めるのか。。。不安です。
いよいよ夏本番の茅ヶ崎より