2

我们正在为 ORACLE 11g 中的客户端计划一个新系统。几年来,我大部分时间都在 Sql Server 世界中,并且对最新的 ORACLE 更新并不了解。

我想知道 ORACLE 是否已经添加到这一点上的一个特殊功能是某种用于数据库对象的逻辑“容器”,类似于 Sql Server 的SCHEMA.

当尝试从开发 > 测试 > 实时推送时,尝试使用像 Sql Server 这样的 ORACLE 架构最终会成为代码比较的灾难。

包有点相似,只是您不能将表放入包中(因此它们实际上仅适用于逻辑代码分组)。

我知道的唯一其他选择是必须在对象名称前加上“模式”前缀的古老做法,即RPT_REPORTSRPT_PARAMETERSRPT_LOGSRPT_USERSRPT_RUN_REPORT(),前缀RPT_表示这些都是处理的对象我们的报告引擎说。编写这样的系统感觉就像我们从未离开过 8.3 文件命名时代。

在 ORACLE 中,是否有任何更简洁、更直接的逻辑方式将相关对象组合在一起?

4

1 回答 1

6

Oracle 用于数据库对象的逻辑容器是模式。我不知道你能得到多少“更干净”和“更直接”!你将不得不在这里进行范式转换。不要试图用 SQL Server 术语来思考,而要强制使用看起来像 Oracle 上的 SQL Server 的解决方案。熟悉 Oracle 的工作并从这个角度解决您的问题。如果您知道自己在做什么,那么在 Oracle 中从开发到测试再到生产应该没有问题。

当您使用诸如“古老实践”之类的术语时,您似乎对 Oracle 有一点了解。我建议你通过阅读来与 Oracle 非常丰富和强大的特性集交朋友,因为你显然已经致力于 Oracle 的这个项目。特别是,请阅读 Tom Kyte 的“Effective Oracle By Design”。阅读完之后,请查看同一作者的“专家 Oracle 数据库架构”,以更深入地了解 Oracle 的工作原理。你有责任让你的客户知道如何使用你得到的工具。谁知道?你甚至可能开始喜欢它。将其视为您工具箱中的另一个工具。您没有与 SQL Server 结婚,也没有对使用 Oracle 不忠;-)

编辑:

回答OP的问题:

我不确定为什么这是一个后勤问题。它们可以被认为是独立的数据库,但实际上它们不是。不,您不需要为每个模式使用单独的数据文件。单个数据文件通常用于所有模式。

如果您想要一个“漂亮的、独立的数据库”ala SQL Server,只需创建一个模式来存储您的所有对象。问题结束。您可以创建其他用户/模式,只是不要让他们能够创建对象。

有一些工具可以比较对象和数据,如 PL/SQL Developer 比较。通常在 Oracle 中,您想要比较模式,而不是整个数据库。我不确定为什么你要拥有多个模式,每个模式都有自己的对象。是什么意思?将您的对象(表、触发器、代码、视图等)保存在一个模式中。

于 2011-11-07T17:13:18.747 回答