我在 SQL Server 和 Sybase 方面比 Oracle 更有经验,并且对这些产品了解得很好。我被要求寻找减少运行 Oracle 的服务器资产的方法。我了解 Oracle 中的实例映射到托管许多表空间的数据库。我对基础知识有相当好的掌握,但是如果我想将运行 Oracle 数据库的 SERVER1、..、SERVER4 合并到一个服务器中,那么物理上最好的方法是什么?我也在考虑使用 DBaaS(数据库即服务)模型进行虚拟化,但很好奇它是否可以/应该在物理上完成。
是否可以让四个独立的实例指向一台机器上的四个独立的数据库?或者我是否必须在统一服务器上将四个数据库合并为一个数据库并管理模式以确保没有名称冲突?如果我这样做,我会有一个或四个实例?
我已经阅读了文档,但我仍然不能 100% 确定这个领域。
将多个数据库合并为一个真实数据库相当容易。在 Oracle 中,数据库是文件的集合。用户通过连接到实例来连接到数据库。一个数据库可以由多个实例提供服务,在这种情况下,您正在运行 RAC。
因此,为了简单地将数据库整合到一个数据库中,您不需要 RAC,但如果您想要/需要这样做,您可以这样做。
如果您要合并到一个数据库中,则需要考虑以下几点:
当您有命名冲突时,就会出现问题,无法组合。您可能需要一些停机时间进行维护/升级。如果您不能同时从所有应用程序中获得停机时间,那么您就有问题了。使用资源管理器可以为特定的服务提供一定的性能保证。使用服务是一件很聪明的事情,与一个和另一个相比,了解资源的使用方式是最简单的事情。
最简单的方法是在单个服务器上运行多个实例,每个实例都服务于自己的数据库。这是最简单但不是最聪明的做法。最聪明的是在单个服务器上拥有一个实例。这是因为每个实例都认为自己是服务器的主人。您不能像在单个实例中那样轻松隔离它们的资源使用情况。如果您想在多实例服务器中提供一些性能保证,设置将变得复杂,因为在许多情况下您需要启动多个项目和用户来运行您的数据库。
单个数据库可以轻松支持几百个应用程序,比使用几百个数据库便宜很多。通过充分利用 Oracle 特性,这可以迅速每年节省大量资金。
你有两个选择:
由于您熟悉 SQL Server/Sybase,因此我将解释它们与 Oracle 在数据库和用户方面的区别。
在一台机器上运行 4 个实例是微不足道的,所以我不会进一步解释。
如果单独的数据库没有冲突的模式名称,那么整合到单个数据库也很容易。如果他们这样做,只要应用程序/接口/包没有硬编码的模式名称,这可能不是问题 - 很容易从数据库中的一个模式导出数据并将其导入另一个数据库上的不同模式.