整合 Oracle 数据库是否有意义?

Mar*_*son 6 oracle

与 Oracle 相比,我对 SQL Server 和 Sybase 的经验更丰富,并且非常了解这些产品。我被要求寻找减少运行 Oracle 的服务器资产的方法。我知道 Oracle 中的一个实例映射到托管许多表空间的数据库。我对基础知识有很好的掌握,但是如果我想将运行 Oracle 数据库的 SERVER1、..、SERVER4 合并到一台服务器中,最好的物理方法是什么?我也在考虑使用 DBaaS(数据库即服务)模型进行虚拟化,但很好奇它是否可以/应该在物理上完成。

是否可以让四个单独的实例指向一台机器上的四个单独的数据库?或者我是否必须在统一服务器上将四个数据库合并为一个数据库并管理模式以确保没有名称冲突?如果我这样做,我会有一个或四个实例吗?

我已经阅读了文档,但我对这个领域仍然不是 100% 确定。

ik_*_*elf 6

将多个数据库合并为一个真正的数据库相当容易。在 Oracle 中,数据库是文件的集合。用户通过连接到一个实例来连接到数据库。一个数据库可以由多个实例提供服务,在这种情况下,您正在运行 RAC。

因此,为了将数据库简单地合并为一个数据库,您不需要 RAC,但如果您想/需要这样做,您可以。

如果您要整合到一个数据库中,则需要考虑以下几点:

  1. 命名空间
  2. 服务级别协议 - 不要通过组合冲突的 slas 来使维护变得不可能。
  3. 性能隔离 - 使用资源管理器来处理这个
  4. 应用程序隔离 - 确保所有应用程序都使用自己的 tns_alias 进行连接
  5. 服务 - 如果可能,在数据库中为每个应用程序提供一个自己的服务名称。

当您有命名冲突时,就会出现问题,无法组合。您可能需要一些停机时间进行维护/升级。如果您不能同时从所有应用程序中获得停机时间,那么您就有问题了。使用资源管理器可以为特定的服务提供一定的性能保证。服务是一种使用起来很聪明的东西,与其他资源相比,了解资源的使用方式是最容易的。

最简单的方法是在单个服务器上运行多个实例,每个实例都为其自己的数据库提供服务。这是最简单但不是最聪明的做法。最聪明的是在单个服务器上有一个实例。这是因为每个实例都认为自己是服务器的主人。您不能像在单个实例中那样轻松地隔离它们的资源使用情况。如果您想在多实例服务器中提供一些性能保证,则设置将变得更加复杂,因为在许多情况下您需要启动多个项目和用户来运行您的数据库。

一个数据库可以轻松支持几百个应用程序,比使用几百个数据库便宜很多。通过充分利用 Oracle 特性,这每年可快速节省大量资金。


Phi*_*lᵀᴹ 5

您有两个选择:

  1. 在同一台机器上运行多个 Oracle 实例
  2. 将所有 Oracle 实例整合到一个实例中,将数据放置在单独的模式中

由于您熟悉 SQL Server/Sybase,我将就数据库和用户而言解释它们与 Oracle 之间的区别。

  • SQL Server 数据库相当于 Oracle 模式。Oracle 模式由单个用户拥有
  • SQL Server 数据服务器相当于 Oracle 实例

在一台机器上运行 4 个实例是微不足道的,所以我不会进一步解释。

如果单独的数据库没有冲突的模式名称,则合并到单个数据库也很容易。如果他们这样做,只要应用程序/接口/包没有硬编码的模式名称,这可能不是问题 - 很容易从数据库中的一个模式导出数据并将其导入另一个数据库上的不同模式.