创建ODBC的Oracle只读用户

时间:2019-02-21 09:52:57

标签: oracle

我使用以下方法在oracle数据库上创建了一个用户

create user xxx identified by test; 
grant create session to xxx;
grant select any table to xxx;
grant select any dictionary to xxx;

我还从Excel建立了一个ODBC连接,该连接对于用户yyy正常工作,但是当我尝试对xxx执行相同操作时,我得到了错误:表或​​视图不存在。

所以我的问题是,如何使表显示给用户xxx /可供用户xxx使用?

感谢您的帮助。 干杯

2 个答案:

答案 0 :(得分:0)

您需要在架构XXX中为架构YYY中的表创建SYNONYM。

grant create synonym to XXX;

以用户YYY运行此SQL。

select 'CREATE SYNONYM ' ||tname|| ' for  '||'YYY.'||TNAME||';'  from tab
where tname not like 'BIN$%'

例如,输出此sql。

CREATE SYNONYM TEST2 for  YYY.TEST2;
CREATE SYNONYM TEST_ARCHIVE for  YYY.TEST_ARCHIVE;
CREATE SYNONYM TEST_ONLINE for  YYY.TEST_ONLINE;

以XXX身份运行此SQL

CREATE SYNONYM TEST2 for  YYY.TEST2;
CREATE SYNONYM TEST_ARCHIVE for  YYY.TEST_ARCHIVE;
CREATE SYNONYM TEST_ONLINE for  YYY.TEST_ONLINE;

答案 1 :(得分:0)

使用同义词的解决方案还可以。另一个选择是更改当前架构

  1. grant alter session to xxx
  2. 登录为xxx
  3. 登录到数据库后。 ALTER SESSION SET CURRENT_SCHEMA = yyy

现在每个对象的名称都将在yyy模式下解析