Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
模式?到底是什么。为什么我们不使用createschema语句,w.r.t Oracle_Oracle_Database Schema - Fatal编程技术网

模式?到底是什么。为什么我们不使用createschema语句,w.r.t Oracle

模式?到底是什么。为什么我们不使用createschema语句,w.r.t Oracle,oracle,database-schema,Oracle,Database Schema,我有一个数据库,它有几个表。现在有N个用户可以访问该数据库和这些表 唯一的区别是,每一个都有不同的登录id、密码,但对表的访问权限、权限都是相同的。典型的项目环境 每个用户都有自己的模式,或者他们连接到同一个模式,而他们只是用户 当你访问一个表时,说点什么。表\这里有什么是用户?模式 你问,当你访问一个表时,说些什么。表\u这里的名称是User?模式 模式。碰巧它和用户ID是一样的。从奥斯卡的链接: 模式是数据或模式对象的逻辑结构的集合。架构由数据库用户拥有,并且与该用户具有相同的名称。每个用户

我有一个数据库,它有几个表。现在有N个用户可以访问该数据库和这些表

唯一的区别是,每一个都有不同的登录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