hoy*_*ter 13 oracle multiple-instances database-restore
我们的应用程序在网络上运行,主要是一个查询工具,做一些交易.我们托管Oracle数据库.该应用程序始终为每个客户提供不同的Oracle实例.一个客户是支付我们提供我们的服务,该公司的员工,每个客户通常10,000-25,000名员工的公司.我们打算有几百个客户.我们每隔几年就会发布一次主要版本,并且迁移到新版本具有挑战性:我们可能会在客户站点组建一个团队几周,解释新功能并设置驱动数据以适应该客户.
我们正在考虑使用多客户端,将所有客户放在一个大型的"Windows Server 2008服务器"上的单个共享Oracle 11g实例中 - 以降低成本.我想知道这是否可取.
为每个客户提供单独的实例有一些优点.请告诉我这些是假的.我粗略猜测降低重要性:
我们的客户MyCorp和YourCo可以在对架构进行重大更改时单独迁移.(对于多客户端,我们将在一夜之间迁移300多个客户!?!)
MyCorp的数据可以轻松备份和(!!!)恢复,而不会影响其他客户.
MyCorp的数据与其竞争对手YourCo的数据安全地分开,而不依赖开发人员来获得正确的代码和/或DBA获得正确的配置.
多个实例风险较低,因为一个客户发生灾难(某人意外地将每个人的工资加倍,并且在发薪日后发现错误)不会影响其他客户.一场灾难影响了我们所有的客户(呐喊,新的DBA,突然每个参与者都拥有相同的SSN!?!)可能会让我们的公司陷入困境.
在一台服务器上安装一个实例会出现单点故障,如果飓风摧毁了建筑物,我们的整个客户群就会停止运营.多个服务器上的多个实例允许地理分散:没有灾难会影响我们客户的太大比例,而其他地区的未受影响的服务器可以承担故障服务器的负载.
性能更好,因为数据库较小(约50个表中的10,000对2,000,000行).
如果MyCorp的办公室(大部分)只在一个地区,那么MyCorp的实例可以在地理位置上共存,因此网络延迟不会影响性能.出于同样的原因,我们可以为全球客户提供更好的服务.
在MyCorp想要在内部使用他们的数据库,然后我们可以轻松导出他们的实例,以获得MyCorp他们的数据.
负载平衡更容易,因为实例可以放在不同的服务器上(这适用于Web场).
当需要DEV或QA实例时,克隆实际实例并对数据进行匿名化会更容易,因为数据要少得多.
因为它们足够小,开发人员可以让自己的实例在本地运行,这样他们就可以在机场等待的同时处理代码,而无需解决VPN麻烦.
Q1:单独实例的其他优点是什么?
我们正在考虑更改数据库架构并将所有客户合并到一个Oracle实例中,在一台大型服务器上运行.
以下是多客户端实例方法的优点,最重要的是首先(我的WAG).如果这些是假的,请狙击:
减少DBA的工作量,因为他们只需要维护一个实例而不是数百个实例.较少的DBA工作转化为更便宜,这是我们改变的主要动机.
只需一个实例,DBA就可以更好地优化性能.他们将有时间添加适当的索引并查看我们的SQL.
开发人员更容易调试和增强应用程序,因为只有一个模式和一个应用程序(如果有数百个实例,则可能有数十个模式版本,每个模式版本都有不同版本的应用程序).这也降低了成本.另一种方法是必须启动每个调试会话:(1)该客户运行的是什么版本;(2)让我们努力重新创建相应的开发环境,代码和数据库.(我们需要一个虚拟机,其中包含每个补丁和发布的代码AND数据库实例!)
许可Oracle更便宜,因为它的价格是每台服务器的价格而不管(或者某些东西 - 我对这个主题一无所知).
数据库成为Web会话数据的可行持久存储,因为只有一个实例.
使用一个多客户端实例可以更轻松地进行某些数据库操作,例如在他们朦胧地找到他们(或他们的配偶)可能工作的客户时找到参与者:所有名称都在一个表中.跨客户报告非常简单.
Q2:在一个实例中拥有多个客户端有哪些其他优势?
问题3:您认为哪种方法更好(为什么)?每个客户的实例,还是一个实例中的所有客户?
我担心有一个多客户端实例使迁移几乎不可能,这是一个交易杀手......
...除非有一个妥协的解决方案,比如有两个多客户端实例,旧的和新的.在这种情况下,我们将设计用于查找参与者,报告等的跨实例解决方案,以便客户可以从一个多客户端实例转到下一个实例,而不会出现任何问题.
除非您使用 Oracle XE(有限的免费版本),否则即使您购买的是单核、单 CPU 设备,每台服务器只有一个数据库很快就会变得非常昂贵。每台服务器拥有多个数据库效率很低,因为每个数据库都会产生 CPU 和 RAM 使用开销。调优更加困难,因为争用更难诊断。
因此,除了更易于管理之外,单个大型服务器应该比许多离散的小型服务器更便宜(没有保证,不退款!)。确保您购买最大、最快的芯片以及尽可能多的可用插槽内存。这些可以为您提供更好的性能,而不影响您的许可成本。
如果您负担得起,请考虑分区选项。这将解决您对备份和恢复的担忧,因为每个分区都可以有自己的表空间。因此(按 client_id 进行分区)可以备份或恢复单个客户端的数据而不影响其他客户端。我们甚至可以导出和导入单个分区。我对 David 的观察结果感到惊讶,即分区修剪不适用于 VPD。但我还没有尝试过这个组合,所以我相信他的话。
整合可能会失去的一件事是在不同版本的应用程序上支持不同客户端的能力。然而,这并不一定是坏事。正如您所观察到的,如果您放弃应用程序的个性化版本,维护数百个客户将会容易得多。如果您确实需要提供一些定制功能 - 即使您只想使用单个客户端对某些功能进行 Beta 测试 - 那么请查看11gR2 中基于版本的重新定义:这是一个非常漂亮的功能。此外,它还适用于所有 Oracle 许可证,而不仅仅是企业版。
| 归档时间: | 
 | 
| 查看次数: | 2405 次 | 
| 最近记录: |