【问题标题】:Oracle, Users as InstancesOracle,用户作为实例
【发布时间】:2014-03-09 13:43:27
【问题描述】:

一位客户一直在向我介绍他们不同的 Oracle“数据库”。 在数据迁移混淆之后,我突然想到这些不同的数据库都是同一个数据库。他们刚刚用多个用户和严格的权限分解了同一个实例。

所以,user1 有一个 CUSTOMER 表,user1.CUSTOMER 和 user2 有一个 CUSTOMER 表 user2.CUSTOMER。
这些表中的数据是完全独立的,由应用程序的不同实例管理。

我以前从未见过这样做过;这是一种标准的、可接受的做法吗?

这种设置是否有特定的性能和维护方案? 或者,这是狂野的西部?

谢谢

【问题讨论】:

  • 除非您拥有(并且需要)多个主机,否则这是正常的。 It's better to have one instance with many schemas than many instances,无论如何都在同一个盒子上。您正在充分利用可用资源。只要应用程序没有混淆,并且您有足够的整体容量,它应该没问题,并且更易于管理、监控和维护。

标签: oracle database-design database-connection database-schema


【解决方案1】:

这是 Oracle 环境中的常规标准做法。 Oracle 环境是具有一个或几个架构的大型应用程序,或者是随着时间的推移而增长的大量小型应用程序。

当然,需要做出许多架构设计决策。例如,当在一个数据库中放置多个应用程序时,这些应用程序可能会相互影响。随着时间的推移,Oracle 一直在增强技术堆栈以限制应用程序之间可能产生的影响。例如,您现在可以为每个用户分配不同的资源。但例如,一个疯狂运行的应用程序可能会刷新整个缓存,从而影响其他应用程序。从 Oracle 12c 开始,Oracle Corp. 通过创建更类似于带有单独“数据库”的 Microsoft SQL Server 方法的结构进一步改进了隔离,但 12c 甚至进一步扩展了这一点。例如因为一个Oracle容器数据库仍然可以包含多个数据库和它自己的数据字典(企业版只允许超过1个容器数据库)。

一般来说,我不建议将许多严肃/大型应用程序放在一个 Oracle 数据库中。例如,当您升级其中一个时,您需要确保所有其他应用程序都与可能需要的新的 Oracle 次要版本兼容。因此,当您将多个应用程序合并到一个数据库中时,请确保您可以控制它们都同时获得同一 Oracle 版本的认证。例如因为它是内部包。

【讨论】:

  • @catBus 很高兴听到我对您有所帮助。祝环境好运!
猜你喜欢
  • 2020-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 2017-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多