我使用以下方法在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使用?
感谢您的帮助。 干杯
答案 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)
使用同义词的解决方案还可以。另一个选择是更改当前架构
grant alter session to xxx
ALTER SESSION SET CURRENT_SCHEMA = yyy
现在每个对象的名称都将在yyy模式下解析