数据库与用户与架构之间的区别

Rav*_*avi 98 schema oracle users

我真的对术语数据库、用户和模式感到困惑。谁能解释一下它们之间的区别(如果是的话)?

如果它们相同,那么它们之间有什么相似之处?我们如何使用它们?我们如何创建它们?

Mat*_*Mat 97

在 Oracle 中,用户和模式本质上是一回事。您可以认为用户是用于连接数据库的帐户,架构是属于该帐户的一组对象(表、视图等)。

请参阅 Stack Overflow 上的这篇文章:Oracle 中的用户和模式之间的区别?了解更多详情和额外链接。

您使用create user语句创建用户。这也“创建”了架构(最初为空) - 您不能创建架构,它与用户相关联。创建用户后,管理员可以向用户授予权限,这将使其能够创建表、执行select查询等insert

数据库是包含您创建的所有用户及其数据(以及使整个事情正常工作的一堆预定义系统用户、表、视图等)的东西。您应该查看概念指南中的Oracle 数据库架构文档(实际上,整个页面都值得一读 - 该页面上方有一个关于用户和模式的部分)以了解什么是数据库,以及什么是数据库实例是——两个重要的概念。

create database一旦您安装了 Oracle 软件堆栈,您就可以使用该语句创建一个数据库。但是使用dbca(建库助手)比较容易上手。

  • “用户和模式本质上是一回事”——如果这是真的,那是我听过的最愚蠢的命名。 (5认同)

小智 7

数据库。

数据库是数据的集合,实际存储数据的地方。它是一个物理内存组件,连接到安装了DBMS软件的计算机来操作该内存组件中的数据,安装了dbms软件的计算机称为服务器或数据库服务器。服务器(计算机)和数据库(内存组件)是不同的,但大多数时候根据情况称为“相同”。

用户和模式

用户和模式这两个词是可以互换的,这就是为什么大多数人对这些词感到困惑的原因。

用户

用户是连接数据库(服务器)的帐户。我们可以使用 CREATE USER IDENTIFIED BY 创建用户。

模式

实际上Oracle数据库包含处理数据的逻辑和物理结构。模式也是处理数据库(内存组件)中数据的逻辑结构。它是在用户创建时由 Oracle 自动创建的。它包含与该模式关联的用户创建的所有对象。例如,如果我创建了一个名为 的用户,santhosh那么 Oracle 创建了一个名为 的模式santhosh,Oracle 将用户创建的所有对象存储santhosh在该santhosh模式中。

我们可以使用该CREATE SCHEMA语句创建模式,但 Oracle 会自动为该模式创建用户。

我们可以使用该DROP SCHEMA <name> RESTRICT语句删除模式,但它不能删除模式包含的对象,因此要删除模式,它必须为空。这里的限制词强制您指定没有对象的模式。

如果我们尝试删除一个在其架构中包含对象的用户,我们必须指定CASCADEword,因为 Oracle 不允许删除包含对象的用户。

DROP USER <name> CASCADE

因此,Oracle 删除模式中的对象,然后自动删除用户,从其他模式(如视图和私有同义词)引用这些模式对象的对象将进入无效状态。


小智 6

为了开始理解差异,我认为我们必须开始说这个命名法是 Oracle 的一个错误。

我假设如果您有一个名为 TRITON 的 ERP,您希望将您的数据库命名为 TRITON,或者如果我的公司名为 JENNY EXPORT,我可能会决定将我的数据库命名为 JENNYEXP 或类似名称,不需要任何具有相同名称的用户.

在 Oracle 中,您需要在创建表之前创建一个 USER,而且很奇怪,这个 TABLES 集合称为 SCHEMA。

然后,您可以创建实际用户并授予适当的权限以按照本示例使用 TRITON 等数据库,顺便说一下,如果您通过 SQL DEVELOPER 进行连接,则必须命名一个连接。

我知道我听起来有点沮丧,但对我来说 MS SQL SERVER 命名约定更有意义,我可以补充一点,我在 SQL SERVER 之前使用 Oracle。


小智 5

根据术语有时使用的方式,aUSER和 aSCHEMA有点相似。但也有一个重大区别。如果“ ”拥有任何对象,则AUSER可以称为a ,否则它仅保留为“ ”。一旦拥有至少一个对象,那么根据上面的所有定义......现在可以称为。SCHEMAUSERUSERUSERUSERSCHEMA