情况是user1给user2提供了权限:
GRANT CREATE ANY TABLE, SELECT ANY TABLE TO user2;
登录user2后,我正在尝试创建表:
CREATE TABLE user1.test(id NUMBER PRIMARY KEY);
结果为ORA-01031 - insufficient privileges
我可以在自己的架构上创建表,并从其他架构中选择表。我认为CREATE ANY TABLE
解决了这个问题,但它看起来是另一回事。啊,两个用户都有无限的表空间。我还应该保证什么?
答案 0 :(得分:6)
也许您还需要授予CREATE ANY INDEX
?您在添加主键时创建索引。您可以通过省略PK约束来快速测试。
答案 1 :(得分:4)
"创建任何表格"授予非DBA是非常强大的特权。更好的方法是创建一个"创建表"目标模式中接受所需DDL的已清理组件的过程,并将该权限授予所需用户。
合适的界面就像......
create procedure
create_table(
table_name varchar2,
columns varchar2,
etc varchar2)
......这样你就可以......
begin
user1.create_table(
table_name => 'TEST',
columns => 'id NUMBER PRIMARY KEY',
etc => '');
end;
...并让程序构造并为您执行DDL。
答案 2 :(得分:-1)
用户 授予SCHEMA_NAME
的任何索引