问题描述
我有一个名为HCR_SCHEMA的架构,其中有一个名为TEST_EMP的表,并且我有一个用户说USER_A并授予他在TEST_EMP表上的选择。
我作为USER_A连接,试图从TEST_EMP执行SELECT *。显然,它向我抛出错误,说表或视图不存在。
我知道我没有提到架构名称,也没有在该表上创建同义词。
要求是我想在不创建同义词的情况下引用该表。不使用架构名称,也不更改会话以在登录后使用当前架构,如alter session set current_schema = HCR_SCHEMA;
有没有一种可能的方法来实现这一点,而无需执行上述三个选项。
谢谢
我作为USER_A连接,试图从TEST_EMP执行SELECT *。显然,它向我抛出错误,说表或视图不存在。
我知道我没有提到架构名称,也没有在该表上创建同义词。
要求是我想在不创建同义词的情况下引用该表。不使用架构名称,也不更改会话以在登录后使用当前架构,如alter session set current_schema = HCR_SCHEMA;
有没有一种可能的方法来实现这一点,而无需执行上述三个选项。
谢谢
专家解答
这是什么,面试问题?
无论如何,还有另一种技术: 代理用户。
这些是低特权帐户。具有作为更高能力的用户运行的能力。但是与代理的凭据连接。
例如:
当你这样做,你运行为-如果你是data_owner。所以你做的任何事情都有他们的权限。
或者,您可以在USER_A中创建一个视图,该视图在其查询中具有schema限定的表访问权限。
无论如何,还有另一种技术: 代理用户。
这些是低特权帐户。具有作为更高能力的用户运行的能力。但是与代理的凭据连接。
例如:
grant create table, create session, unlimited tablespace to data_owner identified by data_owner; grant create session to proxy_u identified by proxy_u; alter user data_owner grant connect through proxy_u; conn data_owner/data_owner create table t ( c1 int ); insert into t values ( 1 ); commit; conn proxy_u[data_owner]/proxy_u select user from dual; USER DATA_OWNER select * from t; C1 1
当你这样做,你运行为-如果你是data_owner。所以你做的任何事情都有他们的权限。
或者,您可以在USER_A中创建一个视图,该视图在其查询中具有schema限定的表访问权限。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。