В oracle 11g у меня есть схема владельца, которая содержит соответствующие таблицы, необходимые для приложения.Выберите доступ ко всем таблицам
Для моего внешнего приложения я пытаюсь создать другого пользователя, который должен иметь доступ к определенным таблицам в приведенной выше схеме. Назовём владельца схемы А и новой схемы 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;
Благодаря
, когда я запускаю выше выберите в качестве пользователя B, я получаю пустые строки .. даже выбрать * из user_tab_privs для пользователя B дает пустые строки – cableload
жаль, что я делал это через роли ... поэтому выберите * от role_tab_privs работает !! – cableload
@cableload спасибо, по какой-то причине не заметил роли. Я соответствующим образом изменил свой ответ. – Mureinik