Answers:
在Oracle中,用户和模式本质上是同一件事。您可以认为用户是用于连接数据库的帐户,模式是属于该帐户的对象集(表,视图等)。
请参阅有关堆栈溢出的文章:Oracle中的用户和模式之间的区别?有关更多详细信息和其他链接。
使用该create user
语句创建用户。这也会“创建”模式(最初为空)-您无法创建这样的模式,它与用户相关。创建用户后,管理员可以向用户授予特权,这将使其能够创建表,执行select
查询insert
,以及其他所有操作。
数据库是包含您创建的所有用户及其数据(以及使整个系统正常工作的一堆预定义系统用户,表,视图等)的事物。您应该阅读《概念指南》中的Oracle数据库体系结构文档(实际上,整个页面值得一读-在该页面的上半部分有一个有关用户和模式的部分),以介绍数据库的含义以及对数据库的理解。数据库实例是-两个重要概念。
create database
一旦安装了Oracle软件堆栈,就可以使用该语句创建数据库。但是,使用dbca
(数据库创建助手)更容易上手。
根据有时使用术语的方式,a USER
和a SCHEMA
有点相似。但是也有很大的不同。一个USER
可以称得上是SCHEMA
如果“ USER
”拥有任何对象,否则只会仍然是一个“ USER
”。一旦USER
拥有了至少一个对象,然后根据上述所有定义,… USER
现在可以称为SCHEMA
。
为了开始理解差异,我认为我们必须开始说这种命名法是Oracle的一个错误。
我假设,如果您有一个名为TRITON的ERP,您希望将数据库命名为TRITON,或者如果我的公司名为JENNY EXPORT,则可以决定将我的数据库命名为JENNYEXP或类似的名称,不需要任何同名用户。
在Oracle中,您需要在创建表之前创建一个USER,并且将这个TABLES集合称为SCHEMA足够奇怪。
然后,按照本例,您可以创建实际用户并授予适当的权限以使用TRITON这样的数据库,如果通过SQL DEVELOPER连接,则必须命名连接。
我知道我听起来很沮丧,但是对我来说,MS SQL SERVER的命名约定更有意义,我可以补充一点,我使用Oracle的时间早于SQL SERVER。
数据库是数据的集合,实际存储数据。它是一个物理内存组件,连接到装有DBMS软件的计算机以操纵该内存组件中的数据,装有dbms软件的计算机称为服务器或数据库服务器。服务器(计算机)和数据库(内存组件)都不同,但是根据情况,大多数时候将其称为“相同”。
用户和模式这两个词可以互换,这就是为什么大多数人对这些词感到困惑。
用户是连接数据库(服务器)的帐户。我们可以使用CREATE USER IDENTIFIED BY创建用户。
实际上,Oracle数据库包含用于处理数据的逻辑和物理结构。该模式也是逻辑结构,用于处理数据库(内存组件)中的数据。它是由Oracle在创建用户时自动创建的。它包含与该模式关联的用户创建的所有对象。例如,如果我创建了一个具有名称的用户,santhosh
那么oracle创建一个名为的模式santhosh
,Oracle将用户创建的所有对象存储santhosh
在该santhosh
模式中。
我们可以使用该CREATE SCHEMA
语句创建模式,但是Oracle会自动为该模式创建用户。
我们可以使用DROP SCHEMA <name> RESTRICT
语句删除架构,但是不能删除架构包含的对象,因此要删除架构,它必须为空。在这里,限制词会强制您指定不带对象的模式。
如果我们尝试在其架构CASCADE
中删除包含对象的用户,则必须指定单词,因为Oracle不允许您删除包含对象的用户。
DROP USER <name> CASCADE
因此,Oracle删除架构中的对象,然后自动删除用户,从其他架构(如视图和私有同义词)引用这些架构对象的对象将变为无效状态。