oracle - ORACLE 中的逻辑分组模式?

标签 oracle schema oracle11g logical-grouping

我们正在为 ORACLE 11g 中的客户规划一个新系统。我已经在 Sql Server 领域工作了好几年了,并没有真正了解最新的 ORACLE 更新。

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

尝试从开发 > 测试 > 实时推送时,尝试使用 Sql Server 等 ORACLE 模式最终会成为代码比较的灾难。

包有点类似,只是你不能将表放入包中(所以它们实际上只适用于逻辑代码分组)。

我知道的唯一其他选项是必须在对象名称前添加“架构”前缀的过时做法,即 RPT_REPORTSRPT_ 参数RPT_日志RPT_用户 RPT_RUN_REPORT(),前缀RPT_表示这些是与我们的报告引擎打交道的所有对象。编写这样的系统感觉就像我们从未离开过 8.3 文件命名时代。

到目前为止,是否有任何更清晰、更直接的方法可以在 ORACLE 中将相关对象逻辑分组在一起?

最佳答案

Oracle 数据库对象的逻辑容器就是模式。不知道你能得到多少“干净”和“直接”!你必须在这里进行范式转变。不要试图用 SQL Server 术语来思考,并强制采用类似于 Oracle 上的 SQL Server 的解决方案。熟悉 Oracle 的业务并从该角度解决您的问题。如果您知道自己在做什么,那么在 Oracle 中从开发推进到测试再到生产应该没有问题。

当您使用“过时的实践”等术语时,您似乎对 Oracle 感到有些不满。我建议您通过阅读一些内容来与 Oracle 非常丰富且强大的功能集交 friend ,因为您显然已经致力于 Oracle 的这个项目。特别值得一读 Tom Kyte 所著的《Effective Oracle By Design》。读完本文后,请查看同一作者的“专家 Oracle 数据库架构”,更深入地了解 Oracle 的工作原理。您有责任让您的客户知道如何使用您收到的工具。谁知道?您甚至可能开始喜欢它。将其视为您工具箱中的另一个工具。您并未与 SQL Server 结婚,并且使用 Oracle 也并非不忠;-)

编辑:

回答OP的问题:

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

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

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

关于oracle - ORACLE 中的逻辑分组模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8039512/

相关文章:

sql - 使用 ROWNUM 时的区别

java - 为什么我的 JDBC 更新不起作用?

python - 不创建索引的 SQL 优化

mysql - 用于选择美国多个州的模式设计,或 "all"

oracle - 检查哪个用户导出了 Oracle .dmp 文件(来自用户)

java - 如何在 Oracle 10g Java VM 中设置并发调用

schema - 如何在EF Core中实现IModelCacheKeyFactory

oracle - Oracle 中的架构、用户和功能 ID

sql - 从 SQL 查询 Oracle 中获取记录范围

sql - 为什么我在尝试执行这个在表中插入记录的简单查询时收到此错误消息?