Oracle中的用户和模式有什么区别?


当前回答

我认为问题在于Oracle使用的术语模式与它的一般含义略有不同。

Oracle的模式(Nebakanezer的回答中解释过):基本上是一个用户帐户拥有的所有表和其他对象的集合,所以大致相当于一个用户帐户 一般模式:构成给定系统/应用程序数据库的所有表、scproc等的集合(如“开发人员应该与dba讨论我们新应用程序的模式”)。

概念2中的图式。是相似的,但不一样的模式在意义1。例如,对于一个使用多个数据库帐户的应用程序,意义2中的模式可能由几个Oracle模式组成:-)。

另外,图式在其他语境中也可以指其他一些不相关的东西(比如在数学中)。

Oracle应该使用“userarea”或“accountobjects”这样的术语,而不是重载“schema”……

其他回答

这很简单。

If USER has OBJECTS
then call it SCHEMA
else
     call it USER
end if;

用户可以访问不同用户拥有的模式对象。

摘自《问汤姆》

您应该将模式视为用户帐户和其中所有对象的集合 作为所有意图和目的的模式。

SCOTT是一个包含EMP、DEPT和奖金表的模式,以及各种授权 其他的东西。

SYS是一个包含大量表、视图、授权等的模式。

SYSTEM是一个模式.....

从技术上讲——模式是数据库使用的元数据(数据字典)的集合, 通常使用DDL生成。模式定义数据库的属性,例如 表、列和属性。数据库模式是数据库中数据的描述 数据库。

基于我对甲骨文的一点了解…USER和SCHEMA有些相似。但也有一个主要的区别。如果“USER”拥有任何对象,则可以将其称为SCHEMA,否则…它将只保留为“USER”。一旦USER拥有至少一个对象,那么根据上面的所有定义....USER现在可以称为SCHEMA。

——USER和SCHEMA

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

——User“User”是连接数据库(Server)的帐号。我们可以使用create user user_name IDENTIFIED by password来创建用户。

——模式

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

我们可以通过create schema语句创建模式,但是Oracle会自动为该模式创建一个用户。

我们可以使用Drop schema schama_name RESTRICT语句删除模式,但它不能删除模式中包含的对象,因此要删除模式,它必须为空。这里的限制词强制指定没有对象的模式。

如果我们试图删除一个用户包含对象,我们必须指定CASCADE字,因为oracle不允许你删除用户包含对象。 DROP用户user_name级联 因此oracle会删除模式中的对象,然后自动删除用户,从其他模式(如视图和私有同义词)中引用该模式的对象将进入无效状态。

我希望你现在已经明白了它们之间的区别,如果你对这个话题有任何疑问,请尽管问。

谢谢你!

从WikiAnswers:

A schema is collection of database objects, including logical structures such as tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links. A user owns a schema. A user and a schema have the same name. The CREATE USER command creates a user. It also automatically creates a schema for that user. The CREATE SCHEMA command does not create a "schema" as it implies, it just allows you to create multiple tables and views and perform multiple grants in your own schema in a single transaction. For all intents and purposes you can consider a user to be a schema and a schema to be a user.

此外,用户可以访问除自己的模式之外的模式中的对象,如果他们有权限这样做的话。