Oracle 为什么用户可以从其他表空间访问对象?
我已将一个用户更改为只能访问两个表空间Oracle 为什么用户可以从其他表空间访问对象?,oracle,oracle11g,Oracle,Oracle11g,我已将一个用户更改为只能访问两个表空间 alter user TEMP_USER quota unlimited on TEMP_USER_DAT; alter user TEMP_USER quota unlimited on TEMP_USER_IDX; 因此,当我查找用户表空间时,它只返回预期的上述两个表空间: select default_tablespace from user_users; 但是,当我以该用户身份登录并检查对象的所有者时: SELECT owner, object
alter user TEMP_USER quota unlimited on TEMP_USER_DAT;
alter user TEMP_USER quota unlimited on TEMP_USER_IDX;
因此,当我查找用户表空间时,它只返回预期的上述两个表空间:
select default_tablespace from user_users;
但是,当我以该用户身份登录并检查对象的所有者时:
SELECT owner, object_name, object_type FROM all_objects
where owner = 'THE_OTHER_TEMP_USER';
它返回所有属于_OTHER _TEMP _用户的表,所有这些表都来自一个非常不同的表空间
然而,当我以_OTHER_TEMP_用户身份登录并再次运行上述命令时,但条件不同
SELECT owner, object_name, object_type FROM all_objects
where owner = 'TEMP_USER';
…它什么也不返回
这种行为的解释是什么?表空间与特权没有任何关系。用户可以访问的对象集与这些对象所在的表空间无关。表空间只是对存储进行逻辑分区的一种方式
所有对象
显示当前用户有权访问的所有对象。这是用户拥有的对象集,以及通过GRANT
语句授予用户访问权限的任何对象。根据您所说的,TEMP\u用户
已被授予对另一个TEMP\u用户
(直接或通过角色)拥有的许多对象的访问权限,而另一个TEMP\u用户
未被授予对任何TEMP\u用户
对象的访问权限
当然,您可以发出
REVOKE
语句来撤销TEMP\u USER
访问其他TEMP\u用户所拥有的各种对象的能力。oracle中的表空间不是访问控制结构。事实上,它不是一个逻辑结构,只是一个物理结构。因此,只要您对模式或表授予了权限,就可以访问它,无论它位于哪个表空间中。