如果您删除用户的所有表空间权限,他们仍然可以创建表,但无法填充它们。
例如,如果你运行这个 PL/SQL 块来撤销一个用户的所有表空间配额:
begin
for users in
(
select 'alter user '||username||' quota 0 on '||tablespace_name v_sql
from dba_ts_quotas
where username = 'TEST_USER'
order by 1
) loop
execute immediate users.v_sql;
end loop;
end;
/
现在用户可以创建表,但如果他们尝试添加行会出错:
SQL> create table test1(a number);
Table created.
SQL> insert into test1 values(1);
insert into test1 values(1)
*
ERROR at line 1:
ORA-01536: space quota exceeded for tablespace 'USERS'
对于元数据,用户始终可以在自己的架构中看到元数据。要允许他们查看其他模式中的元数据,请运行如下授权:
grant select_catalog_role to the_user;
然后,该用户可以在ALL_
数据字典视图中查看元数据,或者使用DBMS_METADATA.GET_DDL
.