Выдача прав на ВЫБОР таблицы Oracle - PullRequest
2 голосов
/ 28 сентября 2011

В моем приложении есть несколько таблиц в 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 ]

6 голосов
/ 28 сентября 2011

Пользователь ABCUSER имеет права на таблицу, но не владеет ею. Поэтому вам необходимо включить схему в запрос:

select * from XYZ.TABLEABC
/

Если вы не хотите жестко задавать имя схемы в ваших программах, ваш пользователь может создать синоним:

create synonym TABLEABC for XYZ.TABLEABC
/

Тогда исходный запрос будет работать для ABCUSER.

Обратите внимание, что для ABCUSER потребуется привилегия CREATE SYNONYM.

1 голос
/ 28 сентября 2011

Как говорит APC, вам не хватает синонима.

Возможно, вы захотите использовать ЛИЧНЫЙ или ПУБЛИЧНЫЙ синоним в зависимости от того, кому вы хотите просматривать таблицу.

Хорошее описание различных типов и их использования здесь: http://www.orafaq.com/wiki/Synonym

...