暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 没有同义词和架构名称的访问表

ASKTOM 2019-02-13
192

问题描述

我有一个名为HCR_SCHEMA的架构,其中有一个名为TEST_EMP的表,并且我有一个用户说USER_A并授予他在TEST_EMP表上的选择。

我作为USER_A连接,试图从TEST_EMP执行SELECT *。显然,它向我抛出错误,说表或视图不存在。

我知道我没有提到架构名称,也没有在该表上创建同义词。

要求是我想在不创建同义词的情况下引用该表。不使用架构名称,也不更改会话以在登录后使用当前架构,如alter session set current_schema = HCR_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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论