Выдача прав на таблицу SELECT
В моем приложении есть несколько таблиц в Oracle, где пользователь XYZ является владельцем схемы. Таблицы были созданы с использованием XYZ. И я бы хотел, чтобы у ABCUSER были права CRUD на эти таблицы. Я дал доступ через GRANT ALL ON TABLEABC to ABCUSER
и грант получен.
Но когда этот пользователь (ABCUSER) пытается выполнить запрос к БД (выберите * из TABLEABC), он, похоже, не работает. Я получаю сообщение об ошибке
ORA-00942: table or view does not exist
00942. 00000 - "table or view does not exist"
*Cause:
*Action:
Error at Line: 1 Column: 14
Не могли бы вы сказать, что мне не хватает?
2 ответа
Пользователь ABCUSER имеет права на таблицу, но не владеет ею. Поэтому вам нужно включить схему в запрос:
select * from XYZ.TABLEABC
/
Если вы не хотите жестко задавать имя схемы в своих программах, ваш пользователь может создать синоним:
create synonym TABLEABC for XYZ.TABLEABC
/
Тогда оригинальный запрос будет работать для ABCUSER.
Обратите внимание, что для ABCUSER потребуется привилегия CREATE SYNONYM.
Как говорит APC, вам не хватает синонима.
Вы можете захотеть использовать ЛИЧНЫЙ или ПУБЛИЧНЫЙ синоним, в зависимости от того, кого вы хотите видеть в таблице.
Хорошее описание различных типов и их использования здесь: http://www.orafaq.com/wiki/Synonym