Oracle 过程是否继承其创建者的特权?

发布于 2024-10-03 18:57:36 字数 204 浏览 7 评论 0原文

我有 3 个 Oracle 用户 A、B、C,想要使用 B(作为中间)将表从 C 导入到 A。连接到 B 时,我可以运行“create table A.T1 as select * from T1@C” 。但是,当我将 sql 语句放入 B 创建/拥有的过程中时,我不断收到“ORA-01031:权限不足”。作为 sysdba,我已将所有权利 (dba) 授予 B。那么我在这里缺少什么?谢谢。

I have 3 Oracle users A, B, C and want to use B (as intermediate) to import a table from C to A. When connected to B, I can run "create table A.T1 as select * from T1@C". But when I put the sql statement into a procedure that B creates/owns, I keep getting "ORA-01031: insufficient privileges". As sysdba, I have granted all rights (dba) to B. So what am I missing here? Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小霸王臭丫头 2024-10-10 18:57:36

在定义者权限存储过程(默认)中,唯一可用的权限是直接授予用户的权限,而不是通过角色(如 DBA)授予的权限。所以 Pablo 是正确的,B 需要拥有 CREATE ANY TABLE 权限作为直接授予。

In an definer's rights stored procedure (the default), the only privileges that are available are those that are granted directly to the user, not those that have been granted through a role (like DBA). So Pablo is correct that B would need to have the CREATE ANY TABLE privilege as a direct grant.

表情可笑 2024-10-10 18:57:36

您是否已向用户 B 授予以下权限?

sql> grant create any table to b;

Have you granted the following to user B?

sql> grant create any table to b;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文