2011-03-23 30 views
0

したがって、Oracle 11gのインスタンスがWindows 2008 R2サーバーから実行されています。私はオラクルとMicrosoftがうまくやっていないかもしれないが、オラクルが箱の中の約50%を食べていて、決してそれを解放してしまうところまで来ているので、時折、それを洗い流す私は、何らかの形でこのメモリを解放する代わりに、サービスをバウンスする必要がないかどうかを探そうとしてきましたが、これまでのところ運がありません。勝利2008年のOracle 11gのメモリリーク?

他の誰かがこれに遭遇し、代替手段を通じてそのメモリをフラッシュする方法を見つけましたか?どんな入力をいただければ幸いですか?

ここには、このインスタンスのspfile /パラメータからの現在の割り当てがあります。使用可能なメモリに基づいて推奨設定がある場合は、必要なものを教えてください。追加情報を提供できます。これについてあなたのご意見ありがとうございました。

archive_lag_target     integer 0 
db_flashback_retention_target  integer 1440 
fast_start_io_target     integer 0 
fast_start_mttr_target    integer 0 
memory_max_target     integer 10368319488 
memory_target      integer 10368319488 
parallel_servers_target    integer 64 
pga_aggregate_target     integer 0 
sga_target       integer 0 

答えて

10

Oracleが使用するSGAではなくリークであることを確認してください。

一般に、プラットフォームに関係なく、OracleはSGA(システム・グローバル・エリア)の起動時に大きなメモリー・チャンクを割り当てます。これは、データベースがRAM内のブロックをキャッシングする、SQL文をキャッシュする、などのためにデータベースが使用するものです。セッションが作成されるたびに、OracleはそのセッションのPGA(Program Global Area)にはるかに小さなメモリを割り当てます。それは、セッションがそれを必要とするように成長し、縮小する種類やハッシュのようなもののためのメモリです。オペレーティング・システムやその他のアプリケーションの残りの部分を残すPGA全体の物理RAMの半分をSGAとして使用し、物理RAMの15〜20%を使用するようにOracleを構成することは珍しいことではありません。そのメモリ使用量を減らすことはできますが、これは、I/Oの増加がキャッシュから満足されるのではなく物理的な読み取りを必要とするため、パフォーマンスの問題を引き起こす可能性があります。

構成設定では、OracleにSGAとPGAの間で最大9.65 GBのRAMを使用し、そのメモリーを適切に割り当てるよう指示しています。 OracleがSGAの起動時に6または7 GBのRAMを取得し、そのRAMを永久に確保することを期待するのは全く合理的です。また、負荷がかかっていると、Oracleは共有SGAとセッション・レベルPGAの間に9.65GBのRAMが割り当てられている可能性があります。それはあなたが見ている行動ですか?そうであれば、Oracleは予期したとおりに動作していると思います。メモリリークはなく、サービスを再起動する必要はありません。

+0

+1、常にジャスティンからの良い答えです。 Burlesonのサイトには、トピックに関する素晴らしいブリーフがあります。http://www.dba-oracle.com/oracle11g/oracle_11g_memory_target_parameter.htm – DCookie

+2

スタートアップ時にSGAを 'つかむ'べきです。 PGAは、必要に応じてプロセスによって把握されます。プロセスがそれを解放するか、プロセスが終了するまで(セッションがログアウトするなど)プロセスを保持する可能性があります。あなたのアプリケーションが接続プールを使用していて、セッションを終了していない場合は、この影響があります。 –