5

おそらくこれは正常なことですが、私の Oracle 11g データベースでは、Oracle の SQL Developer を使用しているプログラマーが、UGA と PGA メモリを合わせて 100MB 以上を定期的に消費しているのを見てきました。これが正常なのか、どうすればよいのか教えていただきたいです。私たちのデータベースは Windows 2008 の 32 ビット バージョン上にあるため、メモリの制限がますます懸念されています。次のクエリを使用してメモリ使用量を表示しています。

SELECT e.SID, e.username, e.status, b.PGA_MEMORY
FROM v$session e
LEFT JOIN 
   (select y.SID, y.value pga, 
      TO_CHAR(ROUND(y.value/1024/1024),99999999) || ' MB' PGA_MEMORY 
   from v$sesstat y, v$statname z 
   where y.STATISTIC# = z.STATISTIC# and NAME = 'session pga memory') b
ON e.sid=b.sid
WHERE (PGA)/1024/1024 > 20
ORDER BY 4 DESC;

SQLDeveloper でテーブルを開くたびにリソース使用率が上がるようですが、テーブルを閉じてもメモリはなくなりません。テーブルが開いている間にテーブルがソートされると、さらに多くのメモリを使用するように見えるため、問題はさらに悪化します。ソート中にメモリがどのように使用されるかは理解していますが、おそらくまだ開いている間でも、メモリを閉じた後にメモリを使用するのは間違っているようです。誰でもこれを確認できますか?

更新: UGA が専用サーバー モードで PGA に格納されていることを理解していないため、数値がずれていることがわかりました。これにより、数値は以前よりも低くなりますが、SQL Developer が過剰な PGA を使用しているように見えるという問題がまだ残っています。

4

3 に答える 3

3

おそらく、SQL Developerは開いたカーソルを閉じません。したがって、100 万行をソートするクエリを実行し、SQL Developer がそこから最初の 20 行のみをフェッチする場合、下にスクロールしてさらにフェッチする場合は、カーソルを開いたままにしておく必要があります。

そのため、カーソルが開いていて EOF (フェッチの終了) に達していない限り、カーソルのソート領域に関連付けられた PGA メモリの一部を割り当てたままにしておく必要があります (保持ソート領域と呼ばれます)。

セッションを選択して実行します。

select sql_id,operation_type,actual_mem_used,max_mem_used,tempseg_size
from v$sql_workarea_active
where sid = &SID_OF_INTEREST

これは、一部のカーソルがまだメモリで開いたままになっているかどうかを示す必要があります...

于 2010-09-09T11:58:16.037 に答える
0

Oracleは、特にAMMを使用する場合、指定したマシンのすべてのメモリを使用します。メモリの割り当てを解除する理由がない場合は、割り当てを解除しません。ストレージスペースについても同じです。20GBのユーザーデータを削除しても、そのスペースはOSに返されません。表領域を明示的に圧縮しない限り、Oracleはそれを保持します。

簡単なテストであなたの懸念を和らげることができると思います。32ビットで、各SQLDeveloperセッションが100MB以上のRAMを使用している場合、メモリ不足の問題を引き起こすには、数百のセッションを開くだけで済みます...実際に1つある場合。

于 2010-04-08T15:43:54.833 に答える
0

自動メモリー管理を使用していますか? はいの場合、使用されている PGA メモリについて心配する必要はありません。

ドキュメントを参照してください:

自動メモリー管理: http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/memory003.htm#ADMIN11011

MEMORY_TARGET: http://download.oracle.com/docs/cd/B28359_01/server.111/b28320/initparams133.htm

32 ビットの Oracle を使用している理由はありますか? 最新のハードウェアは 64 ビットをサポートしています。

于 2009-09-10T01:21:48.990 に答える