2

我们的软件解决方案拥有的客户越多,我们方案中的单个 oracle 对象(表、包、函数等)就越多。现在我们通过给它们提供诸如“X_CUSTOMER1_TABLENAME”之类的识别名称来将它们分开,例如(我知道...... :-()

在保持我们的参考干净以及将我们的参考与客户数据库部署/同步时,这不是很实用:一个客户将在部署时收到其他客户的对象。

这个问题有一个通用的解决方案吗?我们正在考虑为每个客户制定一个单独的计划。这样,我们将拥有具有基本功能的标准、未触及的方案和具有个性化内容的客户方案。

更具体一点:我们有大约 100 个基本表格,可以充分利用软件的内容/功能。每个客户可能有 1 -5 个带有“自定义”数据的附加表格,这些表格与单个包、功能等中的标准对象一起使用。大多数时候只有这个客户将拥有这 1-5 个表格(例如公司特定的内容这对任何其他公司都没有意义)。

我将不胜感激任何提示或最佳做法。这是一个老式的关系数据库。

谢谢!

4

1 回答 1

2

我是一名 Oracle DBA,在 Oracle 方面拥有超过 20 年的经验,这让我成为“老派”。我的建议是为每个客户提供自己的架构。使事情更易于管理;- 按模式跟踪活动(用于计费目的) - oracle 为您提供 I/O、CPU 和按模式的空间消耗的统计信息 - 跟踪空间使用情况(如果您将他们的模式放在自己的表空间中) - 您可以轻松地将用户从一个数据库中移动到另一个(为了增长)-当客户离开时,您备份他们的架构并将其删除-您可以更好地管理您的备份,更频繁地备份活动帐户和不那么频繁地备份活动帐户。可能还有其他充分的理由,但这份简短的清单可能就足够了。您的应用程序公用表进入自己的架构,但仅将只读表放在此架构中;任何被客户修改的表,进入他们的架构。您可以创建一个主表 list_of_customers,用于计费和安全。但只有 App Bus Admin 才能访问那个。

于 2012-11-25T21:30:10.210 回答