架构?究竟是什么。为什么我们没有创建Schema语句,w.r.t Oracle

时间:2014-09-25 14:42:13

标签: oracle database-schema

我有一个包含多个表的数据库。现在有N个用户可以访问该数据库和这些表。

唯一的区别是每个人都有不同的登录ID,密码但是对表的访问权限,权限都是相同的。典型的项目环境。

每个用户都有自己的架构,或者他们连接到相同的架构,他们只是用户。

当你访问一个表时,在这里说something.tables_name是什么用户?架构?

2 个答案:

答案 0 :(得分:1)

你问,"当你访问一个表时,在这里说something.tables_name是什么用户?模式?

模式。事实恰恰相反,它与userId相同。来自奥斯卡的链接: "模式是数据或模式对象的逻辑结构的集合。模式由数据库用户拥有,并且与该用户具有相同的名称。每个用户拥有一个架构。"

用户和架构之间存在一对一的关系。

但是,通过权限和授权,可以授予用户访问OTHER用户模式的权限。

答案 1 :(得分:0)

我发现的所有有用信息。

使用以下内容了解您的架构和用户名,应该相同。

select sys_context('USERENV', 'SESSION_USER') from dual; 
select sys_context('USERENV', 'CURRENT_SCHEMA') from dual;

您可以了解架构所拥有的对象

select * from user_objects

在我的例子中,它们只是一些主要模式的对象(表,视图)的同义词,这引起了混淆。我以为我只是一个用户,但该用户拥有的所有对象都称为Schema,你可以说我不是一个重要的架构。

select * from DBA_objects

上面将显示数据库中的所有模式对象。地狱很多。

select * from DBA_CATALOG

列出数据库中所有表,视图,同义词和序列的名称,类型和所有者(USER视图不显示所有者)。

在我的情况下,我能够访问表,因为我有很多同义词。所以你可以说我是一个用户并拥有一个架构并且可以访问主用户的架构。像我这样的用户被删除并添加但不是主用户。