Oracle 过程是否继承其创建者的特权?
我有 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在定义者权限存储过程(默认)中,唯一可用的权限是直接授予用户的权限,而不是通过角色(如 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.
您是否已向用户
B
授予以下权限?Have you granted the following to user
B
?