Answers:
Isaac最好在一个服务器上运行一个实例,并在该单个数据库中将不同的应用程序实现为架构和服务。如果服务器有足够的内存,那么如果应用程序的行为都像是良好的Oracle公民,就不会有问题。一旦存在不使用绑定变量的应用程序,主机上的痛苦就会越来越大。对于每隔几秒钟不断创建新连接而不是重新使用现有连接的应用程序,情况也是如此。诸如自动提交之类的事情也无助于改善情况。您的应用程序的正常行为是什么?它会进行大更新吗?什么时候提交?每小时产生多少重做?您的应用程序是否使用绑定变量?在许多情况下,联机重做日志文件的位置至关重要。如果该应用程序确实产生了很多重做(或与执行此操作的其他应用程序竞争),则日志编写器将放慢速度,并导致性能大幅下降,因为会话正在等待日志文件写入完成。为您的客户提供磁盘布局,其中重做位于专用的raid-10磁盘上,并查看这有多大帮助。还要找出内存分配情况。可能需要公平地重新分配可用内存。
我希望这有帮助
在同一服务器上运行多个实例是可能的,在某些情况下是必要的。oratab专为处理管理多个实例而设计。如果您有多个独立的应用程序,则最好为每个应用程序都有一个实例。
拥有足够的内存至关重要。Oracle在共享内存中构建SGA。如果没有足够的内存,则SGA或进程将开始换入和换出。这被称为颠簸,并导致明显的性能损失。
可能需要调整实例以使其以较小的SGA运行。Oracle提供了有助于调整SGA大小的工具。如果任何实例的SGA过大,将对所有实例进行处罚。
内存的另一个重要用途是缓冲区空间。这充当辅助高速缓存,并且可以消除大量的读取I / O。
运行sar
(假设基于Unix的操作系统)可以对问题出在哪里进行很好的诊断。可能的问题是交换或磁盘I / O饱和。添加RAM可能会解决上述两个问题。
磁盘I / O饱和也可以通过将一些表空间移到其他磁盘来解决。我通常配置Oracle,以便将I / O分布在尽可能多的磁盘上。
编辑:这些是少数情况,可能需要单独的实例。
最关键的资源是RAM。
每个正在运行的Oracle实例在刚启动且未处于负载状态时都会为其分配一些RAM。
我们正在运行10g和10g,以及11g和8个实例,但这是开发服务器。重新启动操作系统后,一些Oracle服务不会自动启动,必须手动启动:Oradim -startup -sid xxx。
我们刚刚开始使用自动内存管理,但是情况与SQL Server有所不同,在SQL Server中,您可以添加磁盘空间所允许的最大数量。
对于您的情况,一台计算机上有更多实例,则每个实例的SGA会变小,可以缓存较少的预编译sql,并且该计算机必须执行更多sql编译,这会降低性能。
添加RAM可能会帮助您解决问题。