模式?到底是什么。为什么我们不使用createschema语句,w.r.t Oracle
我有一个数据库,它有几个表。现在有N个用户可以访问该数据库和这些表 唯一的区别是,每一个都有不同的登录id、密码,但对表的访问权限、权限都是相同的。典型的项目环境 每个用户都有自己的模式,或者他们连接到同一个模式,而他们只是用户模式?到底是什么。为什么我们不使用createschema语句,w.r.t Oracle,oracle,database-schema,Oracle,Database Schema,我有一个数据库,它有几个表。现在有N个用户可以访问该数据库和这些表 唯一的区别是,每一个都有不同的登录id、密码,但对表的访问权限、权限都是相同的。典型的项目环境 每个用户都有自己的模式,或者他们连接到同一个模式,而他们只是用户 当你访问一个表时,说点什么。表\这里有什么是用户?模式 你问,当你访问一个表时,说些什么。表\u这里的名称是User?模式 模式。碰巧它和用户ID是一样的。从奥斯卡的链接: 模式是数据或模式对象的逻辑结构的集合。架构由数据库用户拥有,并且与该用户具有相同的名称。每个用户
当你访问一个表时,说点什么。表\这里有什么是用户?模式 你问,当你访问一个表时,说些什么。表\u这里的名称是User?模式 模式。碰巧它和用户ID是一样的。从奥斯卡的链接: 模式是数据或模式对象的逻辑结构的集合。架构由数据库用户拥有,并且与该用户具有相同的名称。每个用户都拥有一个模式 用户和模式之间存在1对1的关系
但是,通过权限和授权,用户可以被授予访问其他用户模式的权限。我发现的所有有用信息 使用下面的内容了解您的架构和用户名,应该是相同的
select sys_context('USERENV', 'SESSION_USER') from dual;
select sys_context('USERENV', 'CURRENT_SCHEMA') from dual;
您可以知道模式所拥有的对象
select * from user_objects
在我的例子中,它们只是objectstable的同义词,objectstable是一些主要模式的视图,这造成了混乱。我以为我只是一个用户,但该用户拥有的所有对象都称为模式,可以说我不是一个重要的模式
select * from DBA_objects
上面将显示数据库中的所有模式对象。他妈的很多
select * from DBA_CATALOG
列出名称、类型和所有者用户视图不显示数据库中所有表、视图、同义词和序列的所有者
在我的例子中,我能够访问表,因为我有许多同义词。所以你可以说我是一个用户,有一个模式,可以访问一个主用户的模式。像我这样的用户被删除和添加,但不是主用户 在提问之前阅读这里:是的,已经阅读了,但它没有回答我的问题。但在我的情况下,它与我的登录id不同。我可以直接访问表而不使用任何东西,但有时如果它不起作用,我必须附加一些东西。作为前缀,我可以访问。@garg10可能-如果不使用架构前缀,可能您正在使用全局同义词?返回什么?从dual选择sys\u context'USERENV',SESSION\u USER';并从dual;中选择sys_context'USERENV',CURRENT_SCHEMA'?好吧,我想我明白了,我在从一个工作项目的角度寻找答案。每当新用户加入时,他们什么都没有。只允许对每个表、视图等和公共模式进行选择。在我的情况下,如果我有访问权,我可以从表中选择*,否则从某物中选择*。表中的某物是表的所有者。@Yammy,是的,我可以看到视图定义具有公共全局同义词,在定义中,我还可以看到将表上的选择授予tagargme