同じサーバー上で複数のインスタンスを実行することは可能であり、場合によっては必要です。oratabは、複数のインスタンスの管理を処理するように特別に設計されています。複数の独立したアプリケーションがある場合は、アプリケーションごとにインスタンスを用意することをお勧めします。
十分なメモリがあることが重要です。OracleはSGAを共有メモリに構築します。十分なメモリがない場合、SGAまたはプロセスはスワップインおよびスワップアウトを開始します。これはスラッシングと呼ばれ、パフォーマンスが大幅に低下します。
小さいSGAで実行するようにインスタンスを調整できる場合があります。Oracleは、SGAサイズの調整に役立つツールを提供しています。インスタンスのSGAが過度に大きい場合、すべてのインスタンスにペナルティが科されます。
重要なメモリのもう1つの用途は、バッファスペースです。これは二次キャッシュとして機能し、重要な読み取りI / Oを排除できます。
実行sar
(UnixベースのO / Sを想定)すると、問題の場所を適切に診断できます。おそらく問題は、スワッピングまたはディスクI / Oの飽和です。RAMを追加することで、これらの問題のいずれかが解決される可能性があります。
ディスクI / Oの飽和は、一部のテーブルスペースを他のディスクに移動することでも処理できます。通常、I / Oができるだけ多くのディスクに分散されるようにOracleを構成します。
編集:これらは、個別のインスタンスを必要とする場合があるいくつかのケースです。
- 同じサーバーで異なるバージョンのOracleを実行する場合は、常に必要です。アプリケーションは常に認定されているわけではなく、最新バージョンで動作するわけではありません。
- ある時点に自動的にロールバックできるインスタンスが必要になる場合があります。(私はお勧めしませんが、これを自動テスト環境に使用しました。)
- アプリケーションにハードコードされたスキーマ参照がある場合、名前空間の衝突に対処するために異なるインスタンスが必要になる場合があります。
- セキュリティ要件は、個別のインスタンスを使用する方が扱いやすい場合があります。この場合、別のサーバーを使用するのが適切な場合があります。
- 同じサーバー上で同じデータベースの異なるバージョン(開発、テスト、ユーザー承認、トレーニング、および本稼働)を実行することは、別々のインスタンスを使用する方が安全です。これらの環境のすべてを同じサーバーで実行するのではなく、同じサーバーで2つ以上の環境を実行することがよくあります。