在oracle 11g中,我有一个所有者架构,其中包含应用程序所需的相关表 .
对于我的外部应用程序,我正在尝试创建另一个用户,该用户应该对某些表具有上述模式的select访问权限 . 让我们调用所有者架构A和新架构B.
create user B identified by blah;
grant connect to B;
登录到原始模式后,我运行以下内容(对于演示,我在所有表上给出选择)
begin
FOR x IN (select * from user_tables)
LOOP
EXECUTE IMMEDIATE 'GRANT SELECT ON ' || x.table_name || ' TO some_role';
END LOOP;
end;
grant some_role to B;
如果我以用户B身份登录并执行类似的查询
select count(*) from A.some_table ;
有用 . 但是,如果不创建公共同义词,我可以以这样的方式授予以下作用,即以用户B登录时的工作方式吗?
select count(*) from some_table;
谢谢
3 回答
您可以为要使用的用户B创建私有同义词 . 作为用户B,运行以下块:
如果您只是从userB拥有的表中读取数据,则可以设置以下命令并在表上运行SELECT,就像它们位于userA模式中一样:
(记录为UserA)
然后下面两个命令将是等效的(具有相同的结果):