将100个Oracle实例合并到一个实例中的智慧

我们的应用程序在网络上运行,主要是查询工具,做一些交易.我们托管Oracle数据库.该应用程序对于每个客户一直有不同的Oracle实例.客户是一家公司,为公司的员工提供服务,通常为每位客户10,000-25,000名员工.我们打算有几百个客户.我们每隔几年就做一个重要的发布版本,并且迁移到新的版本是具有挑战性的:我们可能在客户站点有几个星期的团队,解释新的功能并设置适合该客户的驾驶数据.

为了降低成本,我们正在考虑进行多客户端,将所有客户都放在一个大型的“Windows Server 2008”服务器上的单个共享的Oracle 11g实例中.我想知道这是否可取.

为每个客户提供单独的实例有一些优势.告诉我,如果这些是假的,请.在我粗略的猜测下降的重要性:

>当对架构进行更改时,我们的客户MyCorp和YourCo可以单独迁移. (与多客户端,我们将在一夜之间迁移300个客户!!!)
> MyCorp的数据可以轻松备份,(!!!)恢复,而不影响其他客户.
> MyCorp的数据与竞争对手YourCo的数据安全地分离,而不依赖于开发人员来获取正确的代码和/或DBA获得配置.
>多个实例的风险较低,因为一个客户的灾难(有人意外地将每个人的工资增加了一倍,薪水发现后发现错误)并不影响其他客户.影响所有客户的灾难(哎呀,新的DBA,突然每个参与者都有同样的SSN!!)可能会使我们的公司陷入困境.
>在一台服务器上放置一个实例会出现单点故障,如果飓风袭击建筑物,我们的整个客户群将不再工作.多个服务器上的多个实例允许地域分散:没有灾难会影响我们客户的太大比例,而其他地区的不受影响的服务器可能会承担故障服务器的负载.
>性能更好,因为数据库较小(约50个表中为10,000对200万行).
>如果MyCorp的办公室(主要是在一个地区),那么MyCorp的实例可以在地理上位于那里,所以网络滞后不会影响性能.同样的原因,我们可以为全球客户提供更好的服务.
>在MyCorp中,我们希望在数据库内部使用数据库,因此我们可以轻松导出实例,从而获取MyCorp的数据.
>负载平衡更容易,因为实例可以放在不同的服务器上(这是一个Web场).
>当需要DEV或QA实例时,更容易克隆真实实例并对数据进行匿名化,因为数据少得多.
>因为它们足够小,所以开发人员可以在本地运行自己的实例,所以他们可以在机场等待时和机上工作,而不用担心VPN的麻烦.

Q1: What are other advantages of separate instances?

我们正在考虑更改数据库模式,并将所有客户合并到一个运行在一个高度服务器上的Oracle实例中.

这是多客户端实例方法的优点,最重要的是(我的WAG).如果这些是假的,请狙击:

>减少DBA的工作,因为它们只需要维护一个实例而不是数百个.较少的DBA工作转化为便宜,这是我们改变的主要动机.
>只需一个实例,DBA可以更好地优化性能.他们将有时间添加适当的索引并查看我们的sql.
>开发人员更容易调试&增强应用程序,因为只有一个模式和一个应用程序(如果有数百个实例可能有数十个模式版本,每个版本的模式使用不同版本的应用程序).这也降低了成本.另一种方法是必须先启动每个调试会话(1)这个客户运行什么版本,(2)让我们努力重新创建相应的开发环境,代码数据库. (我们需要一个虚拟机,其中包含每个补丁和版本的代码AND数据库实例!)
>授权甲骨文是便宜的,因为它是每个服务器的价格,不管是什么(或者什么 – 我不知道任何关于这个问题).
>数据库成为Web会话数据的可行永久存储,因为只有一个实例.
>一些数据库操作比较容易一些多客户端实例,比如找到一个参与者,当他们(或他们的配偶)可能是)的客户朦胧时,所有的名字都在一个表中.客户报告很简单.

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使用的开销.调整更困难,因为争论难以诊断.

所以,为了更容易管理,单个大型服务器应该比许多离散的小型服务器便宜得多(不用担保,没有退款!).确保你购买最大,最快的芯片,你可以和尽可能多的RAM,因为你有空闲插槽.这些是在不影响许可费用的情况下提供更好的性能的东西.

考虑分区选项,如果你负担得起的话.这将解决您对备份和恢复的担忧,因为每个分区都可以拥有自己的表空间.所以(通过client_id分配),可以在不影响其他客户端的情况下备份或恢复单个客户端的数据.我们甚至可以导出和导入各个分区.我对David的观察感到惊讶,即分区修剪与VPD无关.但是我没有尝试过这个组合,所以我会接受他的话.

您可能从整合中失去的一件事是能够在不同版本的应用程序上支持不同的客户端.然而,这不一定是坏事.如您所见,如果您放弃个性化版本的应用程序,维护数百个客户将会更容易.如果您确实需要提供一些定制功能 – 即使您只是要测试一些功能与个人客户端 – 然后看看Edition-Based Redefinition in 11gR2:这是一个非常漂亮的功能.它也可用于所有Oracle许可证,而不仅仅是Enterprise.

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...