Oracleデータベースの高メモリ利用

1つのOracleデータベースサーバーでメモリがほぼ使い果たされています。ほぼ100GBが占有されています。.

みなさんご存じのとおり,オラクルメモリはPGAとSGAで構成されています,だから私はそれを分析するためにawrレポートを生成します. 次のように.

PGAのサイズが66GBに達し、SGAのサイズが29GBであることは明らかです。,したがって、PGAには大きな疑いがあります.
下の写真から,PGAがサーバープロセスとバックグラウンドプロセスに関連しているという情報を取得できます, すべてのユーザーセッションはPGAに保持されます.

そこで、次のSQLを実行して、各プロセスのメモリ使用率を確認しました。.

PIDを選択,SPID,PGA_ALLOC_MEM / 1024/1024 MB from v $ process ORDER BY MB;

上記の情報から読み取りボックス, 巨大なサイズのPGAが各プロセスによって占められています. SPIDは、オペレーティングシステムのプロセス番号を意味します. プロセス番号に応じて、コマンドを実行することにより、どのjdbcクライアントがデータベースサーバーに接続しているかの情報を取得できます。 “netstat -tanlp | grep SPID”, たとえば、SPIDは 44175, クライアント接続データベースのIPとポートがわかります.

そう. クライアントIPは 192.168.17.6 とポートは 47244. クライアントにログインしてコマンドを実行します “netstat -tanlp | grep 47244” クライアントプログラムのpid番号を取得するには.

pid番号から 4842, psコマンドでどのプログラムがデータベースサーバーに接続しているかがわかります.

これでログを分析できます(catalina.outなど) このプログラムの, または、SQL文とセッションをPIDで分析することもできます.

ただし、緊急の場合, 最速の方法は、クライアントプログラムを再起動することです(アボウトムキャット ). データベースサーバーのメモリ使用量が削減されます. しかし、問題を完全に解決する必要がある場合, プログラムログを分析してみてください, SQL文またはデータベースのawr,バグを修正します, プログラムとデータベースの最適化.

返信を残します