oracle - 创建同义词 ora-01031 权限不足

标签 oracle schema privileges sql-grant synonym

当用户指向另一个(不同的)模式对象时,我需要帮助了解用户创建 SYNONYM 所需的授权/特权。

当我尝试以下操作时,我得到 ora-01031 权限不足,因此显然我错过了并且未能应用其他需要的权限。我尽可能地进行了搜索,但找不到任何特定于跨模式同义词的内容。

CREATE USER test IDENTIFIED BY pw DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
ALTER USER test IDENTIFIED BY pw;
GRANT CONNECT, RESOURCE TO test;

-- ... create a bunch of stuff in test...

CREATE USER READWRITE IDENTIFIED BY pw DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE    TEMP;
ALTER USER READWRITE IDENTIFIED BY pw;
GRANT CONNECT, RESOURCE TO READWRITE;

GRANT SELECT ON GDACS.FIXALARMS TO PUBLIC;
GRANT UPDATE, INSERT ON GDACS.FIXALARMS TO READWRITE; 

CONNECT READWRITE/pw;

CREATE SYNONYM FIXALARMS for test.FIXALARMS;
ORA-01031 insufficient privileges

最佳答案

the CREATE SYNONYM command 的文档包括:

Prerequisites

To create a private synonym in your own schema, you must have the CREATE SYNONYM system privilege.

To create a private synonym in another user's schema, you must have the CREATE ANY SYNONYM system privilege.

To create a PUBLIC synonym, you must have the CREATE PUBLIC SYNONYM system privilege.



您正在尝试在 READWRITE 中创建私有(private)同义词自己的架构,所以你必须这样做:
GRANT CREATE SYNONYM TO READWRITE;

同义词指向的对象在不同的​​模式中,但这在这里不相关。

如果您的新帐户只打算访问 GDACS 模式中的对象,特别是如果您有很多要授予访问权限的对象,那么作为必须为您可以创建的所有内容创建同义词的替代方法 alter the new user's current_schema 在每个 session 中 - 可能 via a logon trigger .

关于oracle - 创建同义词 ora-01031 权限不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24830023/

相关文章:

sql - 如何使用游标比较两个不同表的两列中的值

java - Oracle 在提交和选择之间滞后

sql - 如何优化包含数千个 WHERE 子句的 SQL 查询

ruby-on-rails - 如何在 Rails 中创建用户可自定义的数据库(如 Zoho creator)?

sql - 如何在 oracle 11g 中授予对触发器和同义词的权限

oracle - 在 Oracle 中将 XML 转换为 UDT

xml - 元素在 XML 中属于哪个命名空间?

XML 架构 (XSD) : How to express "At most one element from group A and at most one element from group b"?

mysql - 如何确保数据库表中只有一行?

c++ - 取消引用传递给 COM 函数的变量时出错