OSとしてRed Hat Enterprise Linux Serverリリース5.11(Tikanga)を使用しており、rdbmsは11gR2ソフトウェアです。 memory_target = 3 GB、物理RAM = 7 GBのデータベースを作成しました。巨大な操作を行うと、DBサービスが遅くなります。パフォーマンスを向上させるために、SHMALLおよびSHMAXパラメーターを変更する必要があります。どれだけの価値を与えるべきか教えていただけませんか?
64ビットサーバーの場合、使用できる最適値はRAMの半分です
32ビットサーバーの場合は3ギガバイト
ページングを回避するには、SHMALLをfree RAMよりも小さくする必要があります。
私たちが持っているものから SHMAXの設定に関するRedHatのドキュメント :
このパラメーターは、Linuxプロセスが仮想アドレススペースに割り当てることができる単一の共有メモリセグメントの最大サイズをバイト単位で定義します。たとえば、32ビットプラットフォーム(x86)でRed Hat Enterprise Linux 3 smpカーネルを使用する場合、ユーザープロセスの仮想アドレス空間は3 GBです。 32ビットプラットフォーム(x86)でRed Hat Enterprise Linux 3 hugememカーネルを使用する場合、ユーザープロセスの仮想アドレス空間はほぼ4GBです。したがって、32ビットアーキテクチャのsmpカーネルでSHMMAXを4GB-1バイト(4294967295バイト)に設定しても、共有メモリセグメントの最大サイズは4 GB -1に増加しません。 32ビットアーキテクチャでhugememカーネルを使用してSHMMAXを4 GB-1バイトに設定しても、プロセスがそのような大きな共有メモリセグメントを取得することはできません。実際、hugememカーネルを使用するOracle 10g R1 SGAの共有メモリセグメントの上限は、共有ライブラリなどの他のものにも仮想アドレス空間が必要であるため、約3.42 GB(約36億7,000億バイト)です。つまり、32ビットシステムに2 GBの共有メモリセグメントが3つある場合、一度に複数の共有メモリセグメントにプロセスをアタッチすることはできません。また、32ビットシステムでSHMMAXを4294967296バイト(4 * 1024 * 1024 * 1024 = 4GB)に設定すると、SHMMAXは4GB値をラップするため、基本的に0バイトに設定されます。これは、32ビットシステムでSHMMAXが4294967295を超えてはならないことを意味します。 x86-64プラットフォームでは、仮想アドレス空間が32ビットに制限されていないため、SHMMAXは4GBよりはるかに大きくなる可能性があります。 SGAは共有メモリで構成されているため、SHMMAXはSGAのサイズを制限する可能性があります。 SHMMAXはSGAサイズよりわずかに大きくする必要があります。 SHMMAXが小さすぎると、次のようなエラーメッセージが表示されます。
ORA-27123:共有メモリー・セグメントにアタッチできません
私たちが持っているものから SHMALLの設定に関するRedHatのドキュメント :
このパラメータは、システム全体で使用できる共有メモリページの総量を設定します。したがって、SHMALLは常に少なくともceil(shmmax/PAGE_SIZE)である必要があります。
Red Hat Enterprise Linux 2.1、3、4、および5のSHMALLのデフォルトサイズは2097152です。これは、x86およびx86-64プラットフォームでの9iおよび10gに対するOracleの推奨最小設定でもあります。ほとんどの場合、システムで使用可能な共有メモリの総量は2097152 * 4096バイト(shmall * PAGE_SIZE)、つまり8 GBであるため、この設定で十分です。より大きなメモリページの構成をサポートする第14章のラージメモリの最適化、ビッグページ、およびヒュージページを使用しない限り、PAGE_SIZEは通常4096バイトです。
LinuxシステムのデフォルトのPAGE_SIZEがわからない場合は、次のコマンドを実行できます。
$ getconf PAGE_SIZE