Какая роль базы данных Oracle позволит пользователю выбирать из таблицы в другой схеме без указания идентификатора схемы? т. Е. В качестве пользователя A- Выбор гранта на A.table для пользователя B; B может тогда «выбрать * из таблицы» без указания «A». Одна из наших баз данных позволяет это, другая возвращает ошибку «таблица или представление не существует».Роль базы данных Oracle - выбор из таблицы через схемы без идентификатора схемы
ответ
Вы можете создать синоним для этого. Создайте синоним под названием «CoffeeTable» на объекте «A.CoffeeTable». Вы можете создать публичный синоним, чтобы все его видели так, или просто синоним под пользователем B.
Возможно, только current_schema отличается. Попробуйте:
alter session set current_schema=A
Бретт прав. Для этого используются синонимы. На самом деле есть случаи, когда вы не знаете, каким будет имя схемы в процессе производства. Возможно, вы используете A для некоторого имени схемы, а A уже используется в экземпляре Oracle.
Если нет синонима, есть ли вид в схеме B, который выбирает из таблицы в схеме A, используя то же имя, что и таблица? Это, по-видимому, является таблицей, привязанной к локальным сетям.
Просто дважды проверить, что схема используется не частный синоним для таблицы (или представление, как говорит Ли) вы могли бы следующие
SELECT * FROM all_objects WHERE object_name = 'mytablename'
и посмотреть на владельца и object_type Информация.
@erno - возможно, причина, по которой TOAD не показывала вам публичный синоним, заключается в том, что она фильтрует информацию, указанную в списке, - я не имею жабу передо мной, но я думаю, если вы щелкните правой кнопкой мыши на вкладке вы получите параметры фильтрации (например, «показывать только объекты, принадлежащие схеме», «показывать общедоступные объекты», «показывать системные объекты» и т. д.)