我们的应用程序运行在网络上,主要是一个查询工具,做一些交易。我们托管 Oracle 数据库。该应用程序始终为每个客户提供不同的 Oracle 实例。客户是向我们付款以向公司员工提供服务的公司,通常每位客户有 10,000-25,000 名员工。我们打算有几百个客户。我们每隔几年发布一个主要版本,迁移到新版本具有挑战性:我们可能在客户现场有一个团队几周,解释新功能并设置驱动数据以适合该客户。
我们正在考虑采用多客户端,将我们的所有客户置于一个大型 Windows Server 2008 服务器上的单个共享 Oracle 11g 实例中——以降低成本。我想知道这是否可取。
为每个客户拥有单独的实例有一些优势。 请告诉我这些是不是假的。在我对降低重要性的粗略猜测中:
Q1: What are other advantages of separate instances?
我们正在考虑更改数据库架构并将所有客户合并到一个 Oracle 实例中,在一台大型服务器上运行。
以下是多客户端实例方法的优点,首先是最重要的(我的 WAG)。 如果这些是假的,请狙击:
Q2: What are other advantages of having multiple clients in one instance?
Q3: Which approach do you think is better (why)? Instance per customer, or all customers in one instance?
我担心拥有一个多客户端实例会使迁移几乎不可能,这是一个交易杀手......
...除非有一个折衷的解决方案,比如拥有两个多客户端实例,旧的和新的。在这种情况下,我们会设计跨实例解决方案来寻找参与者、报告等,这样客户就可以从一个多客户端实例转到下一个,而不会出现任何中断。
最佳答案
除非您使用 Oracle XE(有限免费版),每台服务器一个数据库会很快变得非常昂贵,即使您购买的是单核、单 CPU 盒。每个服务器拥有多个数据库是低效的,因为每个数据库都会产生 CPU 和 RAM 使用的开销。调整更困难,因为争用更难诊断。
因此,除了更易于管理之外,单个大型服务器应该比许多离散的小型服务器便宜(没有保证,没有退款!)。确保购买最大、最快的芯片以及尽可能多的可用插槽。这些东西可以在不影响许可成本的情况下为您提供更好的性能。
如果您负担得起,请考虑分区选项。这将解决您对备份和恢复的担忧,因为每个分区都可以有自己的表空间。因此(根据 client_id 进行分区)可以在不影响其他客户端的情况下备份或恢复单个客户端的数据。我们甚至可以导出和导入单个分区。我对 David 的观察感到惊讶,即分区修剪不适用于 VPD。但我还没有尝试过这种组合,所以我会相信他的话。
您可能会因整合而失去的一件事是在不同版本的应用程序上支持不同客户端的能力。然而,这不一定是坏事。正如您所观察到的,如果您放弃应用程序的个性化版本,维护数百个客户会容易得多。如果您确实需要提供一些定制功能——即使您只是想对单个客户端的某些功能进行 Beta 测试——那么请查看 Edition-Based Redefinition in 11gR2 : 这是一个非常漂亮的功能。此外,它适用于所有 Oracle 许可证,而不仅仅是 Enterprise。
关于oracle - 百个Oracle实例合并为一个实例的智慧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2405658/