Oracle中的Schema和Database有什么区别?

nit*_*123 6 oracle oracle-11g-r2 oracle-10g

在 Oracle 中,数据文件是存储实际数据的系统文件。数据文件的集合构成表空间,最后,数据库是表空间的集合

如果我对数据文件、表空间和数据库的概念有误,请纠正我。

我想详细了解Schema 和 Database 之间区别。关于这种差异,在线资源很有帮助,但似乎令人困惑。

SQ9*_*MCP 6

您可以将模式视为 Unix 中的用户主目录。模式和 oracle 用户紧密结合在一起。一个用户映射到单个模式。您可以通过类似于在 Unix 中的方式临时更改当前模式ALTER SESSION SET CURRENT_SCHEMA=USER1

其他模式中的对象可以以与 Unix 中非常相同的方式访问:只需在对象名称前加上SCHEMA.eg: USER1.TABLE1,USER2.TABLE2就是一个例子。将当前架构更改为后,USER1您不再需要附加USER1前缀。

数据库是最广泛的容器,它收集模式——用户、表空间(数据文件是表空间的一部分)和一个或多个 (RAC) 实例。

使用 12c 多租户选项,事情变得更加复杂,因为您可以在单个容器数据库 (CDB) 中拥有多个可插拔数据库 (PDB)。但这只是另一个故事。


Vér*_*ace 5

如果所有其他方法都失败了,请阅读文档。在这里尝试初学者(v. 好的图表)。在 Oracle 中,模式是一个数据库。另请参阅此处- 特别是:

RDBMS 的一个特点是物理数据存储独立于逻辑数据结构。在 Oracle 数据库中,数据库模式是逻辑数据结构或模式对象 [即相关表] 的集合。数据库模式归数据库用户所有,并与用户名同名。

另一个区别是物理数据库文件“数据库”和“实例”——构成完整工作系统的运行软件。

从某种意义上说,Oracle“数据库”是无用的——它只是磁盘上的一堆位——它是将它变成一个系统的软件(即,在信息可检索/可修改的意义上的数据库)。

Oracle 数据库是一个正在运行的实例加上数据(+ 控制 + 重做等)文件,这些文件本身可能包含 1 个或多个模式,这些模式本身就是“数据库”——即外行人会理解它们——即 HR、CRM 或 ERP(& ...) 模式/系统。

  • 如果当然,这在 12c 中 [可选地] 略有改变,全局用户、pdbs、cdbs 等 (4认同)
  • 我对 Oracle 的理解是,不同模式(甚至在同一实例上)之间的事务需要 XA 事务(2 阶段提交),并且从根本上不同于正常的模式内(即在同一模式内)事务。这是用于不同机器上的数据库的相同协议,因此就 Oracle 而言,模式是一个不同的数据库 - 即模式是通常理解的单词意义上的数据库(保证相同表之间的 ACID 事务)数据库/模式)。Oracle 以在标准和命名法上玩得不亦乐乎而闻名 (4认同)
  • 我不同意“模式是数据库”的说法。一个实例最多可以托管一个数据库。一个数据库可以有多个模式。 (3认同)
  • 有那个 SYS 模式,它包含一些过程、包和诸如此类的东西。有 XDB 模式,其中包含 XML 包。应用程序可以在同一个数据库中创建它自己的模式,并使用来自 SYS、XDB 的包并在它自己的模式中操作数据。鉴于此 - 不,架构!= 数据库。我自己管理了一个数据库,该数据库由至少 9 个相互交互的模式组成。 (2认同)