问题描述
嗨
我需要从另一个架构 (B) 中的表中进行选择。我通过使用代理帐户连接到架构 (A)。
特权已通过角色授予我,我可以使用sqlplus从架构B中选择表。
模式A中有试图从模式B中选择的包。它无法访问表,编译失败。
数据库高级应用程序开发人员指南: 6编码PL/SQL子程序和软件包状态
要创建无错误 (成功编译子程序或包),需要以下附加权限:
-必须为代码主体中引用的所有对象明确授予子程序或软件包的所有者必要的对象特权。
-所有者无法通过角色获得所需的特权。
我试图通过以下方式编译包
-使用 'authid current_user'
-授予访问模式B的权限直接到包。
我没有成功。
有没有办法做到这一点,除了直接给表权限,这是不可行的,因为代理帐户的使用。
为什么我的尝试失败了?
左侧
我需要从另一个架构 (B) 中的表中进行选择。我通过使用代理帐户连接到架构 (A)。
特权已通过角色授予我,我可以使用sqlplus从架构B中选择表。
模式A中有试图从模式B中选择的包。它无法访问表,编译失败。
数据库高级应用程序开发人员指南: 6编码PL/SQL子程序和软件包状态
要创建无错误 (成功编译子程序或包),需要以下附加权限:
-必须为代码主体中引用的所有对象明确授予子程序或软件包的所有者必要的对象特权。
-所有者无法通过角色获得所需的特权。
我试图通过以下方式编译包
-使用 'authid current_user'
-授予访问模式B的权限直接到包。
我没有成功。
有没有办法做到这一点,除了直接给表权限,这是不可行的,因为代理帐户的使用。
为什么我的尝试失败了?
左侧
专家解答
你引用的医生对我来说很清楚。如果要在schema a中编译引用schema B的包,则需要直接将表权限授予A。角色不起作用。authid definer子句对编译没有影响。
所以要么你需要:
-将B的表的特权直接授予A
-在B中创建软件包并为此授予执行
我不确定代理帐户与此有什么关系。使用此用户时,您仍然可以通过PL/SQL之外的角色访问您拥有的表。并且您可以在B中执行该过程,当它:
所以要么你需要:
-将B的表的特权直接授予A
-在B中创建软件包并为此授予执行
我不确定代理帐户与此有什么关系。使用此用户时,您仍然可以通过PL/SQL之外的角色访问您拥有的表。并且您可以在B中执行该过程,当它:
create role r; grant r to chris; create user u identified by u; alter user chris grant connect through u; conn hr/hr grant select on employees to r; conn u[chris]/u select count(*) from hr.employees; COUNT(*) 107 conn chris/chris select count(*) from hr.employees; COUNT(*) 107 create or replace procedure p is begin for emps in ( select * from hr.employees where employee_id > 200 ) loop dbms_output.put_line('EMP ID: ' || emps.employee_id); end loop; end p; / sho err LINE/COL ERROR -------- ----------------------------------------------------------------- 4/5 PL/SQL: SQL Statement ignored 4/22 PL/SQL: ORA-00942: table or view does not exist 6/5 PL/SQL: Statement ignored 6/40 PLS-00364: loop index variable 'EMPS' use is invalid conn hr/hr grant select on employees to chris; conn chris/chris create or replace procedure p is begin for emps in ( select * from hr.employees where employee_id > 200 ) loop dbms_output.put_line('EMP ID: ' || emps.employee_id); end loop; end p; / Procedure P compiled conn u[chris]/u exec p; EMP ID: 201 EMP ID: 202 EMP ID: 203 EMP ID: 204 EMP ID: 205 EMP ID: 206复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
596次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
567次阅读
2025-04-18 14:18:38
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
485次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
473次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
457次阅读
2025-04-22 00:20:37
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
432次阅读
2025-04-22 00:13:51
Oracle 19c RAC更换IP实战,运维必看!
szrsu
432次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
417次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
362次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
358次阅读
2025-04-15 14:48:05