Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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
Sql 给定某个用户,“所有列”注释不会返回所有表对象_Sql_Oracle_Oracle11g_Data Dictionary - Fatal编程技术网

Sql 给定某个用户,“所有列”注释不会返回所有表对象

Sql 给定某个用户,“所有列”注释不会返回所有表对象,sql,oracle,oracle11g,data-dictionary,Sql,Oracle,Oracle11g,Data Dictionary,作为架构所有者登录时,我可以运行查询 select * from ALL_COL_COMMENTS WHERE TABLE_NAME LIKE 'BLEH_%'; 我可以看到我期望的所有表和列 但是,如果我以不同的用户身份登录,相同的查询将返回其中一些表,但不是全部 为什么不管用户是谁,所有的注释都返回相同的结果集 所有这些表的所有者都是相同的模式所有者。其他用户可以在所有列注释中看到这些表的子集,但就其而言,其他表并不存在 这是安全性的一个基本原则,Oracle始终如一地实现了这一原则——如

作为架构所有者登录时,我可以运行查询

select * from ALL_COL_COMMENTS WHERE TABLE_NAME LIKE 'BLEH_%';
我可以看到我期望的所有表和列

但是,如果我以不同的用户身份登录,相同的查询将返回其中一些表,但不是全部

为什么不管用户是谁,所有的注释都返回相同的结果集


所有这些表的所有者都是相同的模式所有者。其他用户可以在所有列注释中看到这些表的子集,但就其而言,其他表并不存在

这是安全性的一个基本原则,Oracle始终如一地实现了这一原则——如果您对某个对象没有任何权限,就您而言,它是不存在的。如果你愿意的话,根据“需要知道”的原则,泄露任何关于它的信息都是违反安全的行为


数据字典也一样——如果您对该表没有任何权限,您甚至不能查询有关它的结构信息,例如,数据字典显示的信息。就您而言,没有这样的表。

这是一个基本的安全原则,Oracle始终如一地实现了这一原则-如果您对某个对象没有任何权限,就您而言,它不存在。如果你愿意的话,根据“需要知道”的原则,泄露任何关于它的信息都是违反安全的行为


数据字典也一样——如果您对该表没有任何权限,您甚至不能查询有关它的结构信息,例如,数据字典显示的信息。就您而言,没有这样的表。

不管用户是谁,它都不应该返回相同的结果集。报告说:

“所有”选项卡“注释”显示当前用户可访问的表和视图上的注释

其他ALL_*表上显示了类似的注释,它们显示了USER_*版本、ALL_*版本和DBA_*版本之间的差异

更清楚地说明:

许多数据字典表有三个相应的视图:

“全部”视图显示当前用户可访问的所有信息 用户,包括来自当前用户架构的信息以及 来自其他架构中的对象的信息(如果当前用户 通过授予特权或角色的方式访问这些对象

DBA视图显示整个数据库中的所有相关信息。 DBA_uu视图仅适用于管理员。可以访问它们 仅由具有“选择任何词典”权限的用户使用。这项特权 在系统初始安装时分配给DBA角色

一个用户视图显示了该数据库架构中的所有信息 当前用户。查询这些视图不需要特殊权限


如果您的“其他”用户看不到这些视图中的表,则它对这些表没有任何权限。他们只能看到那些他们有特权的。这是有意的,因为@Mureinik引用了。

无论用户是谁,它都不应该返回相同的结果集。报告说:

“所有”选项卡“注释”显示当前用户可访问的表和视图上的注释

其他ALL_*表上显示了类似的注释,它们显示了USER_*版本、ALL_*版本和DBA_*版本之间的差异

更清楚地说明:

许多数据字典表有三个相应的视图:

“全部”视图显示当前用户可访问的所有信息 用户,包括来自当前用户架构的信息以及 来自其他架构中的对象的信息(如果当前用户 通过授予特权或角色的方式访问这些对象

DBA视图显示整个数据库中的所有相关信息。 DBA_uu视图仅适用于管理员。可以访问它们 仅由具有“选择任何词典”权限的用户使用。这项特权 在系统初始安装时分配给DBA角色

一个用户视图显示了该数据库架构中的所有信息 当前用户。查询这些视图不需要特殊权限


如果您的“其他”用户看不到这些视图中的表,则它对这些表没有任何权限。他们只能看到那些他们有特权的。出于@Mureinik所指的原因,这是有意的。

ALL_XXX视图仅返回当前用户有权访问的对象,即用户至少拥有选择权限的对象。其他用户是否对其无法查看注释的表拥有任何权限?如果没有,则无法在所有表或所有选项卡列中看到它们……所有XXX视图仅返回当前用户有权访问的对象,即用户至少有选择权限的对象。其他用户是否对无法查看注释的表具有任何权限?如果不是的话,它将无法在艾尔看到他们 l\u表或所有\u选项卡\u列。。。