2011-02-03 5 views
0

oracleデータベース・サーバー・スワップの使用率が100%であり、その期間中に使用可能な空きメモリーがあることに驚いた場合があります。私の知る限り、システムが空きRAMを使い果たすと、スワップメモリ​​の使用が始まります(私が間違っていると私を修正してください)。この異常な活動を引き起こした原因は不明です。他の誰かがこのような行動を経験していましたか?空きRAMがある場合にスワップ・メモリーを利用するOracle DB on solaris

Regは、

+0

"私の知る限り、システムが空きRAMを使い果たすと、スワップメモリ​​の使用が開始されます(私が間違っていると私を修正してください)。" - >私はあなたが間違っていて、あなたの問題の根本的な根本原因に集中しない答えを受け入れることに多少失望しています。 – jlliagre

答えて

1

solaris 10以降を使用している場合、システムパラメータは/ etc/systemにはもうありません。代わりにをゾーン、タスクまたはユーザーレベルで "projects"を通じて動的に管理リソースに設定します。

たとえば、これらのゾーンのプロジェクト設定ファイルの1つです。

system:0:::: 
user.root:1:::: 
noproject:2:::: 
default:3:::: 
group.staff:10:::: 
user.oracle:100:Oracle:::process.max-sem-nsems=(privileged,256,deny);project.ma-shm-ids=(privileged,256,deny);project.max-shm-memory=(privileged,42949672960,dny) 

ここでの設定は、ユーザー名oracleのユーザーが特定のリソース設定の恩恵を受けることを意味します。

このような行をプロジェクトファイルに追加するには、projaddコマンドを使用します。それにprojmodコマンドを変更してするには、Oracleで現在使用可能なすべてのリソースを一覧表示したい場合でしょう神託

  • 型へ

    1. suコマンドを:

      はprctl -iプロジェクトuser.oracle

    これは、その 'プロジェクト'が利用できるすべてのリソースを一覧表示します。

  • +0

    この情報をお寄せいただきありがとうございます。 – Ara

    1

    あなたは、あなたのメトリックを取得する方法の詳細を提供する必要がありますが、スワップとRAMの使用率の間には直接の関係はありません。あなたは確かにまだ空いているRAMとスワップ空間から出ることができます。

    すべての(仮想)メモリ予約が収まるのに十分なスワップが必要です。メモリ予約(すなわち、malloc)はRAMを使用しません。 RAMは、仮想メモリアクセス時にのみ必要です。

    0

    Solaris上で動作するOracle DBには「バグ」があります。 "スワップ"と "ラム"が1つの仮想メモリプールに結合されているオペレーティングシステムでは、スワップを「予約しています」。 スワップの予約は、ディスクベースのスワップ領域を無駄に使い果たしてしまい、まったくやってはいけません。 ramとswap間の移行はすべて、Solaris OS自体によって処理されます。 Sun/OracleにJavaとまったく同じ問題を理解させるまでには、5年近くかかりました。

    最新のJava 7および8は、もはやメモリプールに「ダブルディップ」しなくなりました。

    私が見つけたのは、OSが「スワップ」制限に遭遇する場合、それに応じてメモリのサイズを変更し、スワップを完全に削除することです。

    ゼロスワップが利用可能な場合、すべてのメモリのやりとりは物理的なラムであり、ダブルディップの問題は表示されず、すべての実行に十分なRAMがある限り、スワップの疲労に関するエラーは表示されません。

    関連する問題