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中的表空间不是访问控制结构。事实上,它不是一个逻辑结构,只是一个物理结构。因此,只要您对模式或表授予了权限,就可以访问它,无论它位于哪个表空间中。